Saturday, March 18, 2017

Update on BPF gotcha

Wrote an article a few days ago on the BPF new architecture and effects that it might have.

I spoke with Roger Gilchrist, a Principal Program Manager with the Product team during the eXtreme365 conference and he mentioned that using the "Process Stage" fields are actually not supported if you read the SDK very closely. This document is a very long document and it is not very clear in the UI and there is no other very obvious way of solving triggering on stage changes than the triggering on Process Stage changes, with which he did agree.

The important lesson from that, I think is that not everything you see in the UI is actually supported for use.

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

Monday, March 06, 2017

Strange error when deleting managed Solution

Seems like that Dynamics 365/CRM doesn't catch all dependencies for managed solutions. This is how you can find and remove one of the tricky ones I got when uninstalling a managed solution which was:

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: During Solution Uninstall of Solution Id [solution-guid], cannot find any instances of the component with Component Id c97cd9d7-a0fa-4ed5-b360-3c2ad998a620 and Component Type 2.Detail: 
<OrganizationServiceFault xmlns:i="" xmlns="">
  <ErrorDetails xmlns:d2p1="" />
  <Message>During Solution Uninstall of Solution Id [solution-guid], cannot find any instances of the component with Component Id c97cd9d7-a0fa-4ed5-b360-3c2ad998a620 and Component Type 2.</Message>
  <ExceptionSource i:nil="true" />
  <InnerFault i:nil="true" />
  <OriginalException i:nil="true" />
  <TraceText i:nil="true" />

After some thinking I figured that this was probably a reference to an attribute (Component type = 2) with the Guid = c97cd9d7-a0fa-4ed5-b360-3c2ad998a620 so I opened another attribute and then cut-n-pasted the url. And it seemed that you didn't have to worry about the entity guid:


Change <onlineorgname> to your org, and <globalcrmcenter> to the crm-subdomain you are using, which for EMEA is crm4.

You will then see the field editor, and can then show the dependencies of the field and remove all of them manually to make sure they are not bothering the Solution uninstall. After that "publish all" and retry removing the solution.

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

Wednesday, February 08, 2017

Dynamics 365 new BPF architecture gotcha

The new Dynamics 365 release of CRM or as I like to call it 8.2, as that makes it a bit simpler. Dynamics 365 is a bit ambigious, it can mean AX and NAV as well and at the same time I want to discuss the platform and not just an app... so it becomes trick. I hope Microsoft figures some decent naming for the xRM part of the platform so we all have something to call it. (hint... xRM is a decent word)

Well, one of the cool new features of the 8.2 release is the revamp of the Business Process Flows (BPF) which now have gotten a couple of different facelifts, of which some are:

  • A new editor which looks identical to the Business rules editor. However, the Workflow editor is still very old-style... I wonder if this might be next. :)
  • BPF:s final stage can now be closed/or you actually close the entire BPF. This was not the case previously where the last stage simply sat there.
  • If you have multiple BPF:s and you switch between them, D365 will remember where you are in each of the BPF:s. This was not the case in earlier versions when it always restarted when you changed.

In order to handle the last point, the underlying architecture of the BPFs have been changed. Previously when you had an entity that was BPF enabled by a lookup called "Process stage" and when this changed you knew that the record had changed stage in the workflow.

Alas, in comes 8.2 on its white horse, and "Process stage" lookup falls dead to the ground like knight before a modern day tank. In other words, it simply isn't triggered.

The new BPF architecture is based on the principle that a new shadow entity is created for each BPF that you create. And yes, they are removed when you remove your BPF.

So, when is this typically a problem? The most common uses for triggering on stage changes in BPF is using a Workflow to trigger on changes in an Opportunity to set the probability. This is then later used in calculated fields like Weighted Estimated Revenue (not a standard field) and similar fields.

The effect upgrading to 8.2, which is just a minor upgrade from an upgrade perspective, is hence that these customizations that you might have done to set the probability, stop working and the opportunities get the wrong, 0 or no probability making any calculation based on this number incorrect.

So, how are you supposed to fix this? There is a new WF triggering mechanism built in to the BPF designer. You simply create a workflow that can be manually triggered, and drag a workflow compontent into the appropriate step in the BPF designer.

Do note that you can choose if you want it to trigger when the stage is started or completed.
BPF Editor with a workflow added with the Stage Entry trigger selected as highlighted

And this is how the workflows needs to look
This is the workflow that was selected in the BPF Editor above. Note the highlighted checkbox. This needs to be checked in order for the workflow to show up in the BPF editor lookup

A final comment. Even though the BPFs can now be completed, that does not mean that the final stage's Stage Exit is triggered. As far as I have understood it, it is still in this phase even though the BPF in it self is considered closed. I would call semantics on that. I hope Microsoft fixes that bug or enhances that lack of feature if they rather call it that.

Was this original workflow supported? Was it ignorant of your partner, you might ask, to create a workflow that triggered as described in the old manner and this has now stopped working and you
are faced with additional costs for fixing this? Shouln't they have known? Well, frankly no, your partner, if they followed what I described above, did make what are called "supported customizations" which according to the documentation from Microsoft is supposed to be upgradable. At least one major version, often 2 or 3 major versions This time it was not even a minor, from 8.1 to 8.2. Hence it is a regrettable situation but if you want to complain somewhere, I do suggest you complain to Microsoft.

Gustaf Westerlund
MVP, Founder and Principal Consultant at CRM-konsulterna AB

Monday, February 06, 2017

Finding URL to dependencies on installed managed solutions

