Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

You experience poor performance when you use Find Available Times in Microsoft Dynamics CRM 2011


View products that this article applies to.

Symptoms

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.

↑ Back to the top


Cause

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.

↑ Back to the top


Resolution

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:
2600644 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: 
SchedulingEngine.CacheConfiguration
After you do this, these entities will be added to the cache to optimize performance.

To create the registry key, follow these steps:
  1. On the Microsoft Dynamics CRM server, point to the Start menu, and then type regedit in the search box to open Registry Editor.
  2. Locate the following registry subkey:
    HKEY_Local_Machine\Software\Microsoft\MSCRM
  3. Right-click MSCRM, point to New, and then click String Value.
  4. Type SchedulingEngine.CacheConfiguration.
  5. 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.
    <CachingModes>
    <CachingMode name="BookCaching">
    <Calendar>DefaultCache</Calendar>
    <CalendarRule>DefaultCache</CalendarRule>
    <Commitment>DefaultCache</Commitment>
    <ConstraintGroup>DefaultCache</ConstraintGroup>
    <Equipment>Direct</Equipment>
    <PluginType>DefaultCache</PluginType>
    <Resource>Direct</Resource>
    <ResourceGroup>DefaultCache</ResourceGroup>
    <ResourceExpansion>DefaultCache</ResourceExpansion>
    <ResourceGroupExpansion>DefaultCache</ResourceGroupExpansion>
    <ResourceSpec>Direct</ResourceSpec>
    <Schedule>DefaultCache</Schedule>
    <Service>DefaultCache</Service>
    <SystemUser>Direct</SystemUser>
    <Team>DefaultCache</Team>
    </CachingMode>
    <CachingMode name="SearchCaching">
    <Calendar>DefaultCache</Calendar>
    ... (and other entities like above)
    </CachingMode>
    <CachingMode name="PublishResourceGroupsCaching">
    <Calendar>Direct</Calendar>
    (and other, similar entities) 
    </CachingMode>
    </CachingModes>

↑ Back to the top


More Information

For each entity that you add to the cache, there are two possible values: Direct and DefaultCache.
  • 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.

Note 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:
  • Equipment
  • SystemUsers
  • ResourceSpec
ResourceGroups entities include the following subtypes:
  • ConstraintBasedGroup
  • Team

↑ Back to the top


Keywords: kbautohotfix, kbqfe, kbhotfixserver, kbfix, kb

↑ Back to the top

Article Info
Article ID : 2651621
Revision : 1
Created on : 1/7/2017
Published on : 5/13/2012
Exists online : False
Views : 312