Performance analysis of Dynamics CRM

Performance analysis of Dynamics CRM

Today I was helping a customer out that have experienced rather bad performance of the CRM system.

They described the performance as being bad in Europe (the server being hosted in Sweden), it was quite obvious that the problems do not originate from network latency, which can be an issue if performacne problems are experienced from the other side of the world (ex. from New Zealand with servers in Europe).

One of the most common problems with performance in CRM systems is bad SQL performance. In large installations, this is usually due to bad SAN (Storage Area Network) configurations from a SQL perspective. As CRM is meta-data driven, it is quite database heavy since it cannot be fully database optimized like custom made ASP.NET applications. Hence good database performance is vital to a rapid CRM.

This is also evident in the large scale performance test that Microsoft have done with 150 000 concurrent users, where the setup was based on High-performance SSD:s in RAID configuration to enable the scale of the test. Read more about it here: http://www.consultcrm.co.uk/sites/default/files/microsoft_dynamics_crm_2011_performance_and_scalability_with_intel.pdf

A very good tool to use for benchmarking the disk performance on a server is SQLIO which can be downloaded for free at Microsofts site.

The two parameters to look for are IO and throughput. Do bare in mind that many SAN:s have caching which can make results strange, so it can be a good idea to try to increase the test file size. Also make sure to put the file on the drive which you wish to test.

I did some test on some of my environments which you can use to benchmark your system setups:
GW VPC – Microsoft Dynamics CRM Demo environment run with 6 GB Memory on my E:
GW LAB – Our development environment, virtualized with RAID drive (4×150 GB 15k rpm)
GW C – Intel SSD 3:rd Generation 250 GB
GW E – Intel SSD 2:nd Generaton 150 GB

IO/s
Throughput MB/s

SSD performance in this case blows the roof off the RAID and the loss of performance is rather substantial inside the VPC, but the read performance is still 5-7 times that of the RAID.

An interesting aspect of this is the GW LAB, our development machine run on RAID, it has almost 3 to 4 times the IO and throughput in writes compared to reads, which is not the fact for the SSD-based disks. This is probably due to some write caching functionality of the RAID.

My recommendation based on this is that if you need high performance on you CRM, use SSD:s in your setup. Do use server-grade SSD:s and used at least RAID:s with 2 disks redundancy, but it will give your CRM a rather large performance boost compared to normal grade SAN.

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

More swedish CRM blogger

There seems to be a nice trend of lot of new CRM bloggers here in Sweden. I think this is great, mercantilism always has to give way to free trade! Even more so in the information era.

Alan Varcoe, a Dynamics CRM veteran and architect, who some of you might have noticed has left some comments here from time to time, has now started his own blog. He has written an interesting post managed and unmanaged solutions. Do check it out!

Let’s hope this discussion results in some new features from Microsoft in this area, as that would be greatly appreciated!

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Social Roadmap for Dynamics CRM

Today I watched an interview on CRMSoftware.TV with David Pennington, Director of Product Marketing for Dynamics CRM where he talks about where Microsoft is headed in terms of social functionality.

In short this is what is mentioned:

The recent updates from november 2011 added some social functionality, namely the wall functionality in CRM and also the ability to leverage hash-tags to some extent.

Microsoft’s focus is, as they usually do, on productivity in the sense that you should spend more time closing business and less in computer systems, and this has also been the guiding star when developing these new CRM features.

