When you try to use the resource-scheduling feature Find Available Times in Microsoft Dynamics CRM, you experience poor performance. If you use Find Available Times again and start a new query, performance improves, and the results take much less time.
This issue occurs because the Microsoft Dynamics CRM deployment contains many entities that are related to scheduling, and multiple SQL queries are run to retrieve individual records during the resource-scheduling process of Find Available Time.
To resolve this issue, download and then install Update Rollup 8 for Microsoft Dynamics CRM. To do this, see the following article in the Microsoft Knowledge Base:
Update Rollup 8 for Microsoft Dynamics CRM 2011 is available
After you install the update rollup, you should create the following registry key on the CRM server for the entities that are related to scheduling:
After you do this, these entities will be added to the cache to optimize performance.
To create the registry key, follow these steps:
- On the Microsoft Dynamics CRM server, point to the Start menu, and then type regedit in the search box to open Registry Editor.
- Locate the following registry subkey:
- Right-click MSCRM, point to New, and then click String Value.
- Type SchedulingEngine.CacheConfiguration.
- Right-click the new key, and then click Modify. The modifications that you make will resemble the following XML. However, your modifications will depend on the entities and options that you want to use. See the "More Information" section for detailed information.
(and other, similar entities)
... (and other entities like above)
For each entity that you add to the cache, there are two possible values: Direct
- A value of DefaultCache tries to optimize on the number of SQL queries and retrieves all records at one time by using a single query. After all records are retrieved, the data is stored in the HTTP cache.
- A value of Direct queries for each record by using a separate SQL query.
If you add more entities to the cache, memory usage may increase slightly because of increased cache size.
There are three mode types:
- SearchCaching. Used when "find available times" or validation of service appointment is being performed
- BookCaching. Used when a service appointment is being saved
- PublishResourceGroupCaching. Used when the resource groups are reorganized and "publish resource tree" is performed
The mode for some entities can be set collectively by using the Resources
tag and the ResourceGroups
tag. Or, the entities can be set separately at a granular level.
Resources entities include the following subtypes:
ResourceGroups entities include the following subtypes: