Wednesday, November 04, 2015

Vids from TechDays

My new colleague Veronica Kamph and
@ tech-days
Last week I held two presentations at Techdays in Sweden, one on how to use Dr. John P. Kotter's 8
step method for Change management when implementing CRM to reduce the risk of bad user adoption and making sure that you make the organization accept the system. This presentation was a re-visit as I have held it before several times and presentations are just like training, they do get better and better the more times you do them. I have also written about it on this blog.

I also held a presentation on how to set up CRM 2015 from scratch and see how much could be done in an hour. However, I was very unlucky as the CRM provisioning service was unavailable during the time of the demo, after a few minutes of trying, I switched to an instance I had set up the day before. The effect of this, however, was that the full effect of the demo, to set it up from scratch, was not fully achieved, but if you have not seen Dynamics CRM in action before, do check it out as I show some of the extensibility features and how easy they are to work with. And for those of you who wonder, the CRM provisioning service is very seldom down, this was the first time I had ever experienced it.

Gustaf Westerlund
MVP, Founder and CTO at CRM-konsulterna AB

Sunday, October 04, 2015

Rumours of Yammer's terminal health

Just read a very interesting post by Wictor Wilén, a SharePoint MVP here in Sweden. He strongly argues that Yammer is planned for termination by Microsoft and lists several, very good reasons for this. Do read it.

Is Yammer breaking up?
Why is this important for us working with Dynamics CRM? As you might know there is a built-in integration between Dynamics CRM and Yammer, where Yammer can be used to replace the Activity Feeds. This gives the organization using the Dynamics CRM system increased use of the feed functionality, as most of the features of Yammer Enterprise can be used directly from within CRM. It will create a thread for each record. For more information on how to set it up and how it works, read this Tech Net article:

Recently, in CRM 2015 Spring Update (version 7.1) it is also possible to integrate CRM to Office Groups. If you read Wictor's Post, you will note his referal to how this most likely is the informal successor to Yammer internally within Microsoft. The Office Groups integration makes the collaboration Picture in Dynamics CRM even more complicated as there now are Three different ways of collaborating;

- Activity Feeds
- Yammer
- Office Groups

However, if Yammer really is to be deprecated, then this Picture clears a bit.

Another interesting fact is that there has been nothing done to the Yammer integration in CRM for several versions. It was released for CRM 2013 and it still has a lot of basic features missing, like if it is enabled for an organization, it cannot be removed. (

If Yammer was to be officially terminated, do note that Wictor (and I in this post) are just speculating, migrating the existing data from Yammer to ActivityFeeds or OfficeGroups is also a non-trivial issue. As Wictor mentions briefly in his post, the Yammer API:s have some areas which can be improved.

So, based on this. I would not advice any current CRM system owners to enable the Yammer integration unless Microsoft starts investing in Yammer and/or the CRM-Yammer integration.

I would also be more than happy to have a discussion on this subject in the comments section below.

Gustaf Westerlund
MVP, Founder and CTO at CRM-konsulterna AB

Sunday, September 20, 2015

CRM 2016 Preview Guide with comments

CRM 2016 - The Preview is under way! If you havn't checked it out already, the Release Preview Guide is here:! It is loaded with hot new features some will be available for both on-prem and online but some only for online, I am sad to say. why is this? Perhaps you have heard or seen "Cloud First, Mobile First", Satya Nadella's new Mantra, it is hence not only the Dynamics CRM mantra, but the entire Microsoft Mantra, with a large and very bold M. What that spells for on-prem is unclear at the moment. Microsoft are still, as we can see developing new versions of On-prem, and there are some very large customers running CRM On-prem which cannot so easily be moved to the cloud for many reasons. I'll get back to that further down. So, I do Think we will see on-prem being kept alive for several more years but the trend that the we are seeing in the CRM 2016 Release Preview Guide and have seen previously as well, that some features will be release first or only for online, is probably going to be even stronger. This will probably be more true in regards to integrations with integrations to aquired Products such as MSE, MDM, Power BI and so on. If you are currently thinking of starting up a CRM Project, the choice of CRM on-prem or Online needs to take this into consideration.

Ok, so there are a lot of cool new features, any of these that I especially like? Yes, of course there are!

Document Generation
One of the most common problems we have with CRM that we cannot fix without huge amounts of development or Mscrm-addons excellent Product Document Core Pack is to simply generate a Word document (Quote document) from a quote wiht a couple of quote lines. It needs to be very Quick, just a few clicks, and also modifying the template needs to be simple enough for a reasonably skilled sales manger to handle. This is something that is coming in CRM 2016, maybe not to the full extent of DCP, but at least to the basic need, and I am one of many who have asked for this since CRM 3.0. I just hope it is all I wish it is!

Guided Help
The help functionality in CRM has previously been rather hidden away and not used that much by most users. This has resulted in poor user adoption and increased cost of support and training. The Guided Help is an overlay help which can help the user along as he or she uses the system which makes it very natural.

Increased support for high demand customers in CRM Online
I Work with several high demand customers and have also trained several others and have discussed the pros and cons of CRM Online. Most of these are very hesitant to move to CRM Online due to some of the following reasons:
- Backup/Restore functionality is not granular or on-demand to their requirements. Cannot be downloaded.
- Performance tuning cannot be done
- They need to make sure/prove that the data cannot be accessed outside their network
- Data warehousing with large data - for instance tables with 10M-100M records - charts break at 50k

There are several parts of the 2016 release that address these high demand Customer needs, like
- First versions of TDE, Transparent Data Encryption - which will allow encryption of CRM data. Do read the details of this, not ful ownership of key by Customer yet.
-  Data performance Dashboard - enable admins to understand what is using system Resources to better optimize system.
- New data centers, a closer data center will decrease latency, an important factor in CRM performance.
- Bulk Data Loader - Allows for bulk data import and export to CRM. Still early version, but promising.

There are still things to do in this area though and I Think that some customers may still choose on-prem over on-line.

Making Carina (7.1) features availble for on-prem
This isn't actually in the document, but one of the greatest things of the CRM 2016 release is that all (most anyway) of the awesome stuff from the Carina or 7.1 release will be made available for CRM On-premise. The most noteworthy of these features are (please yell in the comments if you don't agree!)

- The new navigation - The navigation in Carina is so much better than 2015 RTM or 2013. So if you are running any of those versions, this single feature is reason enough to upgrade!
- Turbo forms - Weird name by the way. What will they call it when they make these faster, super ultra forms? :) Anyway, they are great. Especially if you are have many users accessing CRM with high latency (use /tools/diagnostics/diag.aspx to check from their computers). You might need to redesign your js-code in your forms, put all libs in one per form as you cannot Control the sequence it loads, but it is worth it from a user perspective.
- Theming - Colors are nice. Make your users feel at home with some custom colors and their own logo.