He also talked about the new update coming in the end of the year with functionality to enrich your data based on social intelligence. Brought in technology from Inside View (http://www.insideview.com/)  to bring in data from social systems and enrich the CRM data. Inside Views offer is to assemble social data from over 25 000 news sources and social media directly to the CRM system to give salespeople an edge over competitors by knowing more about the customer.

They are also adding integrations with LinkedIn which will add functionalities that allow users to see the relationships that exists to contacts in the system. Ex A salesperson can see that another salesperson has a connection to a potential customer.

Also social customer care, grab comment or similar in social media like twitter and make cases of it.

Looking at social from the perspective of three different categories

          Managed – internal social channels like for instance discussions in SharePoint
          Semi-managed – external social channels with a distinct precense, like SharePoint sites hosted by a customer
          Independent channels like Facebook or Twitter where you mainly listen to what is going on.
Important part of this is to be able to know what is happening so that the strategy of the company’s marketing etc. can be adapted to this.

I look forward to seeing social media integrations in CRM, some of it has been available in Outlook for some time now using the Outlook social connector so from my perspective I have expected this for some time.
How CRM will be using Inside View is also interesting. I do now know if Microsoft have bought full rights to their software to enable it in Dynamics CRM without extra licensing or if it will be made available as some add-on license. Another interesting aspect of this is how extensible it will be or if it will be a more or less static functionality. I am personally hoping it will be very extensible since I would expect many customers to appreciate this functionality but probably ask for adaptions to it.
The integration of the social media data, from Twitter and Facebook to CRM will also be interesting. Since the amount of data available in these sites is no less than vast and stored in databases that are not SQL-based there might be interesting performance issues that might arise if the filtering of this functionality is not set correctly. I also hope that this functionality will be extensible as I would expect many customers to look for extensions or changes to this. Being a bit cynical, I don’t expect there will be though.
The three different categorizations of social channels seem logical, however, he didn’t really mention anything on how they were to manage the first two in CRM, if at all. Perhaps that would signal that there would be some adaptable functionality where you can plug-in any social adapter of your choice where you could also develop your own. But that is pure speculation, so we will have to see.
In general I welcome all of these new functions as they do bring really good value to the customers and let us just hope that our competitors are a few steps behind.  

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Rickard’s blog

My colleague Rickard Norström, who is a very skilled Dynamics CRM developer and consultant has finally started his own blog. Make sure you add it as he has many interesting perspectives on Dynamics CRM and consultancy around it.

Rickard Norström is my closest colleague and is involved with some of the more major installations of Dynamics CRM as well as iScala CRM implementations. He has worked with Dynamics CRM for about 2 years now in a variety of versions and has also held several courses, both for end uses, powerusers and other CRM consultants. He is very skilled in development, installations and configurations of Dynamics CRM, for instance he is currenlty working with an upgrade of a webfarm based CRM system that has some interesting issues. Make sure not to miss what he is writing!

You will find his blog at the following url:

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

MVP Award

MVP Award

Today I was awarded the MVP status for Dynamics CRM! I am very grateful for this award and it is thanks to all of you who read my blog and value what I write that this was at all possible. So first of all, I want to give you all a this recognition.

I also hope this will give me further contacts and insights into what is going on within Microsoft despite the fact that some facts received in the MVP program are under strict NDA.

You can find my MVP profile here: https://mvp.support.microsoft.com/profile=C23EEC24-1A5A-41F1-9B53-A5C2C2B658EE

Gustaf Westerlund
MVP, CEO and owner at CRM-konsulterna AB
www.crmkonsulterna.se

Migration strategies

Migration strategies

Migrations are often complicated and not very sexy, all the work you put into it, configuration, scripts and code will be more or less useless after the migration has been done. However, choosing the right strategy is essential for a good CRM implementation. I will go through some of the strategies that are common and discuss some of the advantages and disadvantages.

Greenfield
Greenfield migrations are not really migrations, but rather the lack of migration. This means that the system will be set up without any migrated data, no accounts, no contacts etc. The idea is then that all the users will create data in the new system as the feel the need for it.

This is often used for start-ups when there is no or very little data. It can also be used when the data quality is very bad and trying to filter out the “good” data is just to complicated. Normal problems can be large numbers of duplicates, errors in the data itself, like “.” and “,” being inserted instead of real data just to make the forms savable.

Advantages of Greenfield migrations is that the system will be up and running in no time. Migrations might otherwise take considerable amounts of time. This also mean that the cost of Greenfield migrations are very low. Do note however, that there is need for some general system configuration, like creating users, setting up queues.

The disadvantage is that the users do not feel that the new system is helping them out and they have to reinsert a lot of data which can create considerable amounts of annoyance with the new system. This can in the long term increase the bad-will towards the system, lowering usage which can jeopardize the entire CRM investment.

Standard import
The standard import functionality of Dynamics CRM is reasonably powerful and can usually be used for importing simpler data. It is based on data being stored in csv-files or excel as xml-files. The first of these being a bit problematic as it is rather old and dependant on the regional setting. For instance, the value separator in Sweden is semicolon “;” but in USA comma “,”. It is also common that the csv-files contain data that risk messing up the file syntax, breaking the imports. In general the excel-as-xml format is to be preferred as it also contains field names and proper matching.

This functionality has greatly been enhanced in CRM 2011 compared to CRM 4. For instance, it now support uploading of zip-files containing xml-data files with relations between the files. It can even handle multiple relations that otherwise would take three import runs, all in one go. For instance if you have data with accounts containing primary contact and all contacts also contain parent customer.

The limitations of standard import is that it cannot really handle large amounts of data as the maximum upload size is 8 MB (can be changed in an onpremise installation). Complicated data structures are also hard to handle and it is rather time consuming to run it as there is no scripting capabilities. The lack of scripting also makes the ordering of the different imports in a zip more or less impossible. There is also no support for logic like “If the contacts email adress exists, update the data of that contact, otherwise create a new contact” which is often very useful when importing data from multiple sources. It is also hard to do testruns of the migration without a lot of manual steps involved. There is some error handling but it is very rudimentary and cannot handle more complex logic.

The advantages of standard import is mainly that it requires no extra software and it is relativly easy as the options are limited.

Third party products
One of the more powerful options when doing migrations, is using third party products, like Scribe, Import Manager. These include lots of options that the standard import doesn’t like:

  • ODBC/OLE DB connections to a data source
  • Logic to handle update or create
  • Scripting – custom logic to handle some of the data conversions
  • Run as service – ability to be run in the background as a service
  • Reuse for integrations – these tools can also be used for integrations why the effort invested can at least partly be reused.
  • Support for custom addons
  • More powerful – has support for multi threading and large data sources
  • Easier to do test migrations as all steps can be set up in a run-script, less manual labour.
  • Can handle more complex data
  • Better error handling

Not all products support all of these features.

The main drawbacks are the licensing fees required. Do note that some of these companies have special migration licenses which are not the same as the full license used for integrations. These products are also a bit more complicated due to the larger sets of options available. Hence it also takes some time to learn the product why my recommendation is to choose one and stick with it.

Custom migration program
The most advanced for of migrations need to be done by using custom code. There are really very few limitations to what can be done when writing custom programs that migrated data, it is more up to the skills of the developer and the time available.

Some of the advantages:

  • Limitations only in skills and available time and money
  • Easy to do test runs
  • Complicated error handling logic can be created

The main disadvantages are:

  • Demands developers
  • Time consuming – from around 100 hours to several thousand hours

General recommendations
Migrations are often complex and it is not until you have worked with the data a bit that you start to get a feel for how problematic it is going to be. Hence I usually never give fixed prices on migrations as it would either be inflated or put me at risk. It is also often the case that customers do not realize the complexity of migrations, especially smaller customers it is therefor essential to involve them a lot in the work.

De-scoping the migration is also very important. Usually not all data is required, especially if the old system can be maintained with read-only access. Try to de-scope in width (which entities are really required) and in depth (how old data is required).

Data quality can also be a problem so try to evaluate this early on. Examples are names being stored both as “First name Last name” and “Last name, First name” or fill-in data like “.”, “,” or “-” that has been entered into required fields to make the forms savable.

Large migrations might required delta migrations, when migrations are run in two steps, first the major migration, then after it has been completed, a smaller to migrate the data that was changed during the main migration. This will put additional demands on migration scripts and/or code so try to avoid it if possible.

Sometimes the new system required data that doesn’t exist and hence has to be created. I usually refer to this as migration of non-existent data. It is easy to forget if your perspective is to map the data from the old system without looking at which data is required in the new.

Migrations between two systems that with very different data models is theoretically complicated. There might, for instance exist data in several places that need to fit into one. Data might need to be restructured in complex ways. In depth knowledge of source and target data model is essential and the proper skills required to understand complex data modelling is also a strong recommendation.

I hope I have shed some light on this subject which can be discussed at length.

Gustaf Westerlund
CEO, Chief Architect and co-Founder at CRM-konsulterna AB
www.crmkonsulterna.se