Many times when scheduling appointments in Exchange, especially when you are already using HTTP requests with DAV, you might want to check the availability of people or resources via the public Free/Busy information in Exchange.  I recently posted some C# code providing an example of how to do use the OWA command to get this data (yes, this is one of the few supported OWA commands)…

How To Get Free/Busy Information

http://blogs.msdn.com/mstehle/articles/628573.aspx

 

However, what you will notice is that when you post an appointment via WebDAV, OWA, CDOEX, or CDO 1.21 the Free/Busy information available from this OWA command is not up to date.  In fact it takes about 5 minutes for it to get updated.

To understand this behavior we need to get the full story on Free/Busy in Exchange and Outlook.  The following links layout the story…

Here is some of our product documentation on how OWA and Outlook publish free busy data.  Note the section related to how OWA updates the Free Busy Folder...

http://www.microsoft.com/technet/prodtechnol/exchange/guides/WorkingE2k3Store/36ea912b-6040-499d-948b-762bec84e8fc.mspx?mfr=true

 

OWA, WebDAV, and CDOEX fall under the same design, relying on MSExchangeFBPublish to publish the Free/Busy data on an interval for public retrieval through the OWA command.  This can be problematic if you have people scheduling resources on frequent intervals and what to get real time or at least very near real time availability information.

 

Here is information from the Exchange team blog on setting a regkey to control the polling interval for the MSExchangeFBPublish thread.  Notice that the most frequent updates you can set are every 30 seconds...

http://msexchangeteam.com/archive/2004/08/19/217187.aspx

 

Here is a more detailed look at the "Free Busy Story" from the Exchange team blog...

http://msexchangeteam.com/archive/2004/06/02/146939.aspx

 

If you want to accurately determine what appointments are scheduled at a particular point in time then you should not rely on the Free/Busy query instead you should query the resource calendar yourself to find conflicts.  Here is a sample I just posted for querying a calendar for conflicts via WebDAV in C#...

 

How To Search Calendar For Conflicts

http://blogs.msdn.com/mstehle/articles/628646.aspx

Updated 1/22/2009 – Noted broken links.