That's it. Summary over. Read the document yourself and make up your own mind and leave a comment if you feel something or not. Always nice to have a discussion!

If you are a CRM User, you can drop by CRM UG Sweden Chapter meeting on Wednesday and discuss this and Other stuff as well, 3 pm CET at Microsoft in Kista outside Stockholm.

I'd also like to thank Gus Gonzales, Donna Edwards and Adam Vero for the input for this article, it is based partly on the conversation we had yesterday on the CRM UG Medic Friday Online Event. If you are interested in attending next time we have one of our sessions, it is on dec 18. If you don't know the concept, we sit there and you ask us impossible questions about your CRM systems and we try to answer them as best we can without looking like fools. :) It is usually fun!

Otherwise, I hope to see you at the CRM UG Summit in Reno in October or at Techdays in Stockholm.

Gustaf Westerlund
MVP, Founder and CTO at CRM-konsulterna AB

Tuesday, August 25, 2015

Federated user unable to configure CRM for Outlook

When using federated users in a CRM Online, we encountered an error where accessing the CRM worked fine, but accessing the system using the Outlook client (configuring it) or accessing it via the tablet client did not work. It seems that some additional settings were required on the AD FS server.

We we working with a customer who had set up a CRM Online with federated users to their AD via their AD FS. When accessing this via the web client, it all worked well, but when trying to configure CRM for Outlook we just got an error "An error has occured. Please contact the system administrator". Our customer's IT manager started a premier support case as I felt this was most probably a AD FS related issue (there were no problems with the non-federated users).

After a couple of screen sharing sessions we got some great help from Pedro R at Microsoft Support and I learned something new which I thought I'd share with you and that is this;

When using federated users in CRM Online and when using IFD CRM with AD FS you have to enable the Outlook and Tablet authentication to pass through the AD FS, otherwise it is blocked.

There is a Technet article on this which can be found here:

I think this is often something that might be overlooked why I thought sharing it with you would be a good idea. Maybe you'll find it and save yourself some time!

Gustaf Westerlund
MVP, Founder and CTO at CRM-konsulterna AB

Friday, August 14, 2015

Queue question and the difference between community work and putting food on the table

I received a question per email today and as I Work as a Consultant, Selling my time by the hour, while at the same time sharing my knowledge and experience on this blog and in Other places, I thought I might share my general view on how I separate the Community Work from the Work that puts food on my table.

I am a strong believer in the notion that we need to share knowledge with each other to be able to all grow and be stronger. This is why I started the blog, started CRM User Group Sweden, run Techie After Work (with Allan Varcoe and Peter Björkmarker), present at Conferences where I do not get paid for speaking. If we all do this in the Dynamics CRM Community, it will grow large, new people will quickly learn from the more experienced, and our CRM system, will prosper to all our benefit.

We all have to put food on the table
But, I also have to put food on the table, so when people ask me to help them by contacting me by
email or phone, they do actual ask me as a Consultant and I can and will charge for the time I help out. Typically an agreement, including NDA, is signed so that I can help out in a more direct manner, which of course, is different than somebody asking something general in the comment on a blog post.

So, if you have a question to me, regarding a post, I recommend leaving a comment. Sadly, there are a lot of comment spammers out there, looking for some links to their sites, why I need to moderate all comments, as I respect you as readers and I do not want to waste your time with crap comments and irrelevant links to companies trying to sell training or otherwise.

So, on to the question I got, as it was clearly directed as a comment, will answer it in the form of a blog post instead of an email reply, so that others in the Community can also benefit from it.

"I was reading your blog post on sending emails from a queue ( and had a question.  I’m using CRM 2015 and trying to set up a queue for sending and I was wondering if the generic address needs to point to a mailbox on the server or if it can be a distribution list or mail-enabled public folder.  I’ve tried setting up an existing distribution list address for the email address, but I get errors because it can’t log on to a mailbox, so I didn’t know if it was possible or if there’s something else I need to do instead."

