Article ID: 2678030 - View products that this article applies to.
Expand all | Collapse all

On This Page


The Calendar Checking Tool for Outlook (CalCheck) is a command-line program that checks the Microsoft Outlook calendar for problems. The tool opens an Outlook messaging profile to access the Outlook calendar. It performs various checks on general settings, such as permissions, free/busy publishing, delegate configuration, and automatic booking. Then, each item in the Outlook calendar folder is checked for known problems that can cause unexpected behavior, such as meetings that seem to be missing.

The CalCheck tool then generates a report that can be used to help diagnose problem items or to help identify trends.

More information

To use CalCheck, the Outlook calendar must reside on a computer that is running Microsoft Exchange Server. The tool does not work with IMAP, with POP3, or with other non-Exchange email accounts.


To download and install the Calendar Checking Tool for Outlook, click the following link to view the Microsoft Download Center page. The website also lists the system requirements and the steps to follow to uninstall the tool.

Note The 64-bit version of this tool is for use only with the Microsoft Outlook 2010 64-bit version.

Checks that are performed

The following calendar-specific checks are performed and are then logged in the report:
  • Permissions on the calendar
  • Delegates on the calendar
  • Free/busy publishing information
  • Direct Booking settings for the mailbox or calendar
  • The total number of items in the calendar folder
The following item-level checks are performed and logged in the report:
  • No Organizer email address (PR_SENT_REPRESENTING_EMAIL_ADDRESS)
  • No Sender email address (PR_SENDER_EMAIL_ADDRESS)
  • No dispidRecurring property (causes an item to not show in the Day/Week/Month view)
  • Time existence of the dispidApptStartWhole and dispidApptEndWhole properties
  • No Subject for meetings that occur in the future or for recurring meetings (a warning is logged)
  • Message Class check (a warning is logged)
  • dispidApptRecur (recurrence binary large object [BLOB]) is checked for time on overall start and end times
  • Check for conflicting items in the calendar
  • Check for duplicate items, based on certain MAPI properties
  • Check for meetings that have the same or empty Global Object ID
  • Check for items that have Start Time, End Time, or Recurrence properties set to 0 (year 1601)
  • Check for items that have Start Time, End Time, or Recurrence year earlier than 1995 or greater than 2025
  • Check for items that have Start Time, End Time, or Recurrence properties greater than the Outlook boundary
  • Check for items that are over 10, 25, and 50 MB in size (a warning is logged)
  • Check for items that contain more than 25 attachments
  • Check whether over 1,250 recurring meetings (a warning is logged) and 1,300 recurring meetings (an error is reported); 1,300 is the limit
  • Check whether you are an attendee and you became the organizer of a meeting
  • Checks exception data in the Recurrence BLOB to ensure exceptions occur within the start and end times of the series
  • Check meeting exception data in the Recurrence BLOB to make sure that it is the correct size
  • Report on holiday items

Current Help and command-line switches

The following section describes the command-line switches that are available to customize CalCheck behavior.

CalCheck [-P <profilename>] [-L <filename>] [-M <mailboxname>] [-N <display_name>] [-S <servername>] [-O <path>]
[-C <version>] [-A] [-F] [-R] [-V] [-No]

CalCheck -?

-P Profile name (if absent, will prompt for profile)
-L Path and file name of List file (file listing the Name and LegacyExchangeDN) of mailbox(es) to check
-M Mailbox DN is used with -N (process only the mailbox that is specified)
-N Display name is used with -M (process only the mailbox that is specified)
-O Output path (if specified, write output files to this path; the default is the current folder)
-C Version to use for Office 2013 Click-to-Run scenario
-A All calendar items output to CALCHECK.CSV
-F Create CalCheck folder and move flagged error items there
-R Put a report message in the inbox with the CalCheck.log file
-V Verbose output to the Command Prompt window
-? Print this message

Note The -L, -N, and -C switches are new to CalCheck version 2 (v. 2). The -S parameter in version 1 of CalCheck is replaced with -L. Additionally, the CalCheck v1 -No switch is replaced by the CalCheck.cfg file. The CalCheck.cfg file is explained in detail later in this article.

