When you run or edit workflows in Microsoft Dynamics CRM 4.0, you may experience slow performance.
This problem occurs because Microsoft Dynamics CRM 4.0 creates records for all inactive workflow instances in the PluginAssemblyBase table. Additionally, if you modify a workflow rule, Microsoft Dynamics CRM 4.0 creates a record in the PluginAssemblyBase table and a record in the PluginTypeBase table. However, these records are never removed. Therefore, if you modify workflow rules many times, the PluginAssemblyBase and PluginTypeBase table tables become large.
This problem is fixed in the latest cumulative update rollup for Microsoft Dynamics CRM 4.0. For more information, click the following article number to view the article in the Microsoft Knowledge Base:
949256 Microsoft Dynamics CRM 4.0 updates and hotfixes
To improve the performance of this hotfix, create the following index in the Organization_MSCRM Database. Notes
In the following script, the OrganizationName placeholder represents the actual name of the Microsoft CRM database. You should replace the placeholder with the actual name of your database.
Do not create the following index if you already have an index that has the same index key columns. You can view existing indexes by running the following code:
USE OrganizationName_MSCRM CREATE NONCLUSTERED INDEX CRM_AsyncOperation_WorkflowCleanupQuery ON [AsyncOperationBase](OperationType,StateCode,WorkflowActivationId)
Use the CRM 4 ScaleGroup Job Editor to schedule the Microsoft Dynamics CRM 4 deletion service to run after regular business hours to minimize the impact on Microsoft Dynamics CRM user performance. To obtain the CRM 4 Deployment Job Editor, visit the following Microsoft Web site:
Set the Base Time to a time of the least Microsoft Dynamics CRM usage or to nonbusiness hours.
We recommend that you set/leave the Reschedule Job setting to every 1440 minutes. When you do this, it will run every day at the time that is specified in the Base Time field.
Note The first time that you run the Microsoft Dynamics CRM 4.0 Deletion service after you apply this fix, you may have to update the OLEDBTimeout setting to a longer time than the default value. We recommend that you create a new REG_DWORD subkey if it does not already exist. Name the subkey OLEDBTimeout in HKEY_LOCAL_MACHINE\Software\Microsoft\MSCRM\ on the Microsoft Dynamics CRM 4.0 server or servers. Set the value to a value of decimal 86400. After the Microsoft Dynamics CRM 4.0 Deletion Service has run with this fix, we strongly recommend that you delete the OLEDBTimeout registry key in HKEY_LOCAL_MACHINE\Software\Microsoft\MSCRM or to set its value between 60 and 300 decimal to help prevent long-running queries from causing excessive SQL Blocking and poor application performance.
After you install this fix, you may see the following errors logged in the application event log on the Microsoft Dynamics CRM 4.0 Server(s) if you do not follow the steps for improving performance listed below in the resolution secution the first time(s) that the deletion service runs
.Event Type: ErrorEvent Source: MSCRMDeletionServiceEvent Category: NoneEvent ID: 16387Date: 2009/01/26Time: 11:41:54 AMUser: N/AComputer: CRMSERVERDescription:Error: Deletion Service failed to clean up table=CleanupInactiveWorkflowAssembliesProcedureFor more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
For more information, click the following article number to view the article in the Microsoft Knowledge Base:
948629 Error message when you try to go offline in the Microsoft Dynamics CRM 4.0 client for Outlook with Offline Access: "Failed move data for entity 'Plug-in Assembly' during action Insert, countRows=[Number]"
For more information about the terminology that is used to describe Microsoft software updates, click the following article numbers to view the articles in the Microsoft Knowledge Base:
824684Description of the standard terminology that is used to describe Microsoft software updates
887283 Microsoft Business Solutions CRM software hotfix and update package naming standards