It is a good question. It is not obvious why you cannot use one type of email address or Another, but if you refer to the implementation guide (yes, I know, it is a very large document(s) and hard to navigate, but try to find your way around it) you will see that it says that the email address that you indicate in a queue has to be a user mailbox. It cannot be anything else. There are several different ways of logging in to this, the simplest is to set the credentials in the queue, but this will require you to change the password in the queue every time you change it in the AD. I wrote the Synchronization overview chapter in the CRM Field Guide ( and I would strongly recommend that you read this or the similar parts in the implementation guide for more detailed information.

Gustaf Westerlund
MVP, Founder and CTO at CRM-konsulterna AB

Wednesday, July 01, 2015

4:th MVP Award!

And again it is the time of the year of waiting...

First of July has for the last three years been horrible. Have I been active enough? Maybe I should have blogged a bit more? Maybe written another book or presented at another seminar... and the clock ticks... and you know that the time in Seattle is a bit later than in Sweden so you just have to be patient, usually the mail doesn't show up until late in the afternoon.

But I have got a trick, look at the MVP site and see if the profile has been updated, so I checked, and it did say that I now was on my forth year. But, the email. You need the email. Some loose it in their junkmail. The email is the final proof, The site might be wrong.

And the clock ticked. Tock.

4 pm. Maybe I'll see more if I logg in to the MVP-site.
Aha, Award end date, next year! That looks good. Maybe I did make it after all. 

Then. PLING. You have mail.

The feeling is just great every year!

Congrats to all my fellow MVP:s who got renewed and if there are any new CRM MVP:s out there, a hearty Congrats, renewing is great but the first time is best!

Gustaf Westerlund
MVP, Founder and CTO at CRM-konsulterna AB

Monday, June 29, 2015

Troublesome report troubleshooting

Creating reports in SSRS and uploading to CRM can be a pain sometimes. The report works just fine in SSRS (well, the CRM-Autofilters don't of course, but still), but when trying to upload it you get this fine and informative error message:

Not very helpful, so maybe the log file is:

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: An error occurred while trying to add the report to Microsoft Dynamics CRM. Try adding the report again. If this problem persists, contact your system administrator.Detail: 
<OrganizationServiceFault xmlns:i="" xmlns="">
  <ErrorDetails xmlns:d2p1="" />
  <Message>An error occurred while trying to add the report to Microsoft Dynamics CRM. Try adding the report again. If this problem persists, contact your system administrator.</Message>
  <InnerFault i:nil="true" />
  <TraceText i:nil="true" />

If you are not very used to reading this, the important part is:
An error occurred while trying to add the report to Microsoft Dynamics CRM. Try adding the report again. If this problem persists, contact your system administrator.

Not really sure who that guy is. Anybody know him or her please leave a comment.

Ok. So, maybe the SSRS tracelogs have something. Let.s go to there, in my case it was in this path:
C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\LogFiles

Yours is probably something similar.

The last entries in the log were:
library!ReportServer_0-2!1870!06/29/2015-16:28:36:: i INFO: Call to GetItemTypeAction(/Contoso_MSCRM/CustomReports/{f27fb971-691e-e511-93fe-00155d01ac02}).
library!ReportServer_0-2!1870!06/29/2015-16:28:36:: i INFO: Call to CreateReportAction({f27fb971-691e-e511-93fe-00155d01ac02}, /Contoso_MSCRM/CustomReports, False).
processing!ReportServer_0-2!1870!06/29/2015-16:28:36:: e ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.ReportPublishingException: , Microsoft.ReportingServices.ReportProcessing.ReportPublishingException: Exception of type 'Microsoft.ReportingServices.ReportProcessing.ReportPublishingException' was thrown.;
library!ReportServer_0-2!1870!06/29/2015-16:28:36:: i INFO: Call to CreateReportAction({f27fb971-691e-e511-93fe-00155d01ac02}, /Contoso_MSCRM/CustomReports, False).
processing!ReportServer_0-2!1870!06/29/2015-16:28:36:: e ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.ReportPublishingException: , Microsoft.ReportingServices.ReportProcessing.ReportPublishingException: Exception of type 'Microsoft.ReportingServices.ReportProcessing.ReportPublishingException' was thrown.;
library!ReportServer_0-2!1870!06/29/2015-16:28:36:: i INFO: Call to CreateReportAction({f27fb971-691e-e511-93fe-00155d01ac02}, /Contoso_MSCRM/CustomReports, False).
processing!ReportServer_0-2!1870!06/29/2015-16:28:37:: e ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.ReportPublishingException: , Microsoft.ReportingServices.ReportProcessing.ReportPublishingException: Exception of type 'Microsoft.ReportingServices.ReportProcessing.ReportPublishingException' was thrown.;

Again we are all filled with joy and happiness as it is all too clear what is wrong... Well, if you can see it, please tell me, because I can't. The logg seems to be a dead end as well.

And I am all out of logs to look for, I don't really think the IIS-log will help.

However, all hope is not lost and we must trust the force, and the force says that the problem is probably that we have some UI component that is weird or that there is some reference that is bad. So I went back to my report, and just for the hell of it, not that I use it that much anyway, pressed the "Preview" tab, and behold, I had replaced a datasets query with a new SQL statement and missed that a tablix had a reference to a field.

So, these are some ways to troubleshoot a report. Maybe I should have done it the other way round. :)

Gustaf Westerlund
MVP, Founder and CTO at CRM-konsulterna AB

Friday, June 26, 2015

Non breaking Space in SSRS

Been working with creating classical reports in SSRS for a customer lately and there are some tricks that you sometimes need to employ. Today, I found one, so this article will be short. Non-breaking space in SSRS can be set as an expression with the value "=char(160)",

White Sands - a sort of white space - broken by some tracks.
If using IIF or just adding it to the end of the line is up to you. It is at least good to know.

That was a short post and the tensions is building towards the 1:st. If you don't know why, check back on the 1:st and you'll know why.

Gustaf Westerlund
MVP, Founder and CTO at CRM-konsulterna AB

Friday, June 05, 2015

CRM 2015 Spring wave excel and browsers

Been working lately with a customer in CRM 2015 Spring wave and I must say I really like it! My number one feature is the lovely menu which I enjoy every time i use it!

If you havn't noticed the excel export/import functionality now supports .xlsx (finally!) which is great. I did have an issue with importing data into CRM from xlsx-file once, which might have been due to the fact that I had added a column by hand (with the correct field name!). The sad thing was that I got an error when uploading this and no option to download a log file. So, I don't really know what was wrong, but I think my new column was it. It was easily solved, anyway, I just saved the document as "XML Excelsheet 2003 format *.xml", which is the format used when exporting excel-templates in CRM 2011 and 2013. Importing that worked great. Some of you might think that csv-files are better, as the overhead is smaller in these, but I would warn against using these as I have had some issues with these. The most obvious being that the csv-format is regions sensitvie. With a en/us locale it will use the comma (,) as the separator but in Sweden (se/sv) it will use semi-colon (;). This will mess up a lot of.
Spring has come - when is summer comming?

Another messy thing of CRM 2015 Spring wave, that I think most users of it have noticed, if they are not blind, is that form customizations cannot be done in IE11. I cannot understand how this bug could have escaped Microsoft quality control, and it will most certainly be fixed. Hence I use Chrome when customizing CRM. This made me notice another bug, that being that when using Chrome, I cannot save new mappings, which works perfectly well in IE11. Isn't the multi-browser world wonderful! Just imagine the amount of money Microsoft must pour into this.

And on the subject of pouring money, we all want Microsoft to get us a lot of nice shiny features for CRM, and fix all the bugs, so how are we doing on the upgrades ourselves? Maintaining a lot of different code trees costs a lot of resources, which could have been used to other stuff. Think about that when you are requesting fixes for CRM 4.0.

Gustaf Westerlund
MVP, Founder and CTO at CRM-konsulterna AB

Monday, May 18, 2015

Be aware of Synchronous Workflows on incoming emails and Queue items

How synchronous workflows that fail, make emails disappear.

During the last few Days I have been having the not so pleasant experience of trying to find some really nasty errors in incoming emails to a queue in CRM. We are using CRM 2013 SP1 (on prem) and hence are using the Server Side Sync. Everything had been working great and we had developed some neat workflows that did some magic to convert emails to cases (as those features were not available, and not good enough either) when we develop our stuff.

Well, thing stopped working, I tried sending emails to the CRM server, but none were received in CRM. All I got in CRM was a not so descriptive general alert saying:

"An error occurred while creating incoming email in Microsoft Dynamics CRM for the mailbox XYZ. To view the email that failed, see the alerts in the mailbox record."

and in the mailbox:
"An error occurred while creating the incoming email "Test 1512" in Microsoft Dynamics CRM for the mailbox XYZ."

As I am working on my telepathic abilities, I have not yet reached a level where I can understand what is wrong so I had a look in the trace, and I was very happy I was running an on-prem server. It is a bit long, don't worry if you don't understand it all, nobody (I think) does.

[2015-05-15 15:21:13.459] Process:CrmAsyncService |Organization:673c5996-a1fa-e311-93ed-00155d0a831d |Thread:    4 |Category: Platform.Metadata |User: 00000000-0000-0000-0000-000000000000 |Level: Error |ReqId:  | <>c__DisplayClass1.<LoadMetadataContainerFromDatabase>b__0  ilOffset = 0x14
>Multi-org sharable cache loading system and non-system metadata with build number and language 1033
[2015-05-15 15:33:45.132] Process:CrmAsyncService |Organization:00000000-0000-0000-0000-000000000000 |Thread:   26 |Category: Exception |User: 00000000-0000-0000-0000-000000000000 |Level: Error |ReqId: cf367175-12a2-4719-a5af-f53f7f254399 | CrmException..ctor  ilOffset = 0x7
 at CrmException..ctor(String message, Exception innerException, Int32 errorCode, Boolean isFlowControlException)  ilOffset = 0x7
 at CrmException..ctor(String message, Exception innerException, Int32 errorCode)  ilOffset = 0x5
 at Exceptions.ThrowIfGuidEmpty(Guid parameter, String name)  ilOffset = 0x18
 at OrganizationSdkServiceInternal.Retrieve(String entityName, Guid id, ColumnSet columnSet, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType, Boolean checkAdminMode)  ilOffset = 0x16
 at InprocessServiceProxy.RetrieveCore(String entityName, Guid id, ColumnSet columnSet)  ilOffset = 0x28
 at OrganizationServiceProxy.Retrieve(String entityName, Guid id, ColumnSet columnSet)  ilOffset = 0x4
 at EntityDictionary.TryRetrieveEntity(String key)  ilOffset = 0xF8
 at EntityDictionary.System.Collections.Generic.IDictionary<System.String,Microsoft.Xrm.Sdk.Entity>.get_Item(String key)  ilOffset = 0x1B
 at VisualBasicValue`1.Execute(CodeActivityContext context)  ilOffset = 0x3A
 at ActivityExecutor.ExecuteInResolutionContext(ActivityInstance parentInstance, Activity`1 expressionActivity)  ilOffset = 0x35
 at InArgument`1.TryPopulateValue(LocationEnvironment targetEnvironment, ActivityInstance activityInstance, ActivityExecutor executor)  ilOffset = 0x2F
 at ActivityInstance.InternalTryPopulateArgumentValueOrScheduleExpression(RuntimeArgument argument, Int32 nextArgumentIndex, ActivityExecutor executor, IDictionary`2 argumentValueOverrides, Location resultLocation, Boolean isDynamicUpdate)  ilOffset = 0x16
 at ActivityInstance.ResolveArguments(ActivityExecutor executor, IDictionary`2 argumentValueOverrides, Location resultLocation, Int32 startIndex)  ilOffset = 0x9C
 at ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)  ilOffset = 0x1C
 at ActivityExecutor.OnExecuteWorkItem(WorkItem workItem)  ilOffset = 0x53
 at Callbacks.ExecuteWorkItem(WorkItem workItem)  ilOffset = 0xD
 at Scheduler.OnScheduledWork(Object state)  ilOffset = 0xC5
 at SendOrPostThunk.UnhandledExceptionFrame(Object state)  ilOffset = 0x0
 at PumpBasedSynchronizationContext.DoPump()  ilOffset = 0x2E
 at WorkflowApplication.Invoke(Activity activity, IDictionary`2 inputs, WorkflowInstanceExtensionManager extensions, TimeSpan timeout)  ilOffset = 0x23
 at WorkflowInvoker.Invoke(Activity workflow, IDictionary`2 inputs, TimeSpan timeout, WorkflowInstanceExtensionManager extensions)  ilOffset = 0x36
 at SynchronousWorkflowActivityHost.ExecuteWorkflowUsingInvoker(Activity workflow, ICommonWorkflowContext context)  ilOffset = 0xD0
 at SynchronousWorkflowActivityHost.StartWorkflow(WorkflowActivationData activationData, ICommonWorkflowContext context)  ilOffset = 0x73
 at SynchronousWorkflowActivityHost.StartWorkflow(ICommonWorkflowContext context)  ilOffset = 0xBA
 at WorkflowProcessServiceInternalHandler`1.ExecuteSyncWorkflow(Guid workflowId, PipelineExecutionContext pipelineContext, IGenericEventData workflowInstanceData, Boolean isTriggered)  ilOffset = 0x59
 at WorkflowProcessServiceInternalHandler`1.ExecuteTriggeredSyncWorkflow(Guid workflowId, PipelineExecutionContext pipelineContext)  ilOffset = 0x21
 at SyncWorkflowExecutionPlugin.Execute(IServiceProvider provider)  ilOffset = 0x2C
 at V5PluginProxyStep.ExecuteInternal(PipelineExecutionContext context)  ilOffset = 0x2A3
 at VersionedPluginProxyStepBase.Execute(PipelineExecutionContext context)  ilOffset = 0x65
 at Pipeline.Execute(PipelineExecutionContext context)  ilOffset = 0x65
 at MessageProcessor.Execute(PipelineExecutionContext context)  ilOffset = 0x1FB
 at InternalMessageDispatcher.Execute(PipelineExecutionContext context)  ilOffset = 0xE4
 at ExtensiblePlatformMessageDispatcher.Execute(PipelineExecutionContext pluginContext)  ilOffset = 0x0
 at ExtensiblePlatformMessageDispatcher.CreateWithInvocationSource(BusinessEntity entity, Int32 invocationSource, ExecutionContext context)  ilOffset = 0xB4
 at BusinessProcessObject.Create(IBusinessEntity entity, ExecutionContext context)  ilOffset = 0x54
 at GenericActivityServiceBase.Create(IBusinessEntity entity, ExecutionContext context)  ilOffset = 0xA1
 at CommunicationActivityServiceBase.Create(IBusinessEntity entity, ExecutionContext context)  ilOffset = 0x1A
 at EmailService.SetRecipientsAddAdditionalAttributeAndCreate(AddressEntry[][] allResolvedAddressEntries, Email email, Entity emailDeltaEntity, String traceSubject, ExecutionContext context)  ilOffset = 0x1DA
 at EmailService.Deliver(Boolean userPromote, Guid emailId, String messageId, String subject, String from, String to, String cc, String bcc, DateTime receivedOn, String submittedBy, String importance, String body, BusinessEntityCollection attachments, Guid campaignResponseId, Entity emailDeltaEntity, ExecutionContext context, Boolean validateBeforeDeliver)  ilOffset = 0x524
 at EmailService.DeliverIncoming(String messageId, String subject, String from, String to, String cc, String bcc, DateTime receivedOn, String submittedBy, String importance, String body, BusinessEntityCollection attachments, Entity extraProperties, Boolean validateBeforeCreate, ExecutionContext context)  ilOffset = 0xB8
 at RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)  ilOffset = 0xFFFFFFFF
 at RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)  ilOffset = 0x25
 at RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)  ilOffset = 0xCF
 at LogicalMethodInfo.Invoke(Object target, Object[] values)  ilOffset = 0x4F
 at InternalOperationPlugin.Execute(IServiceProvider serviceProvider)  ilOffset = 0x57
 at V5PluginProxyStep.ExecuteInternal(PipelineExecutionContext context)  ilOffset = 0x200
 at VersionedPluginProxyStepBase.Execute(PipelineExecutionContext context)  ilOffset = 0x65
 at Pipeline.Execute(PipelineExecutionContext context)  ilOffset = 0x65
 at MessageProcessor.Execute(PipelineExecutionContext context)  ilOffset = 0x1C5
 at InternalMessageDispatcher.Execute(PipelineExecutionContext context)  ilOffset = 0xE4
 at ExternalMessageDispatcher.ExecuteInternal(IInProcessOrganizationServiceFactory serviceFactory, IPlatformMessageDispatcherFactory dispatcherFactory, String messageName, String requestName, Int32 primaryObjectTypeCode, Int32 secondaryObjectTypeCode, ParameterCollection fields, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId, Guid transactionContextId, Int32 invocationSource, Nullable`1 requestId, Version endpointVersion)  ilOffset = 0x16E
 at OrganizationSdkServiceInternal.ExecuteRequest(OrganizationRequest request, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType, UserAuth userAuth, Guid targetUserId, OrganizationContext context, Boolean returnResponse, Boolean checkAdminMode)  ilOffset = 0x1F1
 at OrganizationSdkServiceInternal.ExecuteRequest(OrganizationRequest request, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType, Boolean checkAdminMode)  ilOffset = 0x2D
 at OrganizationSdkServiceInternal.Execute(OrganizationRequest request, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType, Boolean checkAdminMode)  ilOffset = 0x26
 at InprocessServiceProxy.ExecuteCore(OrganizationRequest request)  ilOffset = 0x34
 at IncomingEmailProviderBase.DeliverMessageInternal(EmailMessage emailMessage, Boolean validateBeforeCreate)  ilOffset = 0x1B7
 at IncomingEmailProviderBase.DeliverMessage(EmailMessage emailMessage, Boolean validateBeforeCreate)  ilOffset = 0x19
 at GetItemsStep.ProcessResponse()  ilOffset = 0x5AB
 at ExchangeIncomingEmailProviderStep.EndOperation()  ilOffset = 0xFC
 at ExchangeIncomingEmailProvider.ReceiveEmails()  ilOffset = 0x92
 at IncomingActivityProviderBase.Run()  ilOffset = 0x42
 at MailboxEmailOperation.PerformOperation()  ilOffset = 0x2C
 at MailboxOperationBase`1.Execute()  ilOffset = 0xAA
 at MailboxProcessingOperation.PerformOperation()  ilOffset = 0x1A
 at MailboxOperationBase`1.Execute()  ilOffset = 0xAA
 at MailboxOperationCommand.InternalExecute(MailboxAsyncEvent asyncEvent)  ilOffset = 0x64
 at AsyncCallbackHandler`2.ResumeExecution(IAsyncEvent asyncEvent)  ilOffset = 0x56
 at AsyncEventExecutionManager`2.ExecuteHandler(IAsyncEventHandlerFactory handlerFactory)  ilOffset = 0x8A
 at PoolHandler.ProcessAsyncEvent(IAsyncEventExecutionManager asyncEventExecutionManager)  ilOffset = 0x144
 at AsyncEventOperation.<.ctor>b__2(IServiceOperation operation)  ilOffset = 0x0
 at FaultToleranceBehavior.Execute(ServiceOperationAction operation, IServiceOperation operationParameter)  ilOffset = 0x18
 at MonitoredOperation.Execute()  ilOffset = 0xD
 at ThreadPoolQueueExecutionEngine.InvokeNextOperationInThreadPool(Object state)  ilOffset = 0xC
 at ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)  ilOffset = 0x70
 at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)  ilOffset = 0x4
 at QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()  ilOffset = 0x30
 at ThreadPoolWorkQueue.Dispatch()  ilOffset = 0xA3
