Besides ESM, you can use Exchange's Mdbview utility to see all the folders in NON_IPM_SUBTREE. Using this utility, you can also see that each administrative group's or site's free/busy folder holds a set of free/busy messages that store the free/busy data. Each message represents one mailbox and contains binary code that represents each appointment's time-usage category. Using Collaboration Data Objects (CDO) 1.2 or later, you can query Exchange for the free/busy information for a specific date and time period in specified time increments. For example, you can retrieve the free/busy data for Wednesday, April 7, between 11:30 a.m. and 5:30 p.m. in 30-minute increments. The query returns a coded string that represents the time-usage categories, in which each digit in the string represents the time increment you requested. In this string, the value of 0 represents Free, 1 represents Tentative, 2 represents Busy, 3 represents Out of Office, and 4 represents No data available. So, if you use Figure 1 as a reference, the April 7 query just given would return the string 113333332220. If you had made the same query but requested 15-minute increments, the string returned would be 111133333333333322222200. (For more information about retrieving free/busy data, see the Microsoft article "How To: Check Someone Else's Schedule for Free/Busy Information" at http://support.microsoft.com/?kbid=186753.)
Exchange doesn't store a separate state code for every minute of the day. Instead, for storage efficiency, Exchange groups similar state codes together into blocks and stores information about each block's size and state. The number of blocks needed to represent the free/busy time depends on the number of state transitions, not on the number of appointments. For example, the calendar in Figure 1 has six appointments with blocks of free time before and after them. You might assume that there are eight blocks if you count the six appointments and include the two blocks of free time. However, the two appointments between 8:30 a.m. and 11:30 a.m. are both defined as Busy. Because they're contiguous, they're represented as a single block in a free/busy map. The same holds true for the lunch and dentist appointments between 12:30 p.m. and 3:30 p.m. They're treated as a single block of Out of Office time. Thus, there are five transitions between six blocks: Free, Busy, Tentative, Out of Office, Busy, and Free.
By storing free/busy data as blocks of consecutive time instead of representations of individual appointments, the amount of storage needed for the free/busy map is minimal. A completely blank schedule uses about 240 bytes. Each state change adds 4 bytes, so the six free/busy blocks in this example would use only 264 bytes of public folder storage.
How Free/Busy Data Is Updated
Free/busy data is updated when a client such as Outlook or Outlook Web Access (OWA) makes a change to a calendar. For example, when you create an appointment or accept a meeting invitation, your calendar changes and the client updates the free/busy data to reflect your availability. The map isn't updated in the sense that free/busy information from a new appointment is integrated into the existing map. Each time the client updates the free/busy map, the map is completely regenerated. The client stores the free/busy map in a hidden message called LocalFreebusy. The client then copies the map data from the LocalFreebusy message into the appropriate free/busy folder in the public folder store, again replacing any previous map.
By default, all versions of Outlook are configured to publish 2 months of free/busy data. With Outlook XP and later, you can publish up to 36 months of free/busy data. In earlier Outlook versions, you can publish only up to 12 months of data. You configure the number of months to publish in the Free/Busy Options dialog box, which Figure 2 shows. To access this dialog box, open Outlook, select Options under the Tools menu, and choose the Preferences tab. Click Calendar Options, then Free Busy Options.
The LocalFreebusy message's 0x6869 property stores the number of months of free/busy data to publish (i.e., the publication interval). Figure 3 shows this property in Mdbview. The sidebar "Viewing the LocalFreebusy Message in Mdbview" explains how you can access this message. In this example, 36 months of data are to be published. When a client such as OWA updates free/busy data, it reads this property to know how many months of free/busy data to generate.
Understanding where free/busy data is stored becomes important when you need to troubleshoot problems. Because the clients, not the Exchange server, generate free/busy maps, clients with different publication intervals can sometimes cause confusion for shared and delegated calendars. Free/busy data is generated when any client with write access to a calendar makes a change. For example, suppose an administrative assistant is delegated access to a supervisor's calendar. When the delegate accepts a meeting invitation on behalf of the supervisor, the delegate's Outlook client generates a new version of the supervisor's free/busy map. Similarly, when you use Outlook's direct booking feature to book a resource (which requires write access to the resource you're attempting to book), your copy of Outlook generates a new version of the resource's free/busy map. The number of months of free/busy data generated is based on the free/busy publication interval for the Outlook client being used, not on the value stored in the mailbox's LocalFreebusy item. Thus, problems arise when people use Outlook with different publication intervals. For example, suppose one user has Outlook 2000 and another user has Outlook 2003. The Outlook 2000 user can publish only 12 months of data, whereas the Outlook 2003 user can publish 36 months of data. The amount of free/busy data available at any given time depends on who updated the map last.
To illustrate the problem that can result from different publication intervals, let's look at Outlook's direct booking feature. Suppose it's September and Emily uses direct booking to successfully reserve a conference room between 2:00 p.m. and 5:00 p.m. on December 16, 2004. Emily has configured Outlook to publish 12 months of free/busy data, so her Outlook client generates a conference room free/busy map that spans from September 2004 through August 2005. The next day, Ed successfully books the conference room for all day on October 1. Ed's Outlook client is still configured with the default publication interval of 2 months, so his Outlook client generates a conference room free/busy map that spans only from September through October. This new map replaces the map posted by Emily's Outlook client. Thus, all the Free, Busy, Tentative, or Out of Office entries in the other 10 months (November 2004 through August 2005) no longer exist. If no free/busy data exists (i.e., a state code of 4), direct booking assumes that the time is available. Now if another person tries to reserve the conference room from 2:00 p.m. to 3:00 p.m. on December 16, 2004, the booking will be successful and the conference room will be double-booked during that time.
Prev. page
1
[2]
3
next page