Welcome to MSDN Blogs Sign in | Join | Help

Microsoft Dynamics CRM UK Blog

CRM news and views from Simon Hutson
Gartner & Forrester Analyst Reports

Strange Magic....

As part of my pre-sales work, I inevitably assemble a collection of customer-ready presentations and whitepapers that I can use to help support the business case for Microsoft Dynamics CRM. Analyst reports from the likes of Gartner and Forrester can be very useful when positioning our solution for different functional requirements (e.g. sales force automation or customer service) or market segments (e.g. mid-market or enterprise), but they generally come with a price tag if you wish to purhase them for redistribution.

A couple of weeks ago I discovered that Microsoft has secured all copyright and publishing privileges with firms such as Gartner and Forrester, to include their reports on our website here - http://www.microsoft.com/presspass/itanalyst/default.mspx.

At the time of writing there are more than 70 reports available, covering all manor of Microsoft product areas from Mobile to Data Warehousing, but of particular interest to me are the CRM-related reports:

Now you have no excuse not to use these reports when putting together your business case for Microsoft Dynamics CRM.

This posting is provided "AS IS" with no warranties, and confers no rights.

Laughing Boy Chestnuts Pre-School

Closing An Incident (Case) That Has Open Activities

In The Lap Of The Gods…

Every so often I come across a feature in CRM that makes me wonder “why was it designed like that?”. The one that catches me out almost every time I demo is the inability to close or cancel a incident when there are associated open activities. This wouldn’t be so bad except that many of these activities are generated automatically by workflow, so when you cancel these activities manually, workflow processes continue to run and create still more activities.

Solving this problem requires a a plug-in that will first cancel any running workflows (to prevent new activities from being created) and then cancel any open or scheduled activities before closing or cancelling an incident,

On the incident entity, Microsoft Dynamics CRM 4.0 fires a CloseIncident message when a case is resolved and a SetStateDynamicEntity message when a case is cancelled or reactivated. So to start with we need to implement the IPlugin.Execute method and check for the “SetStateDynamicEntity” or “Close” messages.

It is good practice to check straight away that the plug-in is running in the correct context to avoid unnecessary code from executing and minimise performance bottlenecks. Here we are checking that we are running synchronously against the incident entity in the pre-processing stage of a parent pipeline.

Public Sub Execute(ByVal context As IPluginExecutionContext) Implements IPlugin.Execute
 
    ' Exit if any of the following conditions are true:
    '  1. plug-in is not running on the 'incident' entity
    '  2. plug-in is not running synchronously (context.Mode = Synchronous)
    '  3. plug-in is not running in the 'pre-processing' stage of the pipeline (context.Stage = BeforeMainOperationOutsideTransaction)
    '  4. plug-in is not running in a 'parent' pipeline (context.InvocationSource = Parent)
    '  5. plug-in is not running on the 'Close', or 'SetStateDynamicEntity' messages
    If (context.PrimaryEntityName = "incident") Then
        If (context.Mode = MessageProcessingMode.Synchronous) Then
            If (context.Stage = MessageProcessingStage.BeforeMainOperationOutsideTransaction) Then
                If (context.InvocationSource = MessageInvocationSource.Parent) Then
                    If context.MessageName = "SetStateDynamicEntity" Then
                        HandleSetStateDynamicEntity(context)
                    ElseIf context.MessageName = "Close" Then
                        HandleClose(context)
                    End If
                End If
            End If
        End If
    End If
 
End Sub

The “SetStateDynamicEntity” event generates a context with an InputParameters property collection that contains a State property. Before continuing, we should check that this property equals “Cancelled”. We can then check for the EntityMoniker property for the id field which contains the ID of the case.

Private Sub HandleSetStateDynamicEntity(ByVal context As IPluginExecutionContext)
 
    If context.InputParameters.Properties.Contains("State") And context.InputParameters.Properties.Contains("EntityMoniker") Then
        If TypeOf context.InputParameters.Properties("State") Is String And TypeOf context.InputParameters.Properties("EntityMoniker") Is Moniker Then
            If CStr(context.InputParameters.Properties("State")) = "Canceled" Then
                Dim moniker = CType(context.InputParameters.Properties("EntityMoniker"), Moniker)
                If Not moniker Is Nothing Then
                    Dim incidentid = CType(context.InputParameters.Properties("EntityMoniker"), Moniker).Id
                    CancelChildWorkflows(incidentid, context)
                    CancelChildActivities(incidentid, context)
                End If
            End If
        End If
    End If
 
