In "Calendaring: Understanding the Client Side," January 2000, I explained how Outlook handles appointments, free/busy information, and different time zones and how local calendar mode can improve performance. Now, to help you understand what is happening behind the scenes, I discuss the server side of calendaring. I look at how an Exchange server handles free/busy information, how to conduct backups and restores, and how to modify the contents of the FREE BUSY folder.
As I explained in the client-side article, every client modifies free/busy items (technically, these items are IPM.Post items) in a hidden system public folder to make free/busy information available to other users. Outlook transmits a free/busy item from the client to the server only when a user creates or modifies an appointment in the calendar. Currently, only Messaging API (MAPI) clients such as Outlook support publishing free/busy times to an Exchange server.
Users' free/busy items reside in the SCHEDULE+ FREE BUSY folder (hereafter referred to as simply the FREE BUSY folder) in the System Folders folder, as Screen 1, page 2, shows. Because the FREE BUSY folder directory entry is available throughout the Exchange organization, every site creates a subfolder to host its respective items. This subfolder's name has the following format:
where o represents organization, organization name is the name of the Exchange organization, ou stands for organizational unit (OU) in the X.500 standard, and site name is the name of the Exchange site. Screen 1 shows the FREE BUSY folder EX:/o=SBS/ou=MOBIL for my locally installed Exchange site.
A client such as Outlook identifies the item that holds the free/busy data for a specific mailbox by reading the subject line of the items in the FREE BUSY folder. For example, the subject line
contains the prefix USER-, the recipient container the mailbox belongs to, and the mailbox's directory name. This item belongs to the Administrator's mailbox in the Recipients container.
When the client program tries to fetch free/busy information, the client software browses the Exchange Server directory to obtain the distinguished name (DN) of the corresponding mailbox. Then, it accesses the FREE BUSY system folder and searches through the folder to compare the subject lines of all available items against the generated DN (i.e., the DN with a USER- prefix). When the client finds the corresponding item, the client reads the item to retrieve the free/busy information. If the client doesn't find the item, it displays no information (i.e., diagonal lines appear in the grid next to the recipient name in the Attendee Availability window). To summarize, the directory information creates a link between the item posted to the folder and the mailbox.
In larger Exchange environments (typically organizations with more than 100 sites) in which the site's directory name differs from the display name, locating the corresponding folder can be difficult. To make sure that you view the right folder, verify the directory name at your Exchange site's property page in the directory name field.
Because Exchange handles system folders just like other public folders, you can modify several options on each folder. One of these options is a folder's age limit, which is the date on which data contained in a folder is outdated and thus deleted.
You can set an age limit for any public folder, including the FREE BUSY folder. You define age limits on the Age Limits tab on the server's public Information Store (IS) properties sheet or on the Limits tab of the folder's properties sheet, as Screen 2 shows. The age limit applies to the timestamp of the item. An item in this case isn't an individual appointment but the user's free/busy information. Every time a user changes an appointment in the calendar, Outlook modifies the item and updates the time-stamp. An item becomes outdated only if the client never updates the information.
To prevent the folder from filling up with obsolete information, the default age limit on every FREE BUSY folder is 100 days. The following example illustrates why a period shorter than 100 days isn't a good default. Suppose you set the limit to 30 days, and some users are on holiday for a month. While the users are on holiday, no one updates the data, so the age limit applies after 30 days. Most users publish at least 2 months of free/busy information to the server; therefore, when Exchange Server removes their information off the server after 30 days, the users' entire schedule becomes inaccessible to other users. This example shows that 30 days is too short a default period.
If you delete a mailbox, the free/busy information is available until the mailbox reaches the age limit. (The mailbox reaches the age limit because no one updates the information after you delete the mailbox.) However, other users can't access this information because the link between the mailbox's directory name and the item's subject line is missing (i.e., you removed the mailbox entry). Deleting a mailbox doesn't remove any appointments that the mailbox's owner had previously accepted, nor does it cancel appointments the user had previously accepted.
If you don't set an age limit on items, the FREE BUSY folder won't fill up your server's disk because the folder contains only a limited amount of information—about the same amount of data as a small to ordinary-sized public folder contains. But browsing the list of entries might take more time if you add or remove mailboxes frequently without using age limits to automatically clean up the list. The smaller the item list, the faster the server will execute a query. In my opinion, the default limit is sufficient for most installations, and you need to adjust it only when necessary (e.g., if you add and remove users frequently).
You can check the size of the FREE BUSY folder or the number of items it contains in two ways:
- View the Public Resource container for the server's public IS.
- Access the Public Resources tab on the server's public IS properties sheet.
In contrast with the cryptic folder name based on the DN in the System folder, these methods display the information in a user-friendly way in the Exchange user interface (UI). For example, the Exchange UI displays Schedule+ Free Busy Information-Mobile for my locally installed Exchange system.
Backup and Restore
To prevent data loss in case of hardware failure, you need to back up appointment and free/busy information. If you use Windows NT Backup to perform a public IS backup, you capture appointment data stored in server-based mailboxes. A brick-level backup method (i.e., backing up an individual mailbox or folder) also backs up appointment data. A brick-level backup is currently available only in third-party backup applications, such as Computer Associates' ARCserve. However, only a public IS backup captures free/busy information; a brick-level backup does not.
This distinction is important to remember in case of server outages. If you use a brick-level backup to recover, the free/busy information won't be available until users log on and make changes to their calendar.
In multiserver environments, you can also create a public folder replica of the FREE BUSY folder for backup purposes; that is, you can regularly create a copy of the folder's content on another server. Thus, if you recover a crashed server, a backfill replication process will occur. The process sends all items that are unavailable on the restored server to the appropriate folder so that recovery will include the information automatically.
You might think that this high level of protection isn't necessary for your environment. But a backup will come in handy if you need to restore the database and your users subsequently complain about missing free/busy information.
To view and modify the MAPI properties of objects within an Exchange IS, you can use the MDB Viewer utility. MDB Viewer is part of mdbvu32.exe, which is included on the Exchange Server 5.5 CD-ROM in the \server\support\utils directory. You might need to modify MAPI properties if you need to troubleshoot problems within the system. Using MDB Viewer, you can not only see standard MAPI properties of folders or items but also look into system folders (including the FREE BUSY folder).
Be careful when you make changes to the folder. If you make a mistake, you can damage the database. Also, be aware that if this tool gets into the wrong hands, malicious users can seriously compromise your system's database. Anyone who has access to this tool can alter all information in the FREE BUSY folder, even information that belongs to other people. This loophole is currently one of Exchange's functional limitations: You can secure folders but not individual items. However, in Exchange 2000 Server, you can secure specific items in a public folder.
Viewing folders and their entries. To start MDB Viewer, open mdbvu32.exe. At the Logon window, click OK. Next, if Outlook isn't running, Outlook's Choose a Profile window will appear to let you choose a profile to connect to the Exchange server. You need just a working profile; the user's specific permissions aren't important. At the main menu, click the MDB menu and choose OpenMessageStore. Select Public Folders, and click Open. From the MDB menu, click Open Root Folders. The Child Folders pane contains the IPM_SUBTREE and NON_IPM_ SUBTREE subfolders. IPM_SUBTREE hosts all the regular public folders; NON_IPM_SUBTREE includes all system public folders. Choose NON_IPM_SUBTREE to get to the system folders, then select SCHEDULE+ FREE BUSY to display the directory names of all Exchange sites in the Child Folders pane. Select the folder for your site. In the Messages in Folder pane, you see all the times in that folder. As Screen 3 shows, the folder items appear in alphabetical order. If you select a folder that currently isn't available (i.e., not replicated to or accessible from your site), the Messages in Folder pane will host no information. The bottom pane, Folder Properties, provides information about this folder, by property name (e.g., the property PR_MESSAGE_SIZE displays the folder's size). You can review any item by double-clicking it.
Deleting an entry. Suppose you want to delete a specific user's free/ busy item (e.g., so that you can reset it). To delete the item, follow these steps:
- Highlight the item you want to delete in the Messages in Folder pane.
- Select IpFld-> DeleteMessages() from the Operations available drop-down list.
- Click Call Function to bring up a confirmation window. Click OK to delete the message from this folder. The item will appear until you close the Window and open it again by selecting the FREE BUSY folder.
Deleting a free/busy folder. When you have problems with free/busy times, you might need to delete all items in the Exchange site folder by resetting the server (and other servers than contain replicas) to an initial state. Then, you use the MDB Viewer utility to recreate all items with these actions:
- Choose IpFld->EmptyFolder() from the Operations available drop-down list to empty the selected folder.
- Click Call Function, and confirm the next window. To log out, just close all windows. Now the folder is clean, but the items will be recreated when a client modifies calendar entries.
This article explains how Exchange handles free/busy times on the server. In a future article, I'll explain the implications for calendaring of your Exchange organization's growth.