Uninstalling a managed solution? (ie Deleting it) Getting a bad error message saying you can´t? (Cannot Delete Component) And you don't know how to find what the dependencies are for the solution? So did I. And perhaps you, as I, did not notice the small link in the dialog which says "Details" that takes you directly to the "Dependencies" page.

Click this to go see the dependencies for the solution,
or follow the instructions below to manually generate an URL 
So, if you did miss that, or for some other reason want to know how to get to the dependency page of a solution, read on.

I found this blog article:

which described how to find the dependencies in a nice way in a CRM 2013/2015 on-prem environment where you have access to the database. But I was using Dynamics 365 (8.2) so that was no option.

The one part you cannot do in an online instance, in that article is to open the SQL database, in case you tried. So the trick was to find some other way to find the guid of the managed solution and it is of course quite simple, just right click it and select "Email a link" and your favorite email editor will open with the guid shown and you just have to know which part to cut, see the picture below:

Cut the guid between the %7b abd %7d which are the { and the }

Then just follow the instructions from the blog above and insert the guid into the url provided:

https://YOUR CRM URL/tools/dependency/dependencyviewdialog.aspx?objectid=GUID&objecttype=7100&operationtype=dependenciesforuninstall

Replacing "YOUR CRM URL" with the url to your D365 and GUID with the guid above.

That got me to this page, which after some de-privatization looks like a document from the Swedish tax authorities:

Thanks again to InteractiveWebs for the original article.

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

Sunday, February 05, 2017

Emailing Queues internally - OrgDBOrg to the rescue

Using queues is in D365/CRM for managing functional email addresses is the the only way to go as
far as I know, unless you want to set it up as a full user, which I don't really see the point of.

I recently ran into an interesting issue with a customer pertaining to queues and that is when you want to be able to forward mails internally to users that are registered in D365/CRM. What happens is that with the standard setting you will get two emails. Hence, you might think that going into System settings and the email tab and unchecking the "Track emails sent between CRM users as two activities". However, this will have the unpleasant effect of disabling internal emails to queues, or in other words, if an internal user sends an email to a queue, to a system with this setting unchecked, D365/CRM will simply ignore the mail and not pull it into the D365/CRM.
By RRZE - Own work, CC BY-SA 3.0, Link

So, do we have to choose between duplicate emails for internal users and being able to send emails from internal users or not getting duplicates and no emails from internal users? Well, no, there is a very special set of settings to the rescue, OrgDBOrg, which are described here:

There is a setting here called: DoNotIgnoreInternalEmailToQueues which by default is set to False. So, if you uncheck the "Track email sent between to activities" and then set this to True, the system will not ignore your internal emails.

A small word of caution, OrgDBOrg settings are fringe (but still supported) settings which hence are probable not as tested as normal settings in D365. I would hence recommend that you only use OrgDBOrg setting in the case you need very specifically them.

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

Wednesday, February 01, 2017

Dev L300 Training in Stockholm!

George Doubinski is coming to Stockholm and he is going to be holding a very rare level 300 (= advanced) Dynamics 365 developer training.

George is an MVP and a good friend of mine and one of the bright beacons in the D365 community, co-founder of both and . He is an excellent developer who told me that he is always striving to learning something new. Last he said his goal was to learn a new programming language every year. And to top that off, he is a great presentor and teacher as he is a lot of fun to listen to and almost none can match his skills when it comes to coding in Dynamics 365.

We at CRM-Konsulterna were very happy when we were able to convince him to come to Sweden and Stockholm and teach us some of what he knows! He lives in Australia so this doesn't happen often.

Read more about it here:

Hope to see you there!

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

Wednesday, January 18, 2017

Warnings mean something - don't just click them away

Warnings like the one you see above, I often see in my customers systems when rudely looking over their shoulders. And what do they do? Call support and tell them that there is some weird error about email coming up and that there must be some error in the CRM-Exchange inter-server email synchronization mechanism? No. They don't. They ignore it. Totally. Every time. They typically get a bit annoyed every time and think the system is a bit crappy but they ignore it. And we as their CRM-partner might never know that there is anything wrong unless we have very deep monitoring of their system (has anyone built this? Would be a great tool! Tanguy to the rescue perhaps?)

Well, as you guessed I don't agree that you should just click away these error messages or actually any error messages. They usually mean something. In the case above, there is something wrong with the synchronization of emails, why emails that have be written and sent in CRM have not been delivered. Once fixed, these WILL be sent, which might be a bit problematic. Once, maybe 6 or 7 years ago, we had a customer who had had problems with synchronization of emails and hadn't told us. We got to know during our summer vacation (don't you always), and when we fixed it, the CRM system sent out loads of old emails to their customers. Which was not really appreciated. Well, we all do misstakes, but not all learn from them. So, do check which emails have Status Reason"Pending Send" as you can see in the picture below.

Having emails with this status for more than 24 hours is also what causes the alert at the top of this post. So, before fixing Server Side Sync, the Email Router or installing Outlook clients, do check this list to make sure that there are not a lot of old emails that will be sent to your customers and contacts. Advanced Find is very useful if you want to find them all, and not use the built in view that I am showing above.

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

Monday, December 12, 2016

Beware of Legacy forms and how to fix broken case forms after upgrade

Been working with the upgrade of a customer from CRM 2013 to CRM 2016 on-prem and we ran into this weird error. The case form didn't want to work after upgrade if we didn't turn of the turbo forms. For those of you who are not aware of this, in 2015 Spring wave, there was a revision of how forms were loaded, called the turbo forms. After this version there is a setting in the first tab of System Setting where you can turn on "Legacy form rendering" if you want to go back to the old rendering method.

However, we noticed some other strange errors, for instance bool fields with Yes/No values with No as default, were shown as "False" when the form was in create state. Once the form had been saved this error went away.

Another error we saw was that if you tried to save emails, (not send them), you got an error message. The email got saved anyway, but you got a nasty message.

However, if we switched back to turbo forms, both this email error and the bool-error disapeared. Hence, it seems the legacy form controls are not nearly as well quality tested as the turbo form versions so I would strongly suggest that you do not use them unless you have no other option, and then try to move away from them as soon as possible.

So, trying to stick to my paradigm for troubleshooting; "Find where the error is first, then what the error is" - I wanted to go back to the case entity and find out why the turbo forms didn't work.

Rickard and I, who were troubleshooting this together, enabled the dev-mode in IE (pressing F12, if you don't know it) and opened a case. The odd thing was that the point where it broke was in one of Microsoft's functions. I have been unable to recreate the error now so I cannot show it. And after some nitty gritty debugging in IE, we found that the script seemed to be missing "productid" and "primarycontactid" or in laymans terms, Product and Contact.

So, I added them to the case form, and magic! It worked.

But the story doesn't end there. As I thought that this might be a good blog article and I wanted to recreate the error to have as a screendump, I removed the fields again... and mark my surprise when the form still worked... twilightzone.

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

Sunday, November 20, 2016

Getting started with AppDesigner

During the CRM UG Summit I was approached in the Medic booth by two nice guys from Microsoft  who asked me if they could show me and get my opinion on a new feature of Dynamics 365. It was the AppDesigner. There had been so much hype around a lot of the other stuff (editable grids, editable grids, editable grids) that I hadn't noticed this and when they showed it and I had time to think about it I recognized that it is really a cool and useful feature that I think can do a lot of good in the system.

One of the things I try to evangelize about is to slim the system down, not "dumb it down" but make it slim, and efficient to what you are trying to do. Hence not include a lot of unnecessary stuff. The AppDesigner is excellent for this, it creates subsets of Dynamics 365 (not operations/financials) into what are called apps. With their own sitemaps, view sets, form sets, business process flow sets, chart sets.

I made another film about this, on how to enable and get going with it. Why not watch it?

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

Tuesday, November 01, 2016

Video - How to enable editable grids

So, time to try something new. I recorded a small screencast with SnagIt to show how easy it is to enable the awsome new feature Editable grids in Dynamics 365. So, please have a look and let me know what you think!

And yes, I know I keep saying CRM, and Dynamics CRM. I have been working with this product for more than 11 years now. It's going to take some time for this old dog to sit.

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

Dynamics 365 is up!

It is here!

I just spun up a trial of Dynamics 365! So do it yourself and go check out all the awsome cool functionality everyone has been talking about!

For now, this is news enough!

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

Monday, October 24, 2016

Extending Max amount of components on dashboards only for onprem

Some of you might have found some sites like this
I, Soupeurfaive, via Wikimedia Commons

or even the original MSDN or Technet sites regarding how to be able to change the maximum amount of components on a dashboard from the maximum of 6 to for instance 8 using PowerShell.

On the MSDN and Technet pages there are some default CRM version text in the header and footer but make no misstake, you can only do this change in a CRM onprem environment where you are the deployment admin.

As the change is deployment wide and you need to have deployment administrator access rights, you are also extremely unlikely (unless you have a dedicated Online environment) to get that set.

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

Sunday, October 02, 2016

Dynamics 365 and the hopes for the Common Data Model

As many of you probably have heard Dynamics CRM will as of Nov 1 2016 be part of Dynamics 365 in a commendable push from Microsoft to bring the Dynamics products closer together. This is partly a branding thing as the products themselves, as Dynamics CRM, will still be the same product from a technical perspective, at least in the Enterprise Edition, (little is known of the Business Edition) and partly a technical concept as they are introducing something called the Common Data Model which is canonical data model (unified data model) to which all "Apps" are integrated to automatically. This is what I wanted to discuss some.

This all sounds great, and I will admit that I havn't had time to fiddle with it yet, but I have had the pleasure of working with quite a few integration projects between CRM and ERP. And that is not easy, even if you do have a ready made point-to-point integration. So I would just like to make a few points that I hope you do consider before switching it on and hoping it will solve all your issues.

1. Addresses in ERP and CRM are typically not the same. In ERP the addresses that are needed can typically be invoicing address and delivery address, while in CRM the most important addresses are visiting address and postal address. If you naivly presume these to be the same the effects can be dramatic and sometime even catastrophic. I friend of mine, Peter Björkmarker, told me a story of a company integrated just like this, and as CRM was set as the customer data master, it overwrote all invoice addresses in the ERP system with visiting addresses. Next month, all invoices which were sent out were automatically, without anyone noticing sent out to the wrong address, hence nobody paid them. The company got into an accute cashflow problem and almost filed for bankcrupcy. So this is no joke.

2. Ready built integration are usually on a technical level, but you expect it to work on a business level. Integration technology is usually about moving data, but just having the data in the other system doesn't always DO anything. An example is if you have a boolean field on the customer in the ERP where the financial people can block the customer from further business if they havn't payed their invoices. So you integrate this field to CRM and can now see it on the account form. But without any additional logic in CRM it will still be possible to create opportunities, quotes and orders. Maybe not what you would like.

3. Data structures are different. My colleague Rickard Norström, whose blog you can find in the list to the right, was part of a CRM project which integrated to Dyn AX. One of their issues was the AX address data structure. An address record in AX can be used by both an account and a contact, And I think even several accounts. When this address is changed, of course this is seen in all affected places. As this is very different from the customeraddress built in logic in CRM they had to create their own new address entity to solve this. Other typical areas where there are large differences are in the logic of setting prices on opps/quotes/order. As you can expect, a system like AX with MPC and many other deep links into costs can of course use that as a base for pricing, something that is very hard for CRM. It also has more complex or just different ways of handling pricelists. I was working with an iScala integration and iScala for instance can have a current price in a pricelist and a comming price with a specified date on which the new price will be enforced. However, no event in the system will trigger at that time. Customer specific pricelists are also something that occur, not advisable but existing especially for larger customer accounts.

4. Centralized integration architecture. The Common Data Model sounds great but it only handles two of the components in the Business system infrastructure. If you for instance are a Telco the amount of business systems will be a lot more, billing systems, provisioning system, logistic systems, product configurators, etc. Banks are also complex worlds. Many of these have tried to consolidate their integrations to integration hub technologies like WebSphere or BizTalk and if done properly they will of course have their company defined canonical data model. It would be interesting to see the story of how the Common Data Model works together with this. It probably can by shuffeling data using Logic Apps to and from the CDM, but in essence you will have two hubs to orcestrate. Another option is of course to use the CDM as the central hub for all information, as long as that is extendable and doable. So, from this perspective, the main issue is probably, if we have 8 systems connected to our existing integration hub, is it plausible to use the CDM or do we manually integrate anyway directly to each application?

To conclude, I think the CDM will be a good tool but I will keep my expectation to a reasonable level and I recommend you do this too. Do not think it will make your highly customized CRM and AX automatically integrate all data and make it work from a business perspective, that would simply be too increadible. If they manage that, I will buy the entire team building CDM a beer (or similar).

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

Monday, September 12, 2016

xRMVirtual Presentation

By Charlotte S H Jensen - Flickr: Maskiner på Brede Værk, CC BY-SA 2.0,
Ever thought about the fact that there nowdays are so many ways that you can create logic in CRM?
Or did you start with callouts in CRM 3 and then learnt plugins in CRM 4 and have stuck with those, I mean, why change?

If you are interested in discussing this and listening on my views, join me on September the 27:th at 9:00 PST/18:00 CET when I will be presenting on xRMVirtual on this topic.

Hope to see you there!

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

Monday, June 13, 2016

Microsoft + LinkedIn == True

Todays biggest news in the Microsoft sphere is of course that Microsoft is to aquire LinkedIn for the
astronomical sum of $26.2 billion. This is hopefully great news for us in the Dynamics CRM world as LinkedIn have during the last couple of years been very protective of their data by not opening up, even with payed subscriptions, their API:s for integrations.

Imagine how cool CRM married with LinkedIn data looped through Azure ML would be when trying to find out how to get a good entry point on a opportunity. And that's just the beginning. Let's see what Microsoft does with this. They have a few dollors of synergy to win back.

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

Sunday, June 12, 2016

New colleague blogging!

Sofia Sparr
I love when the community grows. I was recently at eXtreme CRM in Warsaw and talked a lot to
people about trying to share to the community and of course this is also something I advocate a lot to the people I work closest with.

My close colleague Rickard Norström has a popular blog on which he shares some of his insights from his work and now another colleague has chosen to join the merry gang of bloggers at CRM-Konsulterna, something that I of course have to tell the world about.

Her name is Sofia Sparr and she is a technical application consultant who also does project management. She focuses on marketing areas in our company, but will of course work with CRM in general as well. Due to this fact, she is certified in ClickDimensions, and will share some of her insights in that product and how it works in real life with you. Make sure you head over to her blog and check it out! Sofia's Blog

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

Sunday, May 29, 2016

Which browsers are actually supported?

I sometimes get people complaining to me that CRM doesn't work in Firefox. What i usually ask them when I hear this if they are running Mac, which of course is the reason why it isn't working. 

The simple fact is that Firefox isn't supported for Mac. The only supported browser for Mac OS X is Safari. And Safari isn't supported for PC.
Below is a simple matrix showing the support matrix for the browsers (for CRM 2016).

Windows 7
Windows 8/8.1
Windows 10
Mac OS X
Google Nexus 10 Tablet
IE 10

IE 11





Green = Supported, Red = Not supported, Grey = Not applicable

However, do note that there is a difference between "not working" and "not supported". The latter just means that you can't open a support case with Microsoft and complain that CRM looks weird in some of the non supported combinations described above.

So why is this? Are Microsoft just lazy? No, Just like everyone else, they have a limited amount of time, money and resources. So, they can't test all possible combinations unless the price of Dynamics CRM were to go through the roof, and I think we all agree that we prefer it not to.

Do refer to the official documentation from Microsoft on what is supported for more detailed information.

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

Tuesday, February 09, 2016

Tips when migrating using Excel

The Excel import functionality in Dynamics CRM is quite good. Version 7.1 (2015 Spring Wave) introduced some new features, like finally being able to work with xlsx-files which helps out a lot.

Generally we recommend using ETL-tools like our favorite KingswaySoft in SSIS, and sometimes the only way to migrate really complex data is to write your own code, but it usually isn't necessary (if you disagree, please leave a comment below!).

However, both ETL and especially code, takes some training to get going with and some of our customers and others I have spoke to have expressed a will to handle migration themselves which makes the Excel import the best candidate to work with as most people have experience with Excel.

First of all, my recommendation is to complete the customizations in the target system. That way, when you download the Import templates, you will get all the fields that are shown on the "standard" (fallback) form.

Excel Account Import Template (Swedish) from CRM 2016
As of CRM 2015 Spring wave (7.1) the Excel import template will be formatted as a excel table, which makes it easier to work with, I think.

During the work with migration of data, you can correct data in one of three places.
1. In the source system.
2. In the Excel files while transfering it.
3. In the target system/after migration

Typically the time when the live migration needs to be done, is as short as possible. As everyone needs to stop working in the old system, migration needs to be done, and then everyone can work in the new system. Hence it is typically done during evenings, nights or weekends, depending on which type of business you are in.

Due to this, you need to make sure that when you are doing the real live migration, you need to make sure that it will be as controlled and as smooth as possible. This requires you to first set up the migration and then test it properly. Dry runs are therefore a must unless you are CRM Rambo.

If you plan steps in the migration in the above described stage (2) - during the transfer, you will need to re-do these every time you do a dry run and when you do the live migration. If possible to change the data in the source system instead, for instance remove duplicates, you reduce risk and speed up the migration process.

Generally it is a really good idea to try to clean up you data before migrating it. Many are the CRM system owners who have understood quite a lot about how their users actually use the system, when the are to migrate the data and really start digging their head into it.

Some of the common problems when migrating with Excel are:
  • Complicated to handle GUIDs - ETL tools often have ways to migrate the GUID from a source system, very useful if moving from CRM Onprem to CRM Online.
  • Cannot handle updates/upserts easily. Can however upload several files at once instead. For instance, contacts have Parent accounts, and Accounts have Primary Contacts. Just make a zip with both xlsx-files and upload. CRM will figure out that they are interdependant.
  • Duplicates. Duplicates. Duplicates. So you switched off the duplicate detection for accounts and thought you'd be fine? Well, not so much, lookup fields to account, for instance, by default, will use the primary field, which is "name" and if you have several accounts with the same name, the import function will not know which to select and you will get an error. Typical fields where this is a problem are:
    • Contact - Parent Customer / Company (pointing to account)
    • Opportunity - Potential Customer / Account (pointing to account)
    • Opportunity - Contact
    • Account - Primary Contact
    • Account - Originating Lead
    • Contact - Originating Lead
    • Opportunity - Originating Lead
  • Only active? Are you only going to import active records? Will that work? Do active records have relationships to inactive records? For instance, you might have an active account that has an inactive primary contact. Or active accounts with inactive parent accounts. If only moving the active accounts and active contacts, the import will fail as the target system will not find the primary contact.
  • Activities. The activity parties, in other words the "to", "cc", "bcc", "required", "optional" etc. fields on activities are handled by a rather complex mapping entity called activity party. There is some support for migrating this with Excel but it is not very easy, so if you do have a lot of activities to migrate, I would strongly recommend using an ETL tool with support for activities.
  • If you add a column to the CRM 2016 Excel Template, despite having the Display name in CRM, it will not be automatically mapped like the other columns as there is underlying data to handle it. It is no big issue as the import mechanism usually interprets this correctly anyway. Do note that the Display name mapping is case sensitive and CRM does allow for duplicates in fields having the same Display name, but that doesn't make importing easier.
Some tricks that I use
  • Generate an import template for the entity at hand, let's say account from the target system, then remove all the columns you don't want to import. Remove the entire column. Save this. Verify the template by filling in one or two rows by hand and importing. Make sure that the lookups match data in the system.
  • Export data from the source system in the same order to match the import template, if possible, into Excel. Then, verify that all columns are identical (ie. picklist are the same etc.) and then copy-as-values from the source excel sheet to the target excel sheet without the header columns.
  • Verify that the data in the target excel sheet is correct, that for instance there are cities in the city column, not street names.
  • Then import the data into CRM. The first couple of times you will get errors. If you don't you are very very lucky. Migrating data is complicated, as data is seldom clean and well ordered. So, when it is done, go to the imports section in CRM and go through the errors and try to understand what it is trying to say. Typically a specific lookup cannot be found or it has multiple values. My suggestion is to fix it in the source data (1 in the list above) and not try to do it in the Excel sheet (2). Also plan for making several test runs of migration. Write down the steps you need to do when doing it live, so you have your plan set.
  • When importing data with lookups to data where there are lot's of duplicates in the primary field, do note that you can change the mapping of the lookup field so that it mapps not on the primary field but on some other field instead. For instance, if there are several accounts with the same name but all accounts have different account numbers, you can use account number to indicate parent customer on a contact instead and then change the mapping when importing.
  • Make sure that if you do change data in Excel and use formulas, copy and paste-as-values back to the cells/columns as the import does not support formulas. (not sure if the new CRM 2015 Spring Wave/2016 does, havn't tested, but I wouldn't provoke it.)
  • All picklist values need to exist. Using the import templates is a good tool here as they include the possible values. But you can paste incorrect data into the cells anyway and then import it where you will get errors on the rows with the incorrect data.
  • Decide what is a good enough result before. Is 99% good enough? That would mean that if you have 100 000 accounts, 1000 accounts are not imported... so maybe that is not good enough. Remember Pareto's law, that the last 20% take 80% of the work. So fixing the last 1% can be a real pain, why it is sometimes easier just do fix it manually after import.
  • Zip files with inter-dependencies. Like account-contact.
  • You can increase the max file upload size. but the max size for a file after uncompression is still 20 MB, if I am not mistaken. This means that you need to think about how you upload your data if you have large amounts of data. ETL tools might be a better option here as well.
  • After getting errors and getting an import of let's say 50%, instead of trying fix the last 50% and importing those, I recommend deleting all and going back from the start. As you need to plan for doing many trial runs before doing a live migration, this is the only way to make sure that you get the source data better and better.
If you have done your own imports and migrations with Excel, I am sure you have some tips of your own, please share them below! I do moderate all comments to avoid spam.

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

Monday, December 21, 2015

Follow up to 10 Tips on success when implementing/designing CRM

The previous article on 10 tips for success when designing solutions when implementing CRM Solutions was very well received by many of you! It is always heart warming and encouraging to know that the work put into the blog is appreciated.

Last week we did an CRM UG Encore on this subject, so if you want to see this presentation on the net you can do so by viewing the recording here:

Marcus Erlandsson at CRMRocks ( also had a nice chat with me on the subject and I must say that the discussion we had really gave it something extra. If you like the subject, listen to all of it, and do miss the other nice stuff Marcus has done.

I'm in the middle of trying to move some AD:s, not my cup of coffe, but someone gotta do it, and it's too close to x-mas to get help. Wish me luck... not sure I will be able to blog before christmas so Merry Christmas everyone!

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

Thursday, December 03, 2015

10 Tips for Success designing solutions for Dynamics CRM

A few weeks ago I was in Reno, attending the CRM User Group Summit as a presenter and of course CRM UG Medic. My most visited presentation with more around 80 participants, was on 10 tips for success designing CRM Solutions.

The general idea is when designing solutions for Dynamics CRM there are some things that you have to take special care for and that I often see people missing, so it is partly in the positive, ie DO this, but also in the negative, DON’T DO this.

1. Most important issues first

Make sure to focus on what is really important for the business when implementing CRM. Too often focus is put on technical details instead of the issues that really make differences for the business. Like making sure to never miss a quote, never miss following up a lead and how the system is to support this.

Sadly often a lot of effort is instead put into making more or less perfect solutions, especially when working in more classical waterfall project methods when it is not uncommon that an improportial amount of effort is put into fixing rather insignificant features and features of high business impact are almost over looked as “trivial”.


Base your requirements on Microsoft CRM. Not on a blank sheet of paper. Some organizations start off with trying to set requirements in a very general which might be useful if you do not know if it is a CRM system that you are choosing. However, the market is changing and more and more customers are becoming more and more aware and have come further in their decision process prior to contacting a partner or setting down any requirements. This usually results in the fact that many organizations buying CRM already have chosen a CRM system when contacting a partner, and hence defining requirements from the bottom up is not very useful, it is a lot better to start from the system that has been selected and based on this, look at what is missing.

Other beneficial aspects of this can be that when defining requirements without the context of a system, it is easy to get fixed on a certain way of solving a problem. If instead, starting with a particular CRM system, it is much easier to define what is missing or what needs to be changed in order for this system to work for us, without being locked down by previous conceptions of how a particular problem should be solved that were agreed upon during the requirement gathering/analysis phase.

The most typical non-fit-gap requirements I have seen are public procurements. In these cases the procuring entity believes that it is more objective to not decide on a system before hand and hence define the entire CRM system in the requirements. It is not uncommon in these requirements to see requirements such as:

·         Ability to list all companies showing name and address of company

·         Ability to edit company information from several different computers with different user logins

And so on.

Imagine trying to define all features of Dynamics CRM this way. Horrible.

It is much easier to start with let’s say Dynamics CRM 2015 and then have requirements such as:

·         New field for storing Company Credit Level on account in the following levels AAA, AA, A, B, B-

·         Only specific group of users are to be allowed to change Company Credit Level on account.

It becomes a lot more to the point.

3. CRM Functional Knowledge

Know what Dynamics CRM does from a functional perspective out of the box.

-          What is Sales Force Automation?

-          How does customer service work?

-          What is customer centricity/360 degree customer perspective?

-          How do you manage a campaign in CRM?

These are things that the people involved in implementing the CRM system need to know. I have seen many implementations where this skill is lacking, it can usually result in existing features being recreated with code, increasing total cost of ownership for the solution. It may also reduce the ability to install addons as these usually are based on the built in features being used.

4. CRM Technical Knowledge

Technical knowledge of the platform is also a vital skill when implementing CRM. These skills include;

-          Configuring CRM

-          Developing CRM

-          Installing CRM On-Prem

-          Setting up CRM-Online

-          What are supported customizations

-          How to minimize TCO of customizations/developments

-          Peculiarities of CRM

o   Native vs manual N:N relationships

o   Date only limitations of multi time zones

o   Visible data model

-          Best practices of developing in CRM

o   Using solutions and publishers

o   Application Lifecycle management (ALM) with Dynamics CRM

o   Solution framework limitations and deployment strategies

As these skills range from high level solution architecture, system architecture to developer and application specialist, it can be hard to find people to fill all these skills.

Due to this reason, it is not uncommon that companies employ technical people without specific Dynamics CRM skills. This often results in data models that are suboptimal with too high level of abstraction, which can be a good idea in a classic code-db application where the data model can be hidden, however, in CRM where the data model becomes very visible, this is not a very good idea.

Another common problem I see is that application specialist with too shallow technical skills are charged with designing data models. This can result in data models that store data in the wrong places, for example account information on contacts due to not truly understanding how where information belongs. These people often also lack the skills of designing more complex data models required for complex problems, which cannot be solved with a too simplistic data model.

5. Business Knowledge

How does the customer’s business work? Sad to say so, but someone actually has to know this when implementing the CRM system. It seems obvious to most of you I hope, but trust me, I have seen and heard the weirdest things, like “oh, you want to book meetings with a customer several times, well, you should have said so”. Some things are so self evident that most people would never think to put them into a requirement.

This skill cannot only be on the customer side, people with some technical skills have to have some business skills as well. Common examples can be that an organization that are moving from an old CRM-system to a new are using sub-optimal business processes due to the fact that the old system limited what they could do, or they might have grown or transitioned. When challenging the business processes that are put into the requirements, it might soon become evident that the best action might actually be to reengineer the business processes to make them leaner and better fit the new organization and also what the new system actually can do. The benefits of this can be many, like faster processes involving fewer steps, higher level of automation and higher quality control abilities to mention a few. However, it is important to understand that it is also scary for an organization that thought they might just start Dynamics CRM Online to get some boost in their sales who start to realize that they might need to undergo a larger organizational change management effort, whatever the potential long term benefits of these are, as not all organizations have the luxury of being able to act in a long term fashion. Hence approaching this subject carefully, is probably advisable.

It is also essential to have a clear high level vision for what role the system is to play, what is its purpose? Sometimes this vision is either non-existent or very blury resulting which makes it complicated to prioritize and focus the implementation on what is important. A simple verison might be to make sure to never drop a single lead and follow up on every quote in a timely manner. Then that vision can guide prioritization of requirements during the implementation.

I have seen this lacking often in several different ways. Sometimes it is simply that a customer explains how they work and then that is implemented, even if the underlying processes that the system is to support are obviously sub optimal, without any discussion with the customer. Many customers I work with, appreciate it when I ask why they want to implement something a certain way, why they work a specific way and what the business goals they are trying to support with the process are.

Another common error I see is that when Dynamics CRM is to be implemented, the requirement is “It is to work and look as much as the old system as possible, but with all the cool features of Dynamics CRM”. This implicitly means that all the old processes are to be used, nothing is to be rethought or reengineered despite the investment in the new system. These implementations very seldom become a hit, and the TCO of maintaining them are usually a nightmare since a lot of code and weird customizations are required to make the system act and look like the old. And the fact is that it never will, especially if the old system was a tailor made, since those systems will always have specific areas which will have an edge on an off-the-shelf system like Dynamics CRM. The benefits of a system like Dynamics CRM are that you will get so much more bang for the buck in OOB features, investments and maintenance that it will be worth it every day of the week, as long as you are can stay within the bounds of what the application supports.

6. Business Goals and requirements


The picture above shows the typical process of how functional and non-functional requirements are based on business goals and then technical requirements are based on functional requirements.

What I have often experienced is that customers come to us directly with a technical requirement, for example “Please put a dropdown with the values X, Y, Z” on the account form.” Without actually describing the functional background to it or even less the business goal behind that.

The other common scenario, typical in large tenders, like public tenders, are that the different parts are handled by different people and you are handed a list (in excel typically), with a list of technical or sometimes functional, requirements to which you are to respond to if you and your proposed solution can meet to a different defined degrees. Sad to say, but these lists often set me off laughing, but I guess I should be crying since it is sad, as it is a very sad way of trying to handle requirements.

The people trying to describe these requirements, if they are technical requirements would need very high level of expertise in Dynamics CRM to be able write the requirement properly, and hence almost already have designed the system, pulling out the mat from under the feet from the supplier as this is typically what you would expect them to do.

Hence the arrows underneath pointing back, which indicate what I recommend, that is to never accept a technical requirement without understanding the functional/non-functional requirement behind it and also the business goal behind that and making sure that the technical requirement is actually the best way of solving that part of the business goal and functional requirement. Perhaps both the functional requirement and the technical requirement should be re-written to give a better fit to the system. To some of you, who are used to working in what is called fit-gap perspective, this is a more natural way of working, where you start with the vanilla system and see what is missing from there.

If done properly, and with the trust of the customer, this can greatly reduce the costs of implementation and maintenance. For example, implementing a technical requirement a specific way might require creating or purchasing a third party editable grid, as the technical requirement describes that changes are to be able to be done directly in the grid. However, when the business goals are examined, this might not at all be so critical, it might just be that it the person who wrote the technical requirement didn’t know that this is hard to implement, and by changing this so that changes are done using a standard form, the implementation can be greatly simplified.

The hard part of trying to understand the entire process, from business goals through functional requirements to technical requirements and how these fit Dynamics CRM and then being able to reverse the process

7. User centric

Make it productive and they will use it! Business managers are naturally the people setting the requirements for a CRM system but it is important to remember that it is the normal end users that are the ones that most often will use the system. When working with sales force automation, I often say that it is important to make a sales automation system, not a sales manager automation system. It is sometimes better to have a system with 95% or 98% of all customer records up to date but with only a few fields than 60% of the all customer records with all fields you could fathom.

As far as I have understood it, during the late 1990:ies a lot of CRM-implementations failed and for a few years the entire industry had a down period. Microsoft, when envisioning Dynamics CRM, looked at what the reasons were for the failures of these old systems and found that carrots and sticks had typically been the only motivators used, which had a very limited success rate. Based on this, they decided that a better approach would be to focus Dynamics CRM on personal productivity. Or in other words, making the system so usable for each individual in their own work that they choose to use Dynamics CRM instead of other alternative programs. Despite the fact that Dynamics CRM is based on this principle, it is also very versatile and has many customization options, so this vision for individual business productivity, can easily be broken by an implementor not adhering to this concept.

Consideration also has to be taken on what will happen if your system is not engaging enough, if users do not find it useful enough, my typical answer is that they would probably use Excel to keep track of their personal items. Excel is a hugely versatile tool, especially for 1 or only a few users on the same file. Hence, your mindset should always be to be a lot better, for each individual user, than Excel.

There has been a lot of research on the subject on how to motivate people and what does not motivate them. The interesting thing with this is that it shows that monetary motivators only work for manual labor, not for more creative or more cognitive work. Hence it is also important to align the system with this. If you want to see more on the subject, here is a YouTube clip showing it in a popularized version: 

8. CRM System is just a system

Microsoft Dynamics CRM is just a system after all, and it will not fix broken processes or broken organizations. For this you need good management and perhaps even the aid of good management consultants (note the word “good”, not just any management consultant will do here…).

Sometimes people call me and ask me to install Dynamics CRM so that they can get their sales sorted out. Or they call me say that they just installed or activated CRM Online and want some training. This rings some warning bells in my head and I hope it does so in yours as well.

Sometimes happy salespeople, working both with Dynamics CRM and with competing software, promise the world with the CRM system. “Just start using the system and everything will sort it self out! You’ll see!” – well, I’ve been in a couple of implementations (somewhere between 50 and 100) and that’s not what I’ve seen.

If the organization already is using a CRM system and you replace that with Dynamics CRM, then your chance of success, is of course higher, as the company culture already includes working in aligned processes in the CRM system. However, if it doesn’t and the organization is just implementing CRM from scratch, which is where you have the most to gain, you also have the most to do as people are usually not aligned in harmonized processes but work as the like in their own separate ways and trying to force a CRM system on top of that will just not work.

9. Align with release cadence

So, you have designed a great solution, 230 new entities, approximately 2 M lines of code ontop of Dynamics CRM Online, customer is buying, sales guy is getting a huge bonus and your manger is happier than ever. Looks like you are set for life.

And then Microsoft rolls out a new version of CRM Online every half year and you never manage to finish your project as more and more development effort is put into maintaining the code for every new release. Customer is not so happy any more, sales guy has quit and moved to another company, and your manager is wondering what to do if the customer actually will sue, as they threatened to do, as you broken deliver plan after deliver plan. You seriously consider changing jobs but wouldn’t it be nice to have finished this properly?

Not sure if the story above is true, but it wouldn’t surprise me. Microsoft have decided on an aggressive release cadence to be able to bring new features to the market in time. Independently of if your CRM is in CRM Online or on-premise you need to establish a strategy for how to handle upgrades. With CRM Online, there is not that much lee room but with CRM on-premise you can for instance have a strategy of upgrading every other version half a year after the release. That will make it a lot easier to plan for it.

If you are not aware of it, the release plan from Microsoft are that the major versions are release late in Q4 and the minor version (only online) are release in Q2.

10. Addons

There are a lot of addons available to Dynamics CRM and these can bring great value to you system at a low cost. However, you do need to think about the kind of addon you are installing. I like to do the following classification of addons:

1.       CfMD

2.       Dedicated product company

3.       Other CRM Specialist

4.       External Addon supplier

5.       Open Source

Note that these are not in any falling order. I will try to elaborate a bit more on each of these.

CfMD – Certified for Microsoft Dynamics

A product for Dynamics CRM (and the other Dynamics products) can get the CfMD – certification by going through a process which is rather bureaucratic and at the time of writing this post, broken. However, to get you product certified you have to jump to quite a few hoops which is costly and requires that the product has been on the market for some time as one of the hoops is that it has to have some customer references.

Dedicated product Company

Most of the companies suppling CfMD products are dedicated product companies. This means that their entire existence is based on selling products and support of their products. Hence they are very keen to keep up with Microsoft’s release cadence and have a well-functioning support organization.

Other CRM Specialist

These companies are typically system integrators, consultancies, value added resellers and similar. Their focus lies more in one-offs, understanding the customer’s needs, adapting Dynamics CRM to those needs. Some of these companies have decided to try to make products out of what they have learnt from several project. These might be horizontal solutions, such an integration product to a credit service, or a vertical like a financial services solution. The upside of this is that these companies usually have a deep understanding of CRM and the product they make is usually technically sound. However, the downside is that they are at core not a product company, they sell services. This usually surfaces in two manners. One is when the software needs an upgrade. In this case, a normal product company will have thought of this, in their normal product roadmap which of course is in harmony with the Microsoft cadence. Hence the license cost at a dedicated product company covers the upgrade cost. However, the service based companies typically do not have this mindset. They think more in trying to sell hours and will therefore try to get a customer to pay for the upgrade project, which sometimes succeeds due to good salespeople.

The other time it surfaces is in support. Dedicated product companies usually have support included in the subscription fee/license fee but service companies sell services by the hour and if you call a consultant, you will be charged by the hour.

Do note, that these are generalizations and there are of course exceptions to these, but my general recommendation when looking at addons is to look just as much at the company supplying the addon as on the addon itself. You will probably be entering a relationship for some time so it had better be a good company.

External Addon supplier

These are tricky, typically a company with a particular product seeing Dynamics CRM:s position in the market and wanting to integrated with it so they make their own integration, for CRM 2011 and then they don’t keep track of time and cadence. As an example anyway. Can be CTI integration to a VoIP phone, even certain verticals. I have just as recent as last week gotten a request from a customer for a training for CRM 2011 due to a addon not being upgraded. I have also had requests from new customers saying that they would like CRM 2011 Online as they want this and that addon and it only supports CRM 2011 Online. In Sweden we have a company supplying company credit and financial information which had an integration made, and not upgraded.

Open Source

There are many open source projects for Dynamics CRM. Many people love open source and it can sometimes be nice but you need to be very careful about it as you have no control of if the people developing the product will continue doing so or not. Also there is typically no support to get. However there are some great indispensible open source projects for Dynamics CRM, most namely xrmToolBox, by Tanguy Touzard which included a ton of nice tools.

+ Be part of the community

Number 11, I just couldn’t leave this one out. Of course you should use the great Dynamics CRM community. There are tons of great blogs and stuff on forums. So if you goog… Binged your questions a couple of times too many, don’t be afraid to ask. And you don’t have to be best in the world in a subject to share. Remember that everyone has always been a beginner, and might want to learn from your road to greatness. So, start your CRM blog today. It is never too late, and never too late to take it up again if you stopped.
Gustaf Westerlund
MVP, Founder and CTO at CRM-konsulterna AB