>Crm Exception: Message: Expected non-empty Guid., ErrorCode: -2147220989, InnerException: System.ArgumentException: Expected non-empty Guid.
Parameter name: id
[2015-05-15 15:33:45.304] Process:CrmAsyncService |Organization:00000000-0000-0000-0000-000000000000 |Thread:   26 |Category: Platform |User: 00000000-0000-0000-0000-000000000000 |Level: Error |ReqId: cf367175-12a2-4719-a5af-f53f7f254399 | ExceptionConverter.ConvertToFault  ilOffset = 0x69
>UNEXPECTED: no fault?

My first thought was that the stack trace was really long... and then there was some mentioning of User with Guid 00000000-0000-0000-0000-000000000000.

Another kind of queue ticket
As the Server Side Sync has something of a rep for not being the most reliable guy in Town, I wasn't really sure if this error really was an error that we had caused or if there was something wrong with the server side sync. As my perception was that we hadn't really changed any thing, I started with the recreating the mailbox, recreated the server profile, ran test and enable and that worked, but when I tried sending my own emails, from different email accounts, as you never know if there is something spooking it with a specific email address, I still never got the queue to read any emails, not even the test emails created by CRM. I was starting to get a bit short on hair by this time, so I resorted to my classical troubleshooting method of backing off as far as possible and seeing if things still were broken, and I hence deactivated all workflows and plugins that were associated to email and Queue item, and gave the user full access and I was once again awarded with this method, emails started arriving in the queue in CRM.