End Sub

Similarly, the “Close” event generates a context with an InputParameters property collection that contains an IncidentResolution property. Before continuing, we should check that this property is a DynamicEntity and then check for the incidentid field which contains the ID of the case.

Private Sub HandleClose(ByVal context As IPluginExecutionContext)
 
    If context.InputParameters.Properties.Contains("IncidentResolution") Then
        If TypeOf context.InputParameters.Properties("IncidentResolution") Is DynamicEntity Then
            Dim incidentresolution = CType(context.InputParameters.Properties("IncidentResolution"), DynamicEntity)
            If incidentresolution.Properties.Contains("incidentid") Then
                If TypeOf incidentresolution.Properties.Item("incidentid") Is Lookup Then
                    Dim incidentid = CType(incidentresolution.Properties.Item("incidentid"), Lookup).Value
                    CancelChildWorkflows(incidentid, context)
                    CancelChildActivities(incidentid, context)
                End If
            End If
        End If
    End If
 
End Sub

Notice I have included quite a bit of error checking to make sure that we don’t hit any errors such as ArgumentNullException.

Now that we have the ID of the case record, we need to loop through all the active child workflows and open child activities, and cancel them. Since the process is almost identical for activities as it is for workflows, I’ll just cover off the process for cancelling workflows.

First up, we need to define a QueryExpression that queries the asyncoperation entity and requests all records where the operationtype = 10 (i.e. workflow), the regardingobjectid equals the case id, and the statecode is either “Suspended” or “Ready”. Unfortunately, if a workflow is being processed by CRM, it will be in a “Locked” state, which means that no other process can access it. It might not therefore be possible to cancel all active workflows if the plug-in executes at the same time a workflow is locked.

Private Function RetrieveChildWorkflows(ByVal parententityid As Guid, ByVal context As IPluginExecutionContext) As List(Of BusinessEntity)
 
    Dim filterStateCode As New FilterExpression
    filterStateCode.FilterOperator = LogicalOperator.Or
    filterStateCode.AddCondition("statecode", ConditionOperator.Equal, "Suspended")
    filterStateCode.AddCondition("statecode", ConditionOperator.Equal, "Ready")
 
    Dim filter As New FilterExpression
    filter.FilterOperator = LogicalOperator.And
    filter.AddCondition("regardingobjectid", ConditionOperator.Equal, parententityid)
    filter.AddCondition("operationtype", ConditionOperator.Equal, 10)
    filter.AddFilter(filterStateCode)
 
    Dim qe As New QueryExpression
    qe.ColumnSet = New ColumnSet(New String() {"asyncoperationid", "statecode", "statuscode"})
    qe.EntityName = "asyncoperation"
    qe.Criteria = filter
 
    Dim request As New RetrieveMultipleRequest
    request.ReturnDynamicEntities = True
    request.Query = qe
 
    service = context.CreateCrmService(False)
    Dim response = CType(service.Execute(request), RetrieveMultipleResponse)
 
    Return response.BusinessEntityCollection.BusinessEntities
 
End Function

Finally we need to loop through each asyncoperation in turn, and cancel by updating statecode = “Completed” and statuscode = 32 (i.e. Cancelled).

Private Sub CancelChildWorkflows(ByVal parententityid As Guid, ByVal context As IPluginExecutionContext)
 
    For Each asyncoperation In RetrieveChildWorkflows(parententityid, context)
        If TypeOf asyncoperation Is DynamicEntity Then
            If Not CType(asyncoperation, DynamicEntity) Is Nothing Then
                CancelWorkflow(CType(asyncoperation, DynamicEntity), context)
            End If
        End If
    Next
 
End Sub
 
