Troubleshooting Exchange Freebusy Interop
Note: For more information on Free Busy Interop for Exchange, see the Free Busy Interop for Exchange article.
First read ZimbraServer/docs/freebusy-interop.txt and get familiar with the settings.
Enable debug logging by adding the following to log4j.properties:
Now login to Zimbra webclient, then try looking up a user on Exchange. Make sure the user on Exchange has some appointments on the day(s) viewed so you can see the blocked time slots.
- select calendar app
- new appointment
- enter the email address of Exchange user in attendees box
- click schedule tab
If you can see the red or orange blocks indicating the busy time slots for the Exchange user, it's working properly. If you the result comes up as "all free", then look at /opt/zimbra/log/mailbox.log and look for following entry.
2008-09-25 09:47:39,065 DEBUG [btpool0-2] [name=<your zimbra account>;mid=2;ip=0:0:0:0:0:0:0:1%0;ua=ZimbraWebClient - FF3.0 (Mac)/dev build;] fb - fetching fb from url=http://<URL to Exchange>/public/?cmd=freebusy&start=2008-09-25T00:00:00-07:00&end=2008-09-26T00:00:00-07:00&interval=30&u=SMTP:<email address of Exchange user>
That's the request made to Exchange by ZCS. Make sure the URL looks correct. You can also use a web browser to try the URL and see if you get any HTTP error.
Then a few lines down you'll see an XML fragment as follows.
<a:response xmlns:a="WM"> <a:recipients> <a:item> <a:displayname>All Attendees</a:displayname> <a:type>1</a:type> <a:fbdata>000000000000000000002022220000000000000000000000</a:fbdata> </a:item> <a:item> <a:displayname>(full name of the user)</a:displayname> <a:email type="SMTP">(email address of Exchange user)</a:email> <a:type>1</a:type> <a:fbdata>000000000000000000000022220000000000000000000000</a:fbdata> </a:item> </a:recipients> </a:response>
If you tried the web browser test, that's the content you would see in the browser. Make sure you don't have all 0's in <a:fbdata> section, which means Exchange thinks the user's schedule is all free. If it shows all 0's, then either the user you are trying to look up doesn't have any appointments that day, or Exchange somehow doesn't know how to get the freebusy for the user. If you are sure the user has some appointments, then talk to Exchange admin and resolve the issue.
Now we can check if an Exchange user using Outlook or OWA can see freebusy of a Zimbra user. First, take a Zimbra user firstname.lastname@example.org. Create a mail enabled Contact object in Active Directory. Note the org being used, as it becomes the value of zimbraFreebusyExchangeUserOrg config variable on Zimbra. Also note the userid of the contact, which becomes the zimbraForeignPrincipal of the user email@example.com. It's best to use the localpart of the email address as the userid of the contact so there is no confusion (zuser in this case).
Make sure zimbraFreebusyExchangeUserOrg contains the correct org information.Run
zmprov ma firstname.lastname@example.org zimbraForeignPrincipal ad:zuser
Now log into Zimbra webclient as zuser. Create some appointments in the calendar.
Look at /opt/zimbra/log/mailbox.log. You'll see a request made to a URL that looks like
Check for any error message in the log around the request line. Also check the access log on IIS and make sure the IIS didn't return HTTP error. If you see error 403 or other auth related error, check the Zimbra configuration for zimbraFreebusyExchangeAuthUsername and zimbraFreebusyExchangeAuthPassword. Also make sure you are using correct auth scheme in zimbraFreebusyExchangeAuthScheme. If basic auth is disabled for OWA, then use form based auth.
If there is no error, then wait 15 minutes as the very first freebusy propagation can take up to 15 minutes. The 15 minutes delay is from within Exchange when there are more than one Exchange server. The delay can occur only on the very first freebusy propagation, and there won't be any delay afterwards.
To test the Zimbra -> Exchange freebusy propagation, log into OWA, or use Outlook, add the email address of the contact created above to the required attendee, and click schedule tab.