I then revoked admin access and started re-enabling each single workflow/plugin until thing started
breaking again. This turned out to be a painstaking process as the only way I found to test this was to send an email to CRM and then wait for about 5 minutes until it was/or was not pulled into the queue.
It took me more or less a days work just to find the two workflows that were causing the problems.

The actual problems in them selves, arn't really that interesting, it turned out that the error message above was actually quite correct, If you try to set a null-user to an owner field, CRM will respond like this.

What I did notice however was that the workflows that we were using on "queue item" in this case were synchronous (yes, yes, we do have good reasons for it, I hope you do to, Otherwise, please choose asynchronous/background workflows) and as they broke, CRM did two interesting facts that are not very desirable and noteworthy:
  • The mailbox was shut down for further email processing. It had to be "Test and Enabled" to start receiving emails again. I have yet to see a good way to do this in an automated fashion and to be able to monitor the mailboxes to see if they are working as expected.
  • The email that was the cause of the breaking of the workflow, got lost. Even after the mailbox got reactivated, it had marked this email as read and did not read it into CRM despite the fact that it was neither in the queue nor as a lone activity which might have been the case if the Creation of the queue item broke. But obviously the entire process is handled atomically.
Based on this I have the following recommendations:
  1. If possible try to avoid an synchronous logic on receiving email or Creation of queue items. Try to move logic to asynchronous as this will cause errors to be non-fatal, like the two types of effects that are hard to handle above.
  2. If you do need to have synchronous logic on the receiving of emails or Creation of queue items try to add conditions in the beginning that will ensure that the logic only runs in those very specific cases where they are supposed to. Be aware of the fact that queue items can be associated to many different entities, so don't rely on the fact that they should be only connected to something specific. At least take into consideration the fact that they will be connected to emails at some Point in time.
  3. I read an interesting fact today, that the activation of business rules Controls in which order they will be executed. If you are using CRM 2015 with server side (Entity) scope, this could probably cause similar issues if the activation is done haphazardly and causes the execution to be done in a way that can cause a bug and break processing of the queue item or email. I havn't checked if these are run pre- or poststate but I think that depends on the action.
  4. If you get errors, especially when using CRM Online, try to replicate the error in the sandbox Environment and then either move backwards to a Point where it starts working again, or deactive Everything related to emails and queue items, make sure it works, and move forward. When you know where the error is, finding what the error is, is so much easier.