Private Sub CancelWorkflow(ByVal entity As DynamicEntity, ByVal context As IPluginExecutionContext)
 
    If entity.Name = "asyncoperation" Then
        If entity.Properties.Contains("statecode") And entity.Properties.Contains("statuscode") Then
            If TypeOf entity.Properties("statecode") Is String And TypeOf entity.Properties("statuscode") Is Status Then
 
                entity.Properties("statecode") = "Completed"
                entity.Properties("statuscode") = New Status(32)
 
                Dim target As New TargetUpdateDynamic
                target.Entity = entity
                Dim request As New UpdateRequest
                request.Target = target
 
                service = context.CreateCrmService(False)
                Dim response = CType(service.Execute(request), UpdateResponse)
 
            End If
        End If
    End If
 
End Sub

Great, so now we’re done cancelling active child workflows we can do something very similar with open child activities. I’ve uploaded the Visual Studio 2008 project here for you to get the full source code.

Also, to make life easier for those of you who just want to install the plug-in “AS-IS”, I’ve used the SDK plug-in installer sample code, and created two batch files, install.cmd and uninstall.cmd, which you can use. All you need to do is edit these files and modify the orgname, url, domain, username and password parameters to match your own crm environment.

So is that it? Well, not quite! This plug-in works as expected when you select Cancel Case from the Actions menu, but when you select Resolve Case things don’t go according to plan.

image

The main problem is the that the Resolve Case form checks for any open activities during the OnLoad event, and if it finds any, a dialog box is opened with a warning message. When you click OK to acknowledge the warning, the Resolve Case form is helpfully closed as well – The upshot is that no “Close” event is ever fired.

image

!!!…WARNING: UNSUPPORTED CUSTOMISATION ALERT…!!!

So you probably guessed from the warning that you can fix this issue, but only by modifying one of the files on each CRM server in your environment. I would strongly urge you only try this in NON-PRODUCTION environments. For more details about the bad things that occur when you step outside the supportability rules, please read the following SDK article: Unsupported Customizations.

OK, so now you understand the ramifications of going unsupported, here’s how to fix the problem.

  1. In the CRMWeb\CS\cases\ folder on your CRM server, locate the file dlg_closecase.aspx
  2. Using Visual Studio, Notepad, or any text editor of your choice, edit this file.
  3. Find the statement if (typeof(LOCID_CONFIRM_ACTIVITIES)!="undefined") statement
  4. Directly below this statement, comment out the lines alert(LOCID_CONFIRM_ACTIVITIES); and window.close();
  5. Save the file.

Your modifications should look something like this.

if (typeof(LOCID_CONFIRM_ACTIVITIES)!="undefined")
{
//alert(LOCID_CONFIRM_ACTIVITIES);
//window.close();
}

Now, when when you select Resolve Case from the Actions menu, you get to fill out the Case Resolution form without the warning. When you click OK to save your information, the “Close” event is fired, and the plug-in works as expected.

This posting is provided "AS IS" with no warranties, and confers no rights.

Laughing Boy Chestnuts Pre-School

Removing/Hiding CRM Folders In Outlook

Ministry of Lost Souls…

A question came up recently from a customer who wanted to use the “Address Book”, “Task/Contact/Calendar Synchronisation” and “Track In CRM” functionality from the CRM Outlook Client, but avoid using the CRM navigation folder and so forcing their staff to use web client. They wanted to know if there was a supported way to hide or remove the whole Outlook Client Navigation.

Unfortunately you can’t simply delete the Microsoft Dynamics CRM folder (a Custom MAPI Message Store) from Outlook as this will disable all CRM client functionality.

However, you can customise the SiteMap XML configuration file by specifying Client='Web' for each SubArea element. That way, you will only see the top level "Microsoft Dynamics CRM" folder in Outlook, with no subfolder. I just tested this in my demo environment, and you can see the results below. The best part is that this is a fully supported solution.

image

This posting is provided "AS IS" with no warranties, and confers no rights.

Laughing Boy Chestnuts Pre-School

Testing Both IFD & Windows Authentication

Deep In The Motherlode…

As part of my development work I sometimes need to test applications using both IFD and Windows authentication on my Virtual PC demo environment. However, looking through the various blog posts here and here, it seemed that no-one had come up with a solution to be able to run both authentication models side-by-side when the CRM client and CRM server are on the same virtual machine. After a couple of days playing around with various network settings, DNS entries and the IFD Configuration Tool, I stumbled upon the magic configuration that enables this to work.

