I've put together a high-level list of optimizations for dynamics CRM to centralise information for myself, and thought sharing would be helpful for someone, I'll keep this list updated as I find more information., PLEASE ADD more optimizations tips & tricks to this article.

Authentication

The number of authentication request's and authentication challenges takes valuable seconds deteriorating performance.

Resources:

IIS

  • AppPool Recycling
    • Configure to recycle after hours.

CRM Registry Keys

A number of tweaks can be done on the CRM side to improve performance.

  • You can control the size of the Workflow table by deleting completed Workflows with a registry key, this is a nice way to improve performance on the database side, however this can only be applied if you don't need the workflow history.
    • Name: AsyncRemoveCompletedWorkflows
    • Type: DWORD
    • Value: 1
  • Improve SQL Performance EnableRetrieveMultiple

    With Microsoft Dynamics CRM 2011 Update Rollup 10 or later, having the HKLM\Software\Microsoft\MSCRM\EnableRetrieveMulitiple Optimization set to 0 can often give better performance than having it set to a value of 2.

    http://support.microsoft.com/kb/2710577 - "Update Rollup 10 for Microsoft Dynamics CRM 2011 is available"

    See this for more detailed information:
    Update Rollup 10 includes performance improvements for retrieving multiple queries and for Quick Find. For more information, see the "Optimizing the Performance of Queries against Large Datasets" and "Optimizing the Performance of Quick Find Queries" sections of the Optimizing and Maintaining the Performance of a Microsoft Dynamics CRM 2011 Server Infrastructure white paper. To download this white paper, go to the following Microsoft Download Center website:
    Optimizing and Maintaining the Performance of a Microsoft Dynamics CRM 2011 Server Infrastructure - http://www.microsoft.com/en-us/download/details.aspx?id=27139

  • Disable the email pop-up reminder to speed up load times
    • Name: DisablePendingEmailReminder
    • Type: DWORD
    • Value: 1
  • Set a preferred Domain Controller to speed up AD checks
    • Name: PreferredDC
    • Type: String
    • Value: DC_Name

There are a number of registry keys targeting different types of performance issues and types of environments, Microsoft is now releasing with each update Roll Up a package named:'tools'.This package contains a tool that can implement a number of updates/optimizations which were previously reserved for registry implementations, this way makes it easier to enable optimizations centrally and avoid creating registry keys across multiple front-end servers.

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

e.g number of registry keys part of RU6

  • DisableSmartMatching
    • Default Value – False
  • AutoCreateContactOnPromote
    • Default Value - True
  • BackgroundSendBatchFile
    • Default Value – 10
  • DisableInactiveRecordFilterForMailMerge
    • Default Value - False
  • LookupNameMatchesDuringImport
    • Default Value - False
  • EnableRetrieveMultipleOptimization
    • Default Value - 1
  • DoNotIgnoreInternalEmailToQueues
    • Default Value - False
  • SkipSuffixOnKBArticles
    • Default Value - False
  • SkipGettingRecordCountForPaging
    • Default Value – False


Database

Outlook Client

Note: Make sure you enable IIS WCF compression from point 2. IIS

Internet Explorer

  • Ensure CRM url is added to the local intranet zone
  • Authentication Options
    • AutoLogon
    • Windows Integrated Authentication
  • Reset Zoom level for new windows and tabs
  • Disk space for temporary internet files
    • 250MB
  • Increase IE connections to the server with Registry Keys

Email Router