We also found a related bug in CRM today, if you try to create an asynchronous workflow that triggers on a field which has field based rights activated on it, it will break, with some weird error message about not being able to change domain for the user. The simple fix for that is to make the workflow synchronous and to make it run as the user that activates it, that worked. We didn't try to run it as the user who created the workflow, as that is the same logic that is used in asynchronous workflows, I wasn't too keen on trying something that was more likely to fail. If you have tried it, please leave a comment below.

I hope to see a lot of people tomorrow on the 19:th at the Swedish CRM UG Meeting!

Gustaf Westerlund
MVP, Founder and CTO at CRM-konsulterna AB

Thursday, April 23, 2015

Be critical of the Internet - goes for CRM blogs too

You have to decide...
Did you know that Putin has a summer house in Florida?
Vaccines make you sick!
To change base currency in CRM, just run this script, there is no risk!

The Internet is full of bad information. Ever found something on a blog on Internet and tried it? A script, some code or something else that you really didn't know what it did. Could you really trust the source?

I have met customers and sometimes even partners who mention that "Well I found a solution to this very complex problem XX, you just run this script YY on the CRM database, it was on a blog on Internet. Like a blog on Internet, like this one is some oracle of truth. I am sorry to break it to you, but this is not so. Just as with everything else you see and hear on the Internet, you need to be critical about the information, and judge it and the source where it is coming from. In the end, it is you who are responsible for what you are doing with the CRM system. If you happen to run a script that is bad, install a auto numbering solution that causes masses amounts of locking or copy paste an unsupported script into the onload of the account form, it is still your responsibility. Hence I recommend that you do not run or insert anything that you do not fully understand or have gotten from a source that you feel that you can trust has verified the contents.

If you don't know it, the Dynamics CRM SDK page on unsupported customizations is a really good page to start with. If something you find, is listed here, you should really think again. Remember that the current cadance of CRM is very rapid, you cannot afford to have a system that is not upgradable or on which you cannot get support if you get into big problems.

With that said, there is a great and wonderful community out there with a lot of great and wonderful tools and advice, so don't stop using it, just be a bit critical.

So, who am I to say this. A very good question. If you feel this question is relevant, and question the validity of this argument, I think you have gotten the point.

Gustaf Westerlund
MVP, Founder and CTO at CRM-konsulterna AB

Tuesday, April 21, 2015

Making CRM stick by using Dr. John Kotter 8 Step method - part 8 - Never letting up

”The new CRM was nice but there were some bugs and  Excel is still so much easier, so I just went back to it.”

This is the 8:th part in the series on using Dr. John Kotters 8 step method for implementing new CRM systems in an organization. We have now gotten as far as the system being accepted by users and that they have started using it.

During and just after the initial implementation of the new CRM system users are often good sports and give it a shot, and there might also be strong ambassadors in the people that were driving the implementation. This can often result in the fact that users use the system to a decent level in the beginning.

Managers are also often quite diligent in the beginning of a system implementation to make sure that their employees use the system.

However, the strong driving people might change role or move to Other companies. It is not uncommon that these people are more entreprenuerial and creators than the people who are good at maintaining a system. So, they move on to other projects and tasks. Managers will also get other priorities on their tables, often making the CRM system, not as important.
Keep up the pressure

Other common things that I have seen are that the system might also have some bugs and quirks that might not have showed up in the implementation phase or might have surfaced during later upgrades and these might or might not be surfaced to the people responsible for the CRM system. If not quickly rectified, the risk is substantial that users will revert to their previous manner of working, or some other easy way of managing their own productivity. This is most commonly using Excel to, for instance, keep track of which leads have been contacted.

Dr. Kotter emphezises in this chapter that it is important to constantly reinvigorate the change, in this case the new CRM system with new updates. For instance, making sure that you listen to the suggestions and problems that users are experiencing and acting on these. The passionate ambassadors for change can also be used in this phase to energize the rest of the workforce. Also measuring the use in the system, to make sure that users actually are using it, is important, so that you do not think that they are when it fact they are finding other ways to store information. If left without action for too long, you risk large problems with trying to get user back on track. This is especially true and complicated in large and distributed organizations when you cannot physically monitor what users actually are doing by looking over their shoulders. If team managers are also part of the problems, or perhaps managers in even higher levels, the problems are naturally of even higher magnitude.

Gustaf Westerlund
MVP, CTO and Founder at CRM-konsulterna AB

The CRM 2013 Field Guide is out

After a lot of work a huge amount of MVP:s have now managed to achieve the second CRM Field Guide. I have this time had the honor of being among the authors of this very comprehensive title which goes into details of many areas that very few other books do. At almost 1000 pages it is something that you just have to have with you if you are a CRM expert, or claiming to be one. As Bob Stutz, said in his keynote here at eXtreme CRM today, it is impossible to keep all this information in the head, so we have helped you out, we have tried to destill it poured it into this book.

The book is for CRM 2013, which might seem strange, now that CRM 2015 Update 1 is about to be released but keeping up with Microsoft's cadance is not easy. The absolut majority of the things in the book are still true, yes, there might be some new features in CRM 2015 that can be revised in the book, but I guarantee you that if you know the book by heart, you will be one of the best experts in the worlds on Dynamics CRM, even CRM 2015.

And from our perspectives as authors, most of us, like me, are CTO:s, Techical directors, CEO:s, or senior consultants and developers, we take a lot of our time to write this book, as we partly like to share our knowledge, and partly, I guess to be totally truthful, to feed our pride a bit :). However, the CRM market for books is very limited, and the time frame a book is current is very short, making piles and piles of money off a CRM book is almost impossible, it is probably better to go about your daily job. I would hence say that the best way that you can encourage us to write the next version of this book, is to tell us, the people who made it what you thought of it. What is good, what can be made better? Tell us what is useful for you when you are working with a customer, tell us what you lack. The more people showing interest in what we do, the more we feel inclined to make the next version.

To buy your copy, click on the image below. I have 25 discount vouchers, to my readers, so the first 25 people can use the code "Gustaf2013".

Gustaf Westerlund
MVP, Founder and CTO at CRM-konsulterna AB

Monday, April 20, 2015

Reflections regarding CRM 2015 Certifications