I tend to build my own Virtual PC images (my current environment is 32-bit Windows Server 2008 SP2, SQL Server 2008 SP1, SharePoint Server 2007 SP2, Visual Studio 2008 SP1 and CRM 4.0 Update Rollup 4), and I use a variation on the two network adapter configuration that Menno described recently in his blog – You can get details of this configuration from my May 2006 blog post here.

STEP 1 – Set up a second static IP address on the same subnet as your primary IP address. You can do this by opening the network adapter properties, navigating to the Advanced TCP/IP Settings page and adding a second IP address. In this example, my primary IP address is 192.168.0.1 with subnet mask 255.255.255.0, and my second IP address is 192.168.0.2 with the same subnet mask.

Network Adapter Configuration

STEP 2 – Add a couple of additional DNS Server entries. In this example my server name is “server” and my domain name is “demo.com”, and I access CRM through the URL http://server:5555/orgname. When using IFD authentication, I decided I wanted to use the URL format http://orgname.crm.demo.com so I needed to create three new entries in the DNS Manager console.

  1. In the “demo.com” domain, create a new child domain called “crm”
  2. In the “crm.demo.com” domain, create a new host (A) record with a blank hostname and IP address 192.168.0.2 – this allows you resolve the address “crm.demo.com”, and you can test this works by opening a command prompt and running the command “Ping crm.demo.com”.
  3. In the “crm.demo.com” domain, create a new host (A) record with a hostname of “*” and IP address 192.168.0.2 – This allows you to resolve any address in the “crm.demo.com” domain. You can test this works by opening a command prompt and running the command “Ping orgname.crm.demo.com”.

DNS Manager Configuration

STEP 3 – Install and run the IFD Configuration Tool

  1. Selecting “IFD+On Premise” as the authentication strategy.
  2. Add the IFD internal network address 192.168.0.1 and subnet mask 255.255.255.255 – It is really important the you use 255.255.255.255 subnet mask, since this means that IFD will work from our second IP address.
  3. Select “crm.demo.com:5555” as the IFD App and SDK root domains.
  4. Select “localhost:5555” as the AD App and SDK root domains. Unfortunately I haven’t been able to get this to work when using “server:5555” as the root domain.

IFD Configuration Tool

That’s it, and you should be good to go – obviously you need to use your own IP address ranges and DNS domain names, but the principle is the same. As you can see below, I can access my CRM org “Microsoft CRM” using either method, simply by typing in a different URL.

URL http://localhost:5555/microsoftcrm for Windows Authentication

CRM 4.0 With Windows Auth

URL http://microsoftcrm.crm.demo.com:5555 for IFD authentication:

CRM 4.0 With IFD Auth

This posting is provided "AS IS" with no warranties, and confers no rights.

Laughing Boy Chestnuts Pre-School

Update Rollup 4 for Microsoft Dynamics CRM 4.0

The Glass Prison…

I just did a quick scan of the latest downloads from http://www.microsoft.com/downloads and noticed that the CRM team have just released Update Rollup 4 for CRM 4.0 which you can download from here.

It’s good to see that we are sticking to the predictable, 8-week, update rollup schedule outlined earlier this year on the CRM product team blog.

This posting is provided "AS IS" with no warranties, and confers no rights.

Laughing Boy Chestnuts Pre-School

Windows 7 & Virtual PC

It’s The End Of The World As We Know It…

There’s been a lot of noise this week around the broad availability of Windows 7 Release Candidate (RC) (available for download here), but the thing that caught my attention was the beta availability of a new version of Virtual PC, specifically designed for Windows 7.

Now, you have probably noticed the increased focus here at Microsoft on 64-bit computing, with the Exchange Server team no longer shipping a 32-bit version and many other server products likely to follow suit (yes SharePoint Server 2010, I’m looking at you). In the not-too-distant future I can see a time when I will need to run 64-bit virtual machines just to be able to deliver my standard demos.

