How to Troubleshoot the Microsoft Exchange Server 2007 Availability Service By Using Microsoft Office Outlook Logging

 

The Microsoft Exchange Server 2007 Availability service returns the results of free/busy requests in the form of an XML message that is named GetUserAvailabilityResponse. The GetUserAvailabilityResponse message is used by the Microsoft Office Outlook 2007 client to display the meeting appointment free/busy information and the availability status for all users who are included in the free/busy request.

If the Availability service does not retrieve free/busy information for any requested users, Outlook 2007 displays the failed attempt as No Information. This response message is not helpful when you try to determine the reason that no information is returned. However, this message includes information that you can use to diagnose the cause of the failure. The response message can be revealed for diagnostic purposes by using the logging feature of Outlook 2007.

How to use Outlook 2007 logging

Enable logging on Outlook 2007

  1. Open Outlook

  2. Click Tools, and then click Options.

  3. Click the Other tab, and then click Advanced Options.

  4. Click to enable the Enable logging (troubleshooting) check box, and then click OK two times.

  5. Close and then start Outlook.

Important

Make sure that you turn off logging after the troubleshooting is completed. If you do not turn off logging, the program continues to create log files. For performance and security reasons, you should turn on the logging feature only when you required it.

The Availability service log files are located in the Outlook users %Temp%\olkas folder. Outlook generates three different log file types depending on the action that it takes. Each file name incorporates a two-letter or three-letter code together with a date and time stamp for uniqueness. The three log types are as follows:

  • OOF (Out of Office)

  • MS (Meeting Suggestions)

  • FB (Free/Busy)

The following is an example of a free/busy log file that is generated at approximately 11:00 A.M. on March 5:

20070305-110303994-fb.log

A free/busy log file is generated every time that one or more users are added to a meeting request on the Scheduling Assistant tab. The log file includes the GetUserAvailabilityRequest XML message that is sent from the client to the Availability service. The file also includes the corresponding GetUserAvailabilityResponse XML message that is returned from the Availability service. A new free/busy log file is generated for every request that is sent from the client.

The following is an example of the GetUserAvailabilityResponse message from a free/busy log file:

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Header><t:ServerVersionInfo MajorVersion="8" MinorVersion="0" MajorBuildNumber="685" MinorBuildNumber="24" xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types" /></soap:Header><soap:Body><GetUserAvailabilityResponse xmlns="http://schemas.
microsoft.com/exchange/services/2006/messages"><FreeBusyResponseArray><FreeBusyResponse><ResponseMessage ResponseClass="Error"><MessageText>Mailbox logon failed., inner exception: Cannot open mailbox /o=domain/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=user.</MessageText><ResponseCode>
ErrorMailboxLogonFailed</ResponseCode><DescriptiveLinkKey>0</DescriptiveLinkKey><MessageXml><ExceptionType xmlns="https://schemas.microsoft.com/exchange
/services/2006/errors">Microsoft.Exchange.InfoWorker.Common.Availability.MailboxLogonFailedException</ExceptionType><ExceptionCode xmlns="http://schemas.microsoft.
com/exchange/services/2006/errors">5008</ExceptionCode></MessageXml></ResponseMessage><FreeBusyView><FreeBusyViewType xmlns="https://schemas.microsoft.com/exchange/
services/2006/types">None</FreeBusyViewType></FreeBusyView></FreeBusyResponse></FreeBusyResponseArray></GetUserAvailabilityResponse></soap:Body></soap:Envelope>

The response message contains much information. However, only the following sections contain the required error information:

MessageText: Contains information about the failure

ResponseCode: Contains the exception that caused the failure

ExceptionCode: Contains the Web response code for the failure

The MessageText block typically contains a comprehensive message that explains why the free/busy lookup failed. The ResponseCode and the ExceptionCode values correspond to Web exception codes. These three sections contain the information that is required to help troubleshoot the failure.

Troubleshooting specific failures

The following examples show some common availability lookup failures and how these failures are displayed in Outlook Free/Busy logging. For clarity, these examples include only the three sections of the log that are mentioned in the "How to use Outlook 2007 logging" section of this topic.

Mailbox Logon Failure

The Availability service retrieves free/busy information from Exchange 2007 mailbox calendars by directly accessing the mailbox. If the Availability service cannot access a mailbox because of a logon failure, the service cannot retrieve the information. In this case, the following log entries are generated:

<MessageText>Mailbox logon failed., inner exception: Cannot open mailbox /o=domain/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=user.</MessageText>
<ResponseCode>ErrorMailboxLogonFailed</ResponseCode>
<ExceptionCode xmlns="https://schemas.microsoft.com/exchange/services/2006/errors">5008</ExceptionCode>

In this example, the MessageText block contains a simple explanation about the failure and about the identity of the mailbox that was not opened. Logon failures can be caused by several conditions. These include Mailbox Store service failure and dismounted databases. When this error is logged, you should verify the status of the target user's mailbox.

Permissions Error

The Availability service supports a calendar permissions model that lets Exchange 2007 mailbox owners grant varying levels of access to their calendar. By default, everyone has at least the minimum permissions that are required to see free/busy information. However, permissions can be changed from Outlook so that only explicit users have access.

If a user adds an attendee to a meeting request, and if that attendee has set calendar permissions that do not allow that user access, the Availability service cannot retrieve the attendee's free/busy information.

Because the Outlook 2007 client renders this failure as No Information in the Appointment free/busy grid, the message is difficult to diagnose as a permission problem without the help of Outlook logging. For example, in this situation, the following message is logged:

<MessageText>Caller does not have access to free busy data.</MessageText>
<ResponseCode>ErrorNoFreeBusyAccess</ResponseCode>
<ExceptionCode xmlns="https://schemas.microsoft.com/exchange/services/2006/errors">5037</ExceptionCode>

When this error is logged, you should engage the target mailbox owner to confirm calendar permissions.

Proxy Failures

The Availability service can access any Exchange 2007 mailbox calendar in the local Active Directory site. If the Availability service receives a service request for free/busy information for a mailbox that resides in another Active Directory site, the service proxies the request to the Availability service in that Active Directory site.

When a free/busy request that is proxied to another Availability service fails, the failure information from the remote Availability service is included in the response message. For example, the following message is logged:

<MessageText>The proxy request failed because the remote server returned an error., inner exception: Microsoft.Exchange.InfoWorker.Common.Availability.MailboxLogonFailedException:Mailbox logon failed., inner exception: Cannot open mailbox /o=domain/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=user.</MessageText>
<ResponseCode>ErrorProxyRequestProcessingFailed</ResponseCode>
<ExceptionCode xmlns="https://schemas.microsoft.com/exchange/services/2006/errors">5016</ExceptionCode>

This error indicates that the remote Availability service could not open the target mailbox. This resembles the failure in the first example. In this case, you should verify the status of the target user's mailbox to see whether it is available.

When the Availability service cannot proxy a request for free/busy information because the remote Availability service is failing, the response message may contain stack trace information that resembles the following:

<MessageText>System.Net.WebException: Unable to connect to the remote server ---&gt; System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it   at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket&amp; socket, IPAddress&amp; address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception&amp; exception)   --- End of inner exception stack trace ---   at System.Web.Services.Protocols.WebClientAsyncResult.WaitForResponse()   at System.Web.Services.Protocols.WebClientProtocol.EndSend(IAsyncResult asyncResult, Object&amp; internalAsyncState, Stream&amp; responseStream)   at System.Web.Services.Protocols.SoapHttpClientProtocol.EndInvoke(IAsyncResult asyncResult)   at Microsoft.Exchange.InfoWorker.Common.Availability.Proxy.Service.EndGetUserAvailability(IAsyncResult asyncResult)   at Microsoft.Exchange.InfoWorker.Common.Availability.ProxyWebRequest.CompleteRequest(). The request information is ProxyWebRequest type = CrossSite, url = https://Servername.domain.com/EWS/Exchange.asmx
Mailbox list = &lt;mod4user9&gt;SMTP:user@domain.com, Parameters: windowStart = 2/20/2007 8:00:00 AM, windowEnd = 3/22/2007 8:00:00 AM, MergedFBInterval = 30, RequestedView = Detailed
.</MessageText>
<ResponseCode>ErrorProxyRequestProcessingFailed</ResponseCode>
<ExceptionCode xmlns="https://schemas.microsoft.com/exchange/services/2006/errors">5016</ExceptionCode>

This error indicates that the remote Availability service is not servicing proxied requests. The response message also includes stack trace information that you can use for additional debugging activities on the remote server, if it is required. This error is generated because the default Web site on the remote server was paused.

Exchange 2007 supports the sharing of free/busy information between forests. By using the appropriate configuration, the Availability service can proxy cross-forest requests to another Availability service in the remote forest. When the Availability service cannot proxy a request to another forest, the response message may contain information that resembles the following:

<MessageText>Unable to send cross-forest request for mailbox &lt;Fred Meyers&gt;SMTP:user@domain.com because of invalid configuration., inner exception: Configuration information for forest/domain domain.com could not be found in Active Directory.</MessageText>
<ResponseCode>ErrorProxyRequestProcessingFailed</ResponseCode>
<ExceptionCode xmlns="https://schemas.microsoft.com/exchange/services/2006/errors">5016</ExceptionCode>

This error indicates that the configuration that was required to enable cross-forest sharing of free/busy information together with the tailspintoys.com forest is incomplete or is configured incorrectly.

Legacy Free/Busy Failures

The availability service retrieves free/busy information for legacy Exchange mailbox owners from the free/busy public folder. This is the same method that is used by Outlook. When the Availability service does not retrieve free/busy for legacy mailboxes from a free/busy public folder, the following error is logged:

<MessageText>The remote server returned an error: (503) Server Unavailable.. The request information is http://ServerName.Domain.com/public/?Cmd=freebusy&amp;start=2007-02-20T14:00:00Z&amp;end=2007-03-22T14:00:00Z&amp;interval=30&amp;u=username@domain.com.</MessageText>
<ResponseCode>ErrorPublicFolderRequestProcessingFailed</ResponseCode>
<ExceptionCode xmlns="https://schemas.microsoft.com/exchange/services/2006/errors">5017</ExceptionCode>

Note

In this message, ServerName represents the actual server name.

This failure indicates that a 503 Service Unavailable error occurred because of a dismounted public folder store on server ServerName.