Note The CalCheck.log file is always generated. The CalCheck.log file shows any items that may have to be fixed or removed and also shows processing information.


Default: Prompt for a profile, and process the mailbox in that profile:

Process all mailboxes on MyServer:
CalCheck -S MyServer

Process all mailboxes on MyServer by using MyProfile as the logon profile:
CalCheck -P MyProfile -S MyServer

Process just the mailbox in MyProfile:
CalCheck -P MyProfile

Process the specified mailbox, and use MyProfile as the logon profile:
CalCheck -P MyProfile -M "/o=org/ou=orgunit/cn=Recipients/cn=UserA" -N "User A"

Process the list of mailboxes in "C:\Directory\List.txt":

CalCheck -L "C:\Directory\List.txt"

Note "List.txt" needs to be in the format of Get-Mailbox | fl output that includes the LegacyExchangeDN and Display Name for each mailbox:

         Name : Display Name
         LegacyExchangeDN : /o=ORG/ou=AdminGroup/cn=Recipients/cn=mailbox

Process a mailbox and move error items to the CalCheck folder in the mailbox, and put a report message in the Inbox:
CalCheck -F -R

Process a mailbox based on a specific profile and version of Outlook. This is needed when you run a side-by-side installation of Office in a Click-to-Run scenario:
CalCheck -C <####> -P MyProfile
Where <####> is the Outlook version, e.g. "2007", "2010", or "2013".

Print this message:
CalCheck -?

Run CalCheck in Multi Mailbox (List) Mode

To process a list of mailboxes, follow these steps:

  1. Give a user Full Access rights to all mailboxes on an Exchange server or Exchange organization.
    1. The following example PowerShell cmdlet grants AdminB Full Access rights to all mailboxes in OrgUnit2:

      Get-Mailbox -OrganizationalUnit "OrgUnit2" | Add-MailboxPermission -User "AdminB" -AccessRights FullAccess
  2. Create the list of mailboxes, including the Display Name and LegacyExchangeDN.
    1. Open Exchange PowerShell and run a command similar to the following:

      Get-Mailbox -Server "ServerName" | fl Name, LegacyExchangeDN | Out-File <path_file_name> -width 200

      where ServerName is the name of the server and path_file_name is the path and filename for the .txt file to create.
    2. Copy the .txt file to the workstation where you will run CalCheck.
  3. Run CalCheck in Multi Mailbox Mode.
    1. On a workstation that has Outlook installed, log on as the user that has Full Access rights to the mailboxes.
    2. Create a new Outlook profile and configure the Exchange server account to use Online mode.
    3. Run cmd and then change to the directory where CalCheck is located.
    4. Run the following command:

      CalCheck -L <path and filename>

      where <path and filename> is the path to the .txt file that you created in Step 2.
When you run CalCheck in Multi Mailbox (list) mode, the following files are created:
  • CalCheckMaster.log - summary for all mailboxes processed
  • CalCheck__<mailbox>.log - one for each mailbox processed, where <mailbox> is the recipient name portion of the LegacyExchangeDN.

Configuration File in CalCheck version 2

CalCheck version 2 (v2) now includes a CalCheck.cfg file. This .cfg file is located in the same directory where CalCheck.exe is located. If the .cfg file is missing, CalCheck v2 displays an error and does not run. The .cfg file is in plain text format. You can manually edit the file to enable or disable individual tests. By default, all tests are set to true. Therefore, all tests are performed by default.


Article ID: 2678030 - Last Review: November 2, 2012 - Revision: 6.0
Applies to
  • Microsoft Outlook 2010
  • Microsoft Office Outlook 2007
  • Microsoft Office Outlook 2003
  • Microsoft Exchange Server 2010 Enterprise
  • Microsoft Exchange Server 2010 Standard
  • Microsoft Exchange Server 2007 Enterprise Edition
  • Microsoft Exchange Server 2007 Standard Edition
  • Microsoft Exchange Server 2003 Enterprise Edition
  • Microsoft Exchange Server 2003 Standard Edition

Give Feedback


Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from