Since Virtual PC 2007 doesn’t support 64-bit guests, I was hoping that the new Windows 7 version would add this much-requested feature. Alas, it would appear that my hopes have been cruelly dashed if the following TechNet forum thread is to be believed - VPC and 64-bit Guest Support. It looks as though my only 100% Microsoft option is to use Windows Server 2008 with Hyper-v as my notebook PC host OS. Alternatively, I could always purchase a copy of VMWare Workstation which supports both 32-bit and 64-bit guest OS, but as a loyal Microsoft employee (and mostly because I don’t want to spend my own money), I probably won’t….or then again…:-).

This posting is provided "AS IS" with no warranties, and confers no rights.

Laughing Boy Chestnuts Pre-School

Virtual PC 2007 Performance Tweaks

Going For The One…

I’ve been head-down working on closing out Q4 CRM deals here in the UK, but wanted to share a couple of tweaks that have made a small improvement to the speed of my demos running on Virtual PC 2007.

1. Prevent your PC from entering a low power state

Some laptops will slow down performance of their CPUs and putting them into low power modes resulting in poor Virtual PC performance. Here are instructions on how to maximise CPU utilization to ensure that the laptop doesn't go into low power mode.

  • Stop Virtual PC
  • Using notepad, edit the file %appdata%\Microsoft\Virtual PC\options.xml
  • Locate the <virtual_machines> section of the file and add the key <enable_idle_thread type="boolean">true</enable_idle_thread>
  • Save the file and re-start Virtual PC

Virtual PC will now prevent the CPU from entering low power mode, however the downside is that it will drain you battery far quicker.

2. Apply the Virtual PC 2007 SP1 Hotfix Rollup.

Like most people I have been running what I thought was the most up to date version of Virtual PC (v6.0.192.0) - Microsoft Virtual PC 2007 SP1. However, I recently discovered a hotfix rollup was released in February 2009 which provides additional performance and stability fixes - Virtual PC 2007 Service Pack 1 Hotfix Rollup.

Because this hotfix rollup changes the Virtual PC version (v6.0.210.0), you have to make sure that you fully shut down your virtual machines instead of just saving state, otherwise you won’t be able to re-start them.

This posting is provided "AS IS" with no warranties, and confers no rights.

Laughing Boy Chestnuts Pre-School

UK User Group Meeting - 26th March 2009

Kielbasa…

It’s that time of year when I receive an e-mail from Rod Gordon at Gordon Associates letting me know about the next Microsoft Dynamics CRM UK User Group meeting being held on the 26th March at the Microsoft offices in Thames Valley Park, Reading from 1pm to 5pm.

Sessions include:

  • CRM Metrics - Techniques for Analysing Business Data, Steve Zangari, Zap
  • Case Study of CRM Implementation at Endsleigh Insurance, Becky Smith
  • Extending the Marketing Capabilities of Microsoft CRM, Kim Archer, 2b.net
  • Q&A/Discussion, Jason Nash, Dynamics CRM Product Manager, Microsoft

The meeting is open to all Microsoft Dynamics CRM customers and partners and is free of charge. To make a booking or for further details contact Rod Gordon; e-mail: rod@gordonassociates.co.uk; phone: 01242 529820.

This posting is provided "AS IS" with no warranties, and confers no rights.

Laughing Boy Chestnuts Pre-School

Declining Personal Returns In Social Media

You Keep It All In…

Time is indeed flying by in the Hutson household right now and I can’t believe it has been almost two months since my last post. I have a variety of CRM-related topics ready to blog, but can’t find the free time in which to write them up as fully as I would like.

I read this post from James Gardner which seems to sum up my situation  - Declining personal returns in social media.

Watch this space for a more activity over the coming weeks (hopefully).

This posting is provided "AS IS" with no warranties, and confers no rights.

Laughing Boy Chestnuts Pre-School

CRM Developer Futures

Rockaria...

I was browsing through the latest recorded content available on Channel9 (the Microsoft community site for developers) and came across the following recorded web-casts.

If you are an ISV interested in understanding how your solution may be able to take advantage of possible upcoming features of Microsoft Dynamics CRM, then I would recommend you take the time to watch these recordings.

This posting is provided "AS IS" with no warranties, and confers no rights.

Laughing Boy Chestnuts Pre-School

UK User Group Meeting - 29th October 2008

Love Rears Its Ugly Head...

