By default CRM 2011 will create six maintenance jobs which are scheduled to run daily. These jobs are executed by the Microsoft Dynamics CRM Asynchronous Processing Service (maintenance). Depending on when the organization was created the maintenance jobs may run right when users are in the system. The CRM users may notice slowness or timeouts if the jobs are running while they are working in CRM. It is recommended to reschedule the jobs to a time when there will be a limited number of users in the system to avoid impact to the users.
How to Reschedule the Jobs
The maintenance jobs can be rescheduled using the CRM 2011 Maintenance Job Editor Tool. Below are the steps to use this tool.
1. Download the CRM 2011 Maintenance Job Editor Tool
2. Copy extracted contents to the C:\Program Files\Microsoft Dynamics CRM\tools directory.
3. Double Click the CRM2011JobEditor.exe to launch the tool.
4. Select your organization.
5. Each of the jobs will be staggered a few minutes so they do not execute at the same time. To ensure they remain staggered you can go through each Job and update the Starting At Time by changing the only the hour, switch between AM/PM and then click Update.
Alternatively, you may update the Starting At Time and choose the Apply Settings To All Jobs in the Organization option instead of updating each individual job.
Disabling the Reindex All Job
The Reindex All job will ReIndex and Shrink your CRM database. Many customers will not want to shrink the database and may already have SQL maintenance jobs in place that will Reindex databases. For those reasons they may want to disable this particular job and control the maintenance within SQL. There is not a “disable” feature for the jobs, but the Next Run Time for this job can be set into the future such as 12/31/2099 so that it will never execute.
Additionally the following errors may be logged in the event viewer application logs if this particular job is running for a long duration or timing out on a larger database. This would be another situation where you may choose to disable the Reindex All job and perform these actions within a SQL maintenance plan.
Query execution time of x seconds exceeded the threshold of 10 seconds. Thread: 13; Database: <database_name); Query: exec p_ShrinkMirroredDatabase <database name>
Query execution time of x seconds exceeded the threshold of 10 seconds. Thread: 20; Database: <database_name); Query: exec p_ReindexAll <database name>
Host <CRMServerName>.MSCRMAsyncService$maintenance.8b60c4b9-0879-4a1d-96c0-eada4e3cbc91: Job Scheduler has executed tasktype=30, organizationid=<OrganizationID>, starttime=5/9/2011 3:25:23 PM, endtime=3/9/2012 3:55:23 PM, resultcode=1, errormessage=System.Data.SqlClient.SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Please leave a comment if you found this post helpful and whether it resolved an issue you were facing.