I'm a big fan of using automated tools to check for problems rather than waiting for problems to show up in the form of user complaints, event log errors, or even system or component failures. That's why I was thrilled when Microsoft released the Exchange Server Best Practices Analyzer (ExBPA), which in turn was a distant relative of the Microsoft Exchange Server 2003 deployment analysis tools. Now Microsoft has released an updated version of a tool few of us have heard of: CalCheck, more formally known as the Calendar Checking Tool for Outlook.

You can download the new version of CalCheck from the Microsoft Download Center. CalCheck does exactly what its name suggests: It looks through one or more Exchange mailboxes, examining each for a set of potential problems with calendar items. You might not have thought of calendar items as a potential source of problems, but the truth is that meetings and appointments are actually complex little beasts.

Calendar items have lots of limits and constraints that are supposed to be applied as they're created and manipulated. Some of these details are obvious; for example, you can't have a calendar item with an end date before its start date. Others problems are less obvious. Did you know that a single calendar folder can't contain more than 1,300 recurring items? I sure didn't. Violating these constraints, or creating items that are missing data that Exchange expects, can lead to various problems, including incorrect or missing free/busy data, client crashes, or problems accessing other unrelated calendar items.

Exchange has a great deal of built-in calendar-related business logic; this code is supposed to prevent bad items from being created in the first place. In that light, you might be wondering how calendar items get into a state that requires repair in the first place. The answer is simple: bugs. Bugs in the business logic itself can allow clients to create bad items, or to modify good items in a bad way. Client bugs can cause problems too. Apple users are well aware of the many bugs that Apple's own calendaring applications for Mac OS X and iOS have inflicted on Exchange users over the years, and BlackBerry, Android, Windows Phone, and Windows Mobile all have their own set of calendar-related bugs. So does Outlook.

I'd venture a guess that the most common cause of calendar problems is a lack of business logic for certain conditions. For instance, one of the things that CalCheck can look for is a meeting that doesn't have an email address for the meeting organizer. Creating such a meeting clearly isn't a reasonable thing to do, so why would Exchange have included business logic to check for this state and generate an error? Therefore, some versions of Exchange didn't bother to block this circumstance.

CalCheck actually performs two sets of tests: It checks permissions, delegates, and direct booking settings on the calendar folder itself; then it checks a dozen or so aspects of every item inside the calendar folder. The Microsoft article "Information about the Calendar Checking Tool for Outlook (CalCheck)" describes the complete list of tests. You can run CalCheck against a single mailbox or a set of mailboxes, and you can have it either generate a report of its findings or create a new folder into which it moves problem items for manual inspection (and removal, if necessary.)

Perhaps my favorite thing about CalCheck is that its source code is freely available on Microsoft's CodePlex. This openness provides a great learning opportunity for those who are interested in the inner workings of Exchange calendaring, and I applaud CalCheck's author, and Microsoft, for doing it this way.