I just received an e-mail from Rod Gordon at Gordon Associates letting me know about the next Microsoft Dynamics CRM UK User Group meeting being held on the 29th October at the Microsoft offices in Thames Valley Park, Reading from 1pm to 5pm.

Sessions include:

  • Workflow, reporting & printing in CRM 4.0
  • CTI with CRM 4.0
  • Capturing web-site leads with CRM 4.0
  • Case study of a CRM implementation

The meeting is open to all Microsoft Dynamics CRM customers and partners and is free of charge. To make a booking or for further details contact Rod Gordon; e-mail: rod@gordonassociates.co.uk; phone: 01242 529820.

This posting is provided "AS IS" with no warranties, and confers no rights.

Laughing Boy Chestnuts Pre-School

Meet Abhijit Gore (CRM Program Manager) at Convergence

Superstition...

Abhijit Gore contacted me yesterday to ask for some help arranging some 1:1 customer/partner meetings whilst he is at Convergence EMEA 2008 in Copenhagen later this year (November 19-20 2008). Abhijit is part of the CRM product team, based at the Microsoft India Development Centre (IDC) in Hyderabad, and is responsible for a number of cool new CRM5 features which I can't discuss here (for fear of waking up next to a horse's head).

Now that we are coming to the end of software development milestone 1, Abhijit is looking for feedback on upcoming CRM5 features that are being developed by the IDC team. So if you are interested in meeting up and potentially influencing the direction of the product, then drop me a line via the contact page and I'll put you in touch with Abhijit.

This posting is provided "AS IS" with no warranties, and confers no rights.

Laughing Boy Chestnuts Pre-School

September Catch-Up

Sometimes...

It's been almost 8 weeks since my last post, and a lot has happened since then. Not only did I manage a couple of week holiday with my wife and two boys, but we also filled the job vacancy in our team.

Michael Wignall joins us from Microsoft Gold Certified Partner Tubedale Communications, where he was Chief Technology Officer, responsible for expanding their technical capabilities to cover hosting, infrastructure solutions, telecommunications, CRM and enterprise project management consultancy. Michael started a couple of weeks ago, and already has been heavily involved in a number of public sector CRM opportunities. Since then, I have been able to concentrate on my new sales territory.

Over the last couple of years, Craig Steere and I have been providing CRM pre-sales support across all industry sectors for both Enterprise and Mid-market customer opportunities. However, this FY we decided to focus specifically on Enterprise Financial Service and Public Sector clients, and to that end, we re-organised our CRM pre-sales team as follows:

  • Simon Hutson - enterprise financial services clients.
  • Michael Wignall - enterprise public sector clients.
  • Craig Steere - enterprise retail, manufacturing & professional service clients plus all mid-market clients.

When I agreed to take on the financial services sector (and the associated sales quota) back in July, it looked as though the worst of the "credit crunch" had passed, and for many clients it was business as usual. How wrong was I? At the moment it is too early to know how many of my current CRM financial services opportunities will be reduced in scope, delayed or cancelled altogether, but I think things just got a whole lot harder.

On the plus side, clients will be looking hard at the total cost of ownership of any solution they purchase, and this plays well to the general Microsoft "high-volume, low cost" proposition. We proved this back in June when we sold 8,000 seats of Microsoft Dynamics CRM to a financial services customer who already had a significant investment in Salesforce.com. The real clincher, was that our costs over a three-to-six year period were significantly less than those of our competitor, even when you included infrastructure required for an on-premise deployment.

This posting is provided "AS IS" with no warranties, and confers no rights.

Laughing Boy

CRM & Team Development Projects

Mississippi Moon...

I just got back from Seattle, after spending a full week at TechReady7. TechReady is an internal technical conference, where 5,000+ Microsoft field folk from around the world (pre-sales, consultants, support) get to catch up with product teams during 1,200+ breakout sessions.

Whilst there, I spent quite a bit of time with the CRM product team discussing the next release of CRM (sorry no codename this time), which is currently in the early stages of development. Andrew Bybee (Principal Program Manager, and one of the longest serving members of the CRM leadership team) mentioned that he is coming to the UK for a few days in late September, and asked me if I could arrange for him to meet some customers and partners while he is here.