I was recently contracted by Microsoft Sweden to hold two custom certification preparation classes for the MB2-704 Microsoft Dynamics CRM Application and MB2-707 Microsoft Dynamics CRM Customization and Configuration.

One of the things that struck me during the preparation of this course was that Microsoft have changed the names of the certifications. Previous certifications, for instance the matching certification for CRM 2013 Application is named "MB2-700 Microsoft Dynamics CRM 2013 Application". For those who need it to be spelled out, the version name is no longer in the name of the certification..."

As Microsoft have at the same time moved all Microsoft Official Curriculum Courses (MOC) from being normal classroom Courses to being eLearning Courses, one might wonder if there might be a significant pattern here.

The last but not least piece of the puzzel, is the now increased version cadance, one new version for CRM Online every 6 months and a new major version for both CRM Online and On-premise every year.

My conclusion is, that the version number indicates that they might be sticking to this for some time. Creating, and maintaining new certificates probably takes a lot of Resources from their end so this might be a way to manage the current version cadance.

A related subject is that for Dynamics NAV, all certifications have been dropped. There are no new certifications for NAV 2015 and the requirements for partners are being revised. I don't Think this will spill over to Dynamics CRM, but it is none the less interesting.

I also tried taking the new MB2-707-OP, Online Proctored version of the exam, but I didn't even get to Writing the certification as my full formal name is "Nils Gustaf Westerlund" and this is also what my ID says. However, the "Nils" part is never used and is for instance not on any of my credit cards. I had hence not used "Nils Gustaf" as my first name in the Microsoft account either and I have never had any issues with this earlier when Writing exams at any of the test centers, and I wanted to test the online proctored exam so that I could tell the attendees of the class I was holding about it so that they could know if it was useful or not. As you probably could imagine from my elaborations regarding my name, when I had to show my ID to the supervisor of the exam, I was informed that my name was wrong. I tried explaining that this is how names are written in Sweden, and even showed him several of my credit cards with Master Card, showing only "Gustaf Westerlund" but that did not help. He was about as flexible as a piece of Concrete. After a lot of complaining and phone calls to Pearson Vue, I finally got them to pay me back. I can only imagine the kind of trouble you can have if you have a Chinese or Russian name. I strongly suggest that Pearson Vue shape up their understanding of international naming standards. I signed up for a test at a local test center the day after and there was no problem there but I am Always flabbergasted at what I am not good at based on the test, this time it was forms. If anything, I am actually quite good at forms, and I do teach CRM 1.2 (not so much any more), 3.0, 4.0, 2013, 2015 and have worked with CRM for 10 years. But I passed, and I guess that is what counts.

Now, I have to go to bed, tomorrow is Innovation Challange here in Madrid, eXtreme CRM! I hope you are here, don't be a stranger! I don't bite.

Don't miss George Doubinski's and my "7 Sins of CRM Development" on Tuesday at 11:00 in room Bangkok if you are here in Madrid.

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB

Monday, April 13, 2015

New default Access Mode in Dynamics CRM Online

As some of you might have noticed when setting up a new Dynamics CRM Online 2015, for instance a 30 day trial, which can be done on this link, you will now see a much more limited view than before.

This is due to the fact that the default Access mode of the user that is created when the CRM instance is set up to "Administrative" not "Read-Write" as it used to be. The point of this is that it is not to use a license unless necessary.

To change it, go to the new location of user in Settings->Security->Users

The first thing we have to do is to assign a license to the user from the O365 portal. So click the link in the top information part of the user form to navigate there directly.

This will take you to the O365 provisioning, where you can assign a CRM license to your user.
Sorry, this is in Swedish, I tried provisioning Everything in English but the stripes don't seem to go out...
To edit the licenses for the selected user, click "Edit" in the pane on the right hand side.

Still in Swedish, it says, "Select License, choose location in the dropdown"
When you have pressed edit, you are able to edit the licenses for the user, select an appropriate location, and click in the box for Dynamics CRM and press save. Now go back to the user form in CRM, it should be on Another tab.

Scroll to the bottom of the user form and expand the "Administration" tab by clicking on it.

You will now see the Access Mode selector and see that it has been set to "Administrative".

Change it to "Read-Write".

If you do not assign a license in the O365 portal, you will see this error in CRM when trying to change the Access Mode.

Remember, that the sitemap has to be reloaded, so press F5 to reload CRM, and as you can see, Everything is turned on now.

Anybody notice that Microsoft might need to do something about the sampledata? :)

Good luck!

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB

Saturday, March 07, 2015

Making CRM stick by using Dr. John Kotter 8 Step method - part 7 - Generating short term wins

In this series of posts on how to use Dr. John Kotter's 8 Step method for implementing change specifically in CRM implementations, we have now come to the part about generating short term wins.

I think many of you who have been around in some CRM implementations, especially when using more Classic Project modells, like the waterfall, when replacing older systems with large amounts of functionality and integrations with a Dynamics CRM that management start to question the Project, and maybe suggest pulling the plug, a lot of effort has to be put into convincing the Project sponsors to continue the Project.

This is also the reason why new Project models, such as the agile model has been developed, as this makes sure to deliver short term wins early on, after each sprint. Many Dynamics CRM Consultant also try to phase implementations to make sure to deliver early on.

Dr. Kotter emphises that it is important to plan for short term wins not just to hope for them. They should be quantifiable/measurable so that you can show them to the Project sponsors as clear and undisputed wins.

In the Project, it is adivsable to define the short term wins that you are planning to achieve and assigning a person as responsible for making sure that this happens.

In one of the my upgrade Projects from CRM 4 to CRM 2013 including integrations to an ERP system we initially focused all the energy on the Technical parts of the integration and just making sure that we could get the same functionality that was actually working in CRM 4 to Work in CRM 2013, using the "Information" forms, not the new forms. However, the Customer had been checking out trials on CRM Online and when we started showing them the upgraded CRM 2013 they were disappointed, despite all our really hard Work! We had tried to slim the Project budget by excluding the form upgrade stuff, moving it to a later phase, but the Customer felt that there was no win, the spent a lot of Money in the upgrade, but for no win. So we added a few hours for fixing the forms, and this made the customer a lot happier. We should have planned for short term wins from the beginning, not just the long term win of the upgraded system, and the use of new forms in later phases. Remember customers don't experience your input, they experience your output. Just like with communication.

Gustaf Westerlund
MVP, CTO and owner at CRM-konsulterna AB

Monday, February 16, 2015

Making CRM stick by using Dr. John Kotter 8 Step method - part 6 - Communicating the vision/Empowering Change

The previous five posts on this subject, regarding how to use John P Kotters Change management method called the 8 steps of change have discussed the first 4 steps of the process. It is important to understand that each step in the method builds on the step before. So, to go throught the previous steps to where we are;

First we need to make the decision makers in our organization really aware of the urgency, this should be by being very concrete, what is the benift of using CRM, what is the cost of lost customers, how can CRM change this etc.

