Summary
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 identify trends.
Important CalCheck reports include the following fields for meetings or appointments that are determined to be problematic:
-
Subject
-
Location
-
Start Time
-
End Time
-
Organizer
Because these calendar item fields may contain personal information or details, we recommend that you first review all items in the CalCheck report before you share your report. See the "More information" section for additional fields that are found in CalCheck reports.
Calendar Checking Tool 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, POP3, or other non-Exchange email accounts.
Installation
To download and install the Calendar Checking Tool for Outlook, select the following link to go to the latest release:
https://github.com/rtopken/CalCheck/releases
Note The 64-bit version of this tool is for use together with only the 64-bit version of Microsoft Outlook.
Checks that are performed
The Calendar Checking Tool performs two basic kinds of checks: Calendar-specific checks and item-level checks.
Calendar-specific checks
The following calendar-specific checks are run and then logged in the report:
-
Permissions on the calendar.
-
The total number of items in the calendar folder.
For more information about high item counts in the Calendar folder, see the following Knowledge Base article:2768656 Outlook performance issues when there are too many items or folders in a Cached mode .ost or .pst file folder
-
Delegates on the calendar.
-
Free/busy publishing information.
-
Direct Booking settings for the mailbox or calendar.
Note The information for these three checks is read from the Local free/busy message. In rare cases, Outlook may be unable to open that message. In that case, these checks fail. You should force the regeneration of the hidden free/busy information in the Exchange mailbox only if this occurs.
For more information about how to regenerate the hidden free/busy information, see the following Knowledge Base article:
958443 You experience issues in Outlook when you try to configure free/busy information or when you try to delegate information.
Item-level checks
The following item-level checks are run and then logged in the report.
Error number |
Issue |
Solution |
0001 |
The Items Recurrence Start Date or Time is set to 0 (year 1601). |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask him or her to cancel and then re-create the meeting. |
0002 |
The Items Recurrence Start Date or Time is earlier than January 1 1995. |
This is not necessarily an error condition. You should delete or cancel the item only if it seems to be corrupted. By default, these items are not moved when you use the –f argument. These are moved with calcheck -f only if you configure calcheck to treat warnings as errors per the cfg file (WarningIsError=true). |
0003 |
The Items Recurrence Start Date or Time is later than January 1 2025. |
This is not necessarily an error condition. You should delete or cancel the item only if it seems to be corrupted. By default, these items are not moved when you use the –f argument. These are moved with calcheck -f only if you configure calcheck to treat warnings as errors per the cfg file (WarningIsError=true). |
0004 |
The Items Recurrence Start Date or Time is past the upper limit. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0005 |
The Items Recurrence End Date or Time is set to 0 (year 1601). |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0006 |
Items Recurrence End Date or Time is earlier than January 1 1995. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0007 |
The Items Recurrence End Date or Time is later than January 1 2025. |
This is not necessarily an error condition. You should delete or cancel the item only if it seems to be corrupted. By default, these items are not moved when you use the –f argument. These are moved with calcheck -f only if you configure calcheck to treat warnings as errors per the cfg file (WarningIsError=true). |
0008 |
The Items Recurrence End Date or Time is past the upper limit. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0009 |
The Items Recurrence properties are not created correctly. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0010 |
Appointments Recurrence data is empty. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0011 |
The dispidRecurringproperty is set to False or does not exist, but the dispidRecurType property is not set to None. This indicates that the appointment is recurring. Therefore, the two properties are conflicting. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0012 |
There is no Appointment Recurrence but dispidRecurring is set to True |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0013 |
The Recurrence Exception data mismatch. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0014 |
The Recurrence Original Start Date or Time is set before the start of the series. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0015 |
The Recurrence Original Start Date or Time occurs after the end of the series. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0016 |
The Start Date or Time is to Zero. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0017 |
The Start Date or Time is earlier than January 1 1995. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0018 |
The Start Date or Time is later than Jan 1 2025. |
This is not necessarily an error condition. You should delete or cancel the item only if it seems to be corrupted. By default, these items are not moved when you use the –f argument. These are moved with calcheck -f only if you configure calcheck to treat warnings as errors per the cfg file (WarningIsError=true). |
0019 |
The Start Date or Time is past the upper limit. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0020 |
The Appointment is missing the Start Time. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0021 |
The End Date or Time is to Zero. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0022 |
The End Date or Time is earlier than January 1 1995. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0023 |
The End Date or Time is later than Jan 1 2025. This might be intentional but may also indicate a problem. |
This is not necessarily an error condition. You should delete or cancel the item only if it seems to be corrupted. By default, these items are not moved when you use the –f argument. These are moved with calcheck -f only if you configure calcheck to treat warnings as errors per the cfg file (WarningIsError=true). |
0024 |
The End Date or Time is past the upper limit. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0025 |
This item is missing the Appointment End Time. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0026 |
This item is missing the required property dispidRecurring. |
For more information about appointments not displaying in the Day, Week, or Month view, click the following article number to view the article in the Microsoft Knowledge Base: |
0027 |
This item is missing the required property dispidApptTZDefStartDisplay. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0028 |
This item is missing the PR_SENT_REPRESENTING_NAME property. |
For more information about missing Organizer email addresses or display names, click the following article number to view the article in the Microsoft Knowledge Base: |
0029 |
This item is missing the PR_SENDER_NAME property. |
For more information about missing Organizer email addresses or display names, click the following article number to view the article in the Microsoft Knowledge Base: |
0030 |
There is no Organizer Address on this item. Check the PR_SENT_REPRESENTING properties on this item. |
For more information about missing Organizer email addresses or display names, click the following article number to view the article in the Microsoft Knowledge Base: |
0031 |
There is no Sender Address on this item. Check the PR_SENDER properties on this item. |
For more information about missing Organizer email addresses or display names, click the following article number to view the article in the Microsoft Knowledge Base: |
0032 |
There is no Subject on this item. You should add a Subject to this item. |
If you are the organizer, update the meeting to include a subject. If you are the attendee, ask the organizer to update the meeting to include a subject. Although this is not an error condition, it makes it easier to troubleshoot any future issues that are related to the meeting. |
0033 |
There is no Message Class for this item. |
If you have an issue with a meeting that does not have the default message class of IPM.Appointment, and if removing or canceling the meeting resolves the issue, you should determine which program is creating meetings by using that custom message class. You have to determine whether the program or add-in is a Microsoft or third-party application. If it is a third-party application, contact the third-party for support. |
0034 |
The Message Class of this item is not standard for a Calendar item and may indicate a problem. |
If you have an issue with a meeting that does not have the default message class of IPM.Appointment, and if removing or canceling the meeting resolves the issue, you should determine which program is creating meetings by using that custom message class. You have to determine whether the program or add-in is a Microsoft or third-party application. If it is a third-party application, contact the third-party for support. |
0035 |
Missing required property PR_MESSAGE_CLASS. |
If you have an issue with a meeting that does not have the default message class of IPM.Appointment, and if removing or canceling the meeting resolves the issue, you should determine which program is creating meetings by using that custom message class. You have to determine whether the program or add-in is a Microsoft or third-party application. If it is a third-party application, contact the third-party for support. |
0036 |
Unable to access the attachment table for this item. Error: <error code returned> |
If you are the organizer, change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask him or her to cancel and then re-create the meeting. |
0037 |
There are more than 25 attachments on this item. This may indicate a problem with exceptions on this recurring meeting. |
This is not an error condition. However, for more information, see the 'Working with recurring meetings' section in this article: Best practices when using the Outlook Calendar |
0038 |
The Message Size Exceeds 50MB. This may indicate a problem with attachments/exceptions/properties on this item. |
This is not an error condition. However, for more information, see the 'Working with recurring meetings' section in this article: Best practices when using the Outlook Calendar. |
0039 |
The Message Size Exceeds 25MB. This may indicate a problem with attachments/exceptions/properties on this item. |
This is not an error condition. However, for more information, see the 'Working with recurring meetings' section in this article: Best practices when using the Outlook Calendar. |
0040 |
The Message Size Exceeds 10MB. This may indicate a problem with attachments/exceptions/properties on this item. |
This is not an error condition. However, for more information, see the 'Working with recurring meetings' section in this article: Best practices when using the Outlook Calendar. |
0041 |
The SENT_REPRESENTING address does not match the Organizer Address from the Recipient Table. /RecipTable: /SentRepresenting: |
For more information, click the following article number to view the article in the Microsoft Knowledge Base: |
0042 |
The organizer of this meeting is potentially incorrect. |
For more information, click the following article number to view the article in the Microsoft Knowledge Base: |
0043 |
The dispidCleanGlobalObjectID property is not populated on this item. |
For more information, click the following article number to view the article in the Microsoft Knowledge Base: |
0044 |
The dispidGlobalObjectID and the dispidCleanGlobalObjectID properties are not populated on this item. |
For more information, click the following article number to view the article in the Microsoft Knowledge Base: |
0045 |
The dispidGlobalObjectID property is not populated on this item. |
For more information, click the following article number to view the article in the Microsoft Knowledge Base: |
0046 |
The PidLidGlobalObjectId property values match on two items. |
For more information, click the following article number to view the article in the Microsoft Knowledge Base: |
0047 |
The PidLidCleanGlobalObjectId property values match on two items. |
For more information, click the following article number to view the article in the Microsoft Knowledge Base: |
0048 |
The PidLidGlobalObjectId and PidLidCleanGlobalObjectId property values match on two items. |
For more information, click the following article number to view the article in the Microsoft Knowledge Base: |
0049 |
This item is duplicated in the Calendar. Please check this item. |
If you are the organizer, change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask him or her to cancel and then re-create the meeting. |
0050 |
The Recipient Table has a bad or missing address type. |
If you are the organizer, change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask him or her to cancel and then re-create the meeting. |
0051 |
The Recipient Table has a bad or missing email address. |
If you are the organizer, change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask him or her to cancel and then re-create the meeting. |
0052 |
The Recipient Table has a bad or missing display name entry. |
If you are the organizer, change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask him or her to cancel and then re-create the meeting. |
0053 |
The Recipient Table Organizer has a bad or missing email address property. |
If you are the organizer, change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask him or her to cancel and then re-create the meeting. |
0054 |
The Recipient Table contains duplicated entries. Free Busy lookups could be affected. |
If you are the organizer, change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask him or her to cancel and then re-create the meeting. |
0055 |
Item is missing required data in the dispidApptTZDefRecur property. |
If you are the organizer, you should change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see it in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask her or him to cancel and then re-create the meeting. |
0056 |
The dispidPropDefStream property is corrupted. This is a known problem that can cause Outlook to crash. |
For more information, click the following article number to view the article in the Microsoft Knowledge Base: |
0057 |
The PropDefStream was not created correctly when calling MrMapi. |
Run CalCheck again to see whether the PropDefStream can be created correctly. If this error occurs again, then if you are the organizer, change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask him or her to cancel and then re-create the meeting. |
0058 |
The Email address type is not Exchange or SMTP. This could potentially cause performance problems on address lookups. |
If you are the organizer, change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask him or her to cancel and then re-create the meeting. |
0059 |
Item is missing the required prop PR_MESSAGE_DELIVERY_TIME. |
If you are the organizer, change the Calendar folder view to a table view, find the appointment or meeting, and then cancel and re-create it. If you don’t see in the list, run calcheck -f. If you are the attendee, you should contact the organizer and ask him or her to cancel and then re-create the meeting. |
0060 |
WARNING: Number of Recurring Appointments is greater than 1250. The maximum is 1300. |
To prevent hitting the limit, delete some older recurring appointments. |
0061 |
ERROR: Number of Recurring Appointments reached the limit of 1300. |
To correct this, delete some older recurring appointments. |
0062 |
Conflicting items in the Calendar. |
If you run CalCheck -f, these conflicting items are moved. |
Note If you prefer not to have holiday items flagged, change the CalCheck.cfg file. CalCheck identifies an all-day event as a holiday if the Keywords named property includes the "holiday" string.
Current Help and command-line switches
This section describes the command-line switches that are available to customize CalCheck behavior.
Usages
You can edit the CalCheck.cfg file to turn specific tests on or off.
CalCheck [-P <profilename>] [-O <path>] [-C <Version>] [-A] [-F] [-R] [-V]
CalCheck -?
-P <Profile name> (if absent, prompts for profile)
-O <Output Path> (path to put output files; the default path is the current directory)
-C <Version> (load a specific MAPI version for the Click-to-Run version of Office 2016 or 2013)
-A All calendar items output to CALITEMS.CSV
-F Create CalCheck folder and move flagged error items there
-R Put a Report message into the Inbox together with the CalCheck.csv file
-V Verbose output to the command window
-? Print this message
Running the command creates CalCheck.log and CalCheckErr.csv files that show potential problems and items to fix or remove, plus processing information.
Examples
-
Default - Prompt for a profile, and process the mailbox in that profile:
CalCheck
-
Process just the mailbox in “MyProfile”:
CalCheck -P MyProfile
-
Process a mailbox and move error items to the CalCheck folder in the mailbox, and place a report message in the Inbox:
CalCheck -F -R
-
Process a mailbox based on a specific profile and version of MAPI for Click-to-Run versions of Office:
CalCheck -C <Outlook version - like 2010, 2013, etc.> -P MyProfile
-
Print this message:
CalCheck -?
Configuration File in CalCheck version 2
CalCheck version 2 (v2) now includes a CalCheck.cfg file. This file is located in the same folder in which CalCheck.exe is located. If the .cfg file is missing, CalCheck v2 displays an error message 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. By default, all tests are run.
More information
CalCheck reports also contain the following fields from calendar meetings and appointments that are determined to be problematic.
Field |
Description |
Is Past Item (true/false) |
Determines if the end time of the meeting or appointment occurred before or after the time CalCheck was ran. |
Recurring (true/false) |
Specifies if the meeting or appointment is recurring or if it is a single instance. |
Other Item Subject |
When duplicate items are found, the Other Item Subject describes the other item that is duplicated with the one in question so that you can find it in your calendar. |
Other Item Start |
When duplicate items are found, the Other Item Start describes the other item's start time that is duplicated with the one in question so that you can find it in your calendar. |
Other Item End |
When duplicate items are found, the Other Item End describes the other item's end time that is duplicated with the one in question so that you can find it in your calendar. |
EntryID |
This is PR_ENTRYID of the calendar item. |