As part of the work I have been doing in preparation for the session I will be presenting at TechED in Boston next week, I have been gathering anecdotal / empirical performance and scalability evidence from a lot of smart people (smarter than me anyway).

 

The aim for my session is to give people a real world view of how to plan for scalability and performance for a given deployment of Microsoft CRM 3.0.  I will deliver an overview of the planning process, the tools available and how to engage with specialist teams inside of Microsoft to help you plan – but I also want to let people know about some common pitfalls and mitigation strategies. 

 

Here are a couple of interesting things to take into account:

 

1.      Indexes

 

Out of the box indexes with CRM 3.0 are exactly that!  If you are creating customizations, new entities and attributes – then you need to build some new SQL indexes to aid performance.  (I will post more on this subject soon).

 

Take a look at the Performance Toolkit and the Scalability Report for some more information on this subject.

 

http://www.microsoft.com/downloads/details.aspx?FamilyID=1A25DB7C-5060-417C-86DB-6377A84EE650&displaylang=en

 

 

2.      Custom Entity Grid Rendering

 

An entities grid is populated slower than you expect when you move to a custom entity in Microsoft Dynamics CRM 3.0

 

SYMPTOMS

When you move to a custom entity in Microsoft Dynamics CRM 3.0, the program may populate the entities grid slower than you expect. The slow performance of Microsoft CRM 3.0 in populating the grid may depend on the number of rows that have to be displayed on the grid.

 

CAUSE

This problem occurs because the icons for the custom entity are not cached. Every time that the grid is refreshed, the icons have to be downloaded.

 

Check out the Knowledge Base article for the hotfix…..

 

http://support.microsoft.com/kb/913462

 

3.      Connection Sharing

 

Aaron Elder at Invoke Systems has written a very good piece on implementing connection sharing – and importantly how that has a significant impact on performance when you are writing code against the CRM web services.

 

Take a look at this…

 

http://www.invokesystems.com/cs/blogs/mscrm/archive/2006/06/01/28.aspx

 

 

4.      Offloading Reporting Burden

 

Do you have all your performance eggs in one basket?

 

To improve performance in high-volume Microsoft Dynamics CRM 3.0 systems, you can run reports on a dedicated report server. This frees up the resources of server that is running Microsoft SQL Server and Microsoft CRM to better service the transaction processing requests generated by users adding, viewing, and updating Microsoft CRM records.

 

http://www.microsoft.com/downloads/details.aspx?FamilyID=C82DFBE2-DB8F-4A78-92B2-7C866057CDE6&displaylang=en

 

5.      Naveen’s Blog

 

Microsoft CRM program manager - Naveen Garg, has posted a nice little piece on the engineering efforts that went into 3.0 around performance and benchmarks.

 

Check it out at…

 

http://blogs.msdn.com/crm/archive/2006/05/31/611988.aspx

 

6.      Obvious Things

a.       Use filters to take data offline with the Outlook client.

b.      Plan for your user scenarios.

c.       Putting people on high latency network connections is bad.

d.      64 bit SQL with a gazillion meg of memory is good.

e.       …more to follow..