He is particularly interested in understanding how people are using tools such as Visual Studio Team Foundation Server and other build tools/scripts  on complex projects. So if you are working on a project where you have multiple build environments (dev, unit test, integration, smoke test, pre-production etc), with multiple developers & testers working simultaneously in those environments, then drop me a line via my contact form and I'll schedule you in for a couple of hours with Andrew. Who knows, he might even give you some insight into CRM5.

By way of introduction, Andrew is responsible for all aspects of the CRM platform including:

  • Core runtime
  • Security
  • Event pipeline
  • Async engine
  • Authentication
  • SDK / Web services
  • Workflow
  • Email services
  • Customisation tools
  • Data model
  • Configuration DB

This posting is provided "AS IS" with no warranties, and confers no rights.

Laughing Boy

Mind Your Language

Ramble On...

Now I'm all for a bit of healthy competition in the CRM market, and highlighting your products benefits over the competition is just part of a standard sales process. However, I did have to laugh when I saw an e-mail sent by a sales rep. from another CRM vendor, to a client who had recently switched to Microsoft Dynamics CRM.

Watch out, Microsoft not just content to crash your computer, now wants to crash the Internet. This is Microsofts, long-planned, "Software as a Service"... The only problems..?

  • We would be returning to the "Mainframe-->Terminal" (High-Priest) computer architecture, which was intentionally replaced for a very large number of EXTREMELY GOOD reasons (greater speed, control, reliability, processing-power, etc.).
  • Microsoft would be able to change ("update"), alter, or LIMIT, their software whenever THEY [Microsoft] wish... NOT when the -customer- felt it was actually necessary, or appropriate.
  • Microsoft will, very effectively, be side-stepping the entire, recent, Supreme Court decision regarding -software ownership-. The purchaser would no longer have (or control) an actual "physical copy of the software". Why do you think that is..? And, what impact do you think that will have on consumer-rights..?
  • Microsoft could do (as they have always done)... and change formats, and methodologies, (and, very effectively, lock-out competition) whenever Microsoft felt like it.
  • Once Microsoft has the apps, you (or your business) depend-on, locked safely away in their servers... they can increase rates, charge "per user" (another, long-stated, Microsoft goal) at any time...and you [the customer] will simply NO SAY about it.
  • Basically, this would turn -computers- into little more than locked-down, locked-up, "Microsoft-services" delivery-devices (which are specifically designed to perpetually extract revenue, and impose absolute external-control, over ALL Computer-users).
  • And, you will, almost certainly, end-up... PAYING MORE.

In short, the entire Microsoft "cloud computing" push... fundamentally eliminates virtually ALL of the overwhelming advantages associated with the entire Personal-Computer industry (personal- power, convenience, control), and, would hand-over everything that Bill Gates/Microsoft... ever wanted... directly into the hands of a repeatedly-convicted illegal-monopoly (whose biggest problem has always been their complete failure to provide for, or even acknowledge, their customers actual needs/wants).

And, if you know anything about the history of Microsoft and the microcomputer industry, in general, then you would know just how destructive that will inevitably be to consumers (and any element of the industry that isnt directly controlled/owned/allowed... by Microsoft).

And, THAT, should scare the Hell out of anyone.

Now although this was nothing more than a tirade of anti-Microsoft sentiment devoid of coherent argument, what I really found amusing was the appalling misuse of grammar and syntax. Please, please, please, if you are going to engage in mindless diatribe and bad-mouth your competition, make sure it doesn't make you look like an inarticulate buffoon. Better still, for real inspiration as to how you should insult someone, let me remind you of the scene from Monty Python's "Holy Grail" where the French soldier is taunting King Arthur from the battlements:

"I don't want to talk to you no more, you empty headed animal food trough wiper. I fart in your general direction. Your mother was a hamster and your father smelt of elderberries"

Much better, don't you agree? Needless to say, the client was less than impressed with the vendor and replied as follows:

Slamming your competition and making disparaging comments about them is not a very professional way to sell your services. If your product is really superior, it should stand on its own merits, and there is no need for this type of scare tactic. Please do not contact me again, and try to be more professional in the future.

You see folks. Poor grammar just ain't (*sic*) good CRM :-)

This posting is provided "AS IS" with no warranties, and confers no rights.

Laughing Boy

More Posts Next page »
Page view tracker