Even though we didn't see any improvement on the Calendaring side in Exchange 2003, new features have been introduced in Exchange 2007. These included the Calendar attendant, which manages scheduling events; the resource booking attendant, where you can book rooms or equipment without anyone's intervention, and the scheduling assistant, which provides guidance on scheduling meetings efficiently as well as Out Of Office messages.
In Exchange 2010, features introduced in Exchange 2007 have been improved and a feature named Calendar Repair Assistant (CRA) has been added. The interesting aspect about CRA is that, most of the time it runs without any user/administrator intervention. This simplifies collaboration within an organization.
Calendar Repair Assistant Overview
Experience teaches us that most calendar inconsistencies are encountered at the client's side. In this respect, some software applications and utilities were developed by a third party to fix and retrieve changes or deletions from the calendar folder.
In Exchange 2010, the Calendar Repair Assistant was developed to work on the mailbox server side. CRA runs within the Exchange Mailbox Assistant service and detects and fixes any discrepancies using a special algorithm for comparing the organizer's and the attendee's items respectively. Most importantly, CRA runs in silent mode on the user's outlook calendar, meaning that the user will only be notified about adjustments in his/her calendar items. CRA is configured to run by default on every mailbox but can also be disabled for specific user accounts.
In this article, we will see how to configure CRA settings and log files. We will then see the CRA's behavior toward missing calendar items.
CRA Usage
CRA can be configured to run on a specific time schedule. When CRA runs, it compares the organizer's calendar item to the attendee's calendar item by running consistency checks. If any of the organizer's/attendee's check operations fails due to inconsistencies, a fix is performed on the respective calendar item. Corrections are merged so as not to override item properties or data. An E-mail describing what was fixed is then placed in the attendee's deleted items folder.
The issues that CRA is able to correct are listed below:
- Attendee's calendar item has the wrong time or location
- Attendee's/organizer's item has the wrong location
- Attendee is not on the organizer's attendees list
- Attendee's calendar item tracking status doesn't match the organizer's tracking status
- Attendee's recurring meeting doesn't match the organizer's recurring meeting
- Organizer or attendee has multiple calendar meetings that appear to be the same
When CRA runs for the first time, a Calendar Repair Assistant folder is created under the path:
%SystemDrive%\Program Files\Microsoft\Exchange Server\V14\Logging\
This is used to store CRA log files.
Any changes made to the user's mailbox calendar items are logged by default to a log file. To get the CRA's log properties, run the following cmdlet:
Get-MailboxServer -Identity Exchange | FL calendarRepairLog*
The output is shown below:
Figure 1.0 CRA log settings
You can configure any of the log properties shown in figure 1. For instance, the log file age limit is set by default to an unlimited number of days and the directory size limit to an unlimited storage size. If you wish to limit the age to 65 days and the directory size to 150MB, run the cmdlet:
Set-MailboxServer -Identity Exchange -CalendarRepairLogFileAgeLimit 65 -CalendarRepairLogDirectorySizeLimit 150MB
By running again the Get cmdlet, you will see the new settings.
Figure 1.1 Configuring CRA log settings
As mentioned earlier, CRA can be configured to run on a specific schedule. By default, the calendar repair schedule is not configured and won't run unless a schedule is set.
To have CRA run on Thursday between 3:26 PM and 3:40 PM, run the cmdlet:
Set-MailboxServer -Identity Exchange -CalendarRepairSchedule "Thursday.3:26 PM-Thursday.03:40 PM"
You can also select more than one schedule by setting multiple time ranges in a comma separated list:
Set-MailboxServer -Identity Exchange -CalendarRepairSchedule "Thursday.3:26 PM-Thursday.03:40 PM", "Friday.3:26 PM- Friday.03:40 PM"
If mailbox processing is not completed within the defined schedule window, CRA pauses and resumes from the same location the next time it runs.
Let us consider an item that has been accidentally deleted from a user's mailbox. Once CRA is run, Calendar Repair Missing Item Fix is executed. The item is recreated and marked as tentatively accepted (even though the user could have accepted the meeting before deletion).
The calendar item will contain a small description of the fixed issue as shown below:
Figure 1.2 Recovered calendar item
In addition, an E-mail will be placed in the Deleted Items folder describing what was corrected. A sample E-mail is shown in figure 1.3:
Figure 1.3 E-mail describing corrections
Checking the logs, we can see that the steps to recreate the calendar item were logged under a file holding the organizer's name.
Figure 1.4 Log for recreating a missing calendar item
By default, repair item fix is enabled on the mailbox server but you can disable this feature for troubleshooting purposes by running the cmdlet:
Set-MailboxServer -Identity Exchange -CalendarRepairMissingItemFixDisabled $true
Finally, you can define the interval time you wish CRA to process. The default value is set to 30 days as shown below:
Figure 1.5 Calendar Repair Interval End Window
To have CRA fix settings for the coming 40 calendar days, run the cmdlet:
Set-MailboxServer -Identity Exchange -CalendarRepairIntervalEndWindow 90
Conclusion
The Calendar Repair Assistant is very useful and I highly recommend using this new feature. Errors and issues might occur on the user's calendar without his/her knowledge. By enabling Calendar Repair, system administrators and end-users will make sure that calendar items stay consistent.
References
Understanding Calendar Repair