When we have gotten the attention of the organizations decision makers, we need to make sure that a guiding coalition is put together that has the right mandate for the job. This typically, from a CRM perspective needs to be people from both the business end, IT and Other related areas like architecture or information management.

It is then vital to create a vision for the CRM implementation that will resonate with the people that are going to be affected by the new CRM system.

Communicating the CRM Vision
Ok, so we have a great vision, should we post it on the Company Intranet and then Everything will be fine? If you have any experience of marketing you probably know that this is not true. When trying to market your Products or services, repeated ongoing and very deliberate action is required to make sure that the vision is properly communicated to all the people that are or will be affected by the new CRM system.

I would also recommend testing to see if the message has been properly received by a couple of the the people that were meant to receive it, as Communication is not so much about what is sent, more about what is recieved.

Empowering Change
Ok, so this is done, you show the sales people the new CRM and then a couple of weeks later you happen to be standing by the coffemachine at the Customer, some salesguys are standing there but nobody knows you as your a Consultant and one of the older and most senior salesguys starts bragging to the younger:
Well I talked to the CEO during our latest golf round and we agreed that I don’t have to waste my time on the new CRM system”

Or you might hear this from a sales guy:
”The new CRM system is great, but I get bonuses for orders, not for posts and likes, so I know where my priorities are”

With opposition like this, in one case a senior sales executive and the other a bonus system that works against the implementation of CRM, the organization is going to have a tough time getting people to Work in CRM. It is vital for CRM implementations that anything stopping people from acting on the change needs to be removed, in the case of the senior sales executive, I would say it was a very bad decision from the CEO to let him slip, but I can understand it as well based on the amount of Revenue some of the senior sales people generate. However, he cannot be allowed to brag about it.

In the case of the bonus system, perhaps implementing some gamification to make CRM more fun or revise the bonus system to build on CRM might be better.

It is also important to elevate those people who choose to embrace the new CRM. Perhaps have an early adoptor competion.

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB

Saturday, January 17, 2015

Making CRM stick by using Dr. John Kotter 8 Step method - part 5 - Creating a change Vision

Why are is the organization implementing CRM? What is the vision or message that we want to communicate to the organization? Is this a vision that will resonate with the organization?

"The reason we are changing to Dynamics CRM 2015 is that the old CRM system was based on VB6".
"We are moving to Dynamics CRM since the cost per seat is a lot better than Salesforce".

How do you Think the two visions above will resonate with salespeople that need to take time out of their busy days to put a lot of time and effort into Learning a new CRM system, often with new processes. The thing is that the reasons above are both very logical, common and true, but when creating a vision for change it is essential for the vision to resonate with the people it is to be communicated to.

For instance, a vision for the CRM system can be that by centralizing Customer information and making it easily available at all times of Customer interaction, traversing previously impassable organizational division. By sharing Customer information across Corporate divisions the all Customer interactions, it is our strong belief that the Customer experience of our Company will be greatly increased, which in the long term will increase Customer loyalty and decrease Customer churn.

Other areas that are typical for CRM is increased business productivity, more time with customers, information at your fingertips with the mobile/tablet applications. It is also important to not use too much Corporate buzzwords, especially if the recipients of your vision are less formal as these people tend to not buy in to the lingo of sales and management. Why not try it out on a few representatives from each of the roles that your are targeting, and see what they Think. Try to ask the questions in an open manner, for instance "How should we improve this to make the most conservative of your colleagues buy into this?"

The example above is a short and general the vision is a bit longer, but not too long, maybe being divided into different parts. For more detail, please see John P Kotter's Leading Change.

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB

Saturday, November 29, 2014

Making CRM stick by using Dr. John Kotter 8 Step method - part 4 - Creating a guiding coalition

”Yeah, I am your go-to guy for the CRM project. But Joe, the CSO, makes all the decisions and has the money, but is not really involved, he won’t really be using the system either, neither will Jill, our CEO.”

How do you Think this CRM Project will turn out?

The stories are many of CRM Projects run by individuals or Groups in organizations with more or less just influential power. All real decision power in these situations reside in individuals that are not directly involved in the CRM Project.

The reason for this can usually be found in the the first stage of this process, if you have been unable to create a sense of urgency in the top echelons of your organization regarding the CRM implementation, the risk is large that none of the decision makers from these echelons will be involved as sponsors to the Project.

In CRM Projects, it is important to get people from both thte IT and the business side of the Company to buy in to the Project and be an Active part of the Project. The CIO and CSO (Chief Sales Officer) or what you might call them, might be involved as sponsors and they might assign people from their organizations to be part in the actual week-to-week Project Group with more limited mandate.

But, the better you do your work with step one the more attention you will probably get from the decision makers, so in smaller organizations, some of the decision makers might even find the Project so important that they will get involved in the nitty gritty. For better or worse.

Dr. John Kotter in his book, Leading Change, in this chapter on creating a guiding coalition also outlines some of the people that you should try to avoid having in your guiding coalitions. If you are interested, do read it!

I ran this presentation, on how to user the Kotter 8 step method in CRM implementations, again this monday on the CRM User Group Global Chapter Meeting in Sweden. It was a great meeting and I really enjoy seeing users meet Other users. For more information on the User Group, check out If you are a user of Dynamics CRM, I am sure you will like it and the more people we get to the meetings the more value it will bring to all participants!

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB

Thursday, November 06, 2014

Making CRM stick by using Dr. John Kotter 8 Step method - part 3 - Creating a sense of Urgency

This is the third part of the series of posts in the series where I am discussing how to use the Kotter 8 steps of change method when implementing CRM in an organization. The previous posts can be found here:
Part 1 - Justification
Part 2 - Overview

"Yeah, we had planned to bring up the decision for budgeting the new CRM system at the board meeting, but we had so many urgent issues that we just didn't have time. Maybe next time..."

Organizations everywhere are choked, especially the successful ones, the ones that have the resources to invest in CRM systems. The effect of this is that everyone can only work with the tasks at the top of their priorities. The first step of Kotter's 8 steps of change, is to create a sense of urgency. In the case of implementing CRM, this means that we have to be very specific about the effects of what will happen if do not implement this right now.

When doing this, we have to, as always, understand the receiver, understand this party's values and goals and try to address these. For instance, if the CEO is a very numbers oriented person you might try to work out how much time each sales person might save by using the new CRM and hence be able to put into working with selling more and generating x-% more income. If the CEO is more of a strategy and visions person, you might show her all the abilities she will get with the system and describing all the strategic advantages of this.

The bottom line is, you need to get the people with the decision power and the money to understand the importance of the CRM implementation project, in order for the project to be properly prioritized. If not, you risk being prioritized as number 11 in the list of the 10 item on the board meeting. And that dial does not go to 11.

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB