Free/busy interop with Exchange 2016

Discuss your pilot or production implementation with other Zimbra admins or our engineers.
mr_compsci
Posts: 3
Joined: Fri Dec 23, 2016 12:40 am

Free/busy interop with Exchange 2016

Postby mr_compsci » Thu Apr 13, 2017 5:04 am

Has anyone successfully implemented free/busy interop with Exchange 2016? I followed the instructions on the Zimbra Wiki for configuring interop with Exchange 2013 (the most recent available) and am able to see Exchange user availability in Zimbra, but Zimbra is unable to push free/busy information to Exchange. The following error appears in mailbox.log on our Zimbra 8.6.0_GA_1153 server:

Code: Select all

2017-04-12 00:00:53,230 ERROR [EXCHANGE2010 Free/Busy Sync Queue] [] fb - error communicating with https://mail.domain.com/EWS/Exchange.asmx?wsdl
javax.xml.ws.WebServiceException: Could not send Message.
        at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:144)
        at com.sun.proxy.$Proxy187.updateItem(Unknown Source)
        at com.zimbra.cs.fb.ExchangeEWSFreeBusyProvider.handleMailboxChange(ExchangeEWSFreeBusyProvider.java:718)
        at com.zimbra.cs.fb.FreeBusyProvider$FreeBusySyncQueue.run(FreeBusyProvider.java:375)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.cxf.transport.http.HTTPException: HTTP response '400: Bad Request' when communicating with https://mail.domain.com/EWS/Exchange.asmx?wsdl
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1530)
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1490)
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1309)
        at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
        at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:622)
        at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
        at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:366)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319)
        at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
        at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:133)
        ... 4 more


The IIS logs show that several requests are made, but last one results in a response code of 400:

Code: Select all

2017-04-12 00:00:53 10.7.90.62 POST /EWS/exchange.asmx &CorrelationID=<empty>;&cafeReqId=c88df5bd-18da-4ea7-907d-1ba34952ead1; 443 zimbra-interop@domain.com 10.0.51.124 Apache+CXF+2.7.5 - 200 0 0 62
2017-04-12 00:00:53 10.7.90.62 POST /EWS/exchange.asmx &CorrelationID=<empty>;&cafeReqId=2f00e266-f5e6-4fb0-909d-d19b30f72767; 443 zimbra-interop@domain.com 10.0.51.124 Apache+CXF+2.7.5 - 200 0 0 54
2017-04-12 00:00:53 10.7.90.62 POST /EWS/exchange.asmx &CorrelationID=<empty>;&cafeReqId=c015d839-7326-411d-8a6d-6c142088d03e; 443 zimbra-interop@domain.com 10.0.51.124 Apache+CXF+2.7.5 - 200 0 0 48
2017-04-12 00:00:53 10.7.90.62 POST /EWS/exchange.asmx &CorrelationID=<empty>;&cafeReqId=5220e357-5399-4163-9bee-b5c6a467669f; 443 zimbra-interop@domain.com 10.0.51.124 Apache+CXF+2.7.5 - 200 0 0 48
2017-04-12 00:00:53 10.7.90.62 POST /EWS/exchange.asmx &CorrelationID=<empty>;&cafeReqId=8eae1501-520e-4439-bd98-3235e6f027a8; 443 zimbra-interop@domain.com 10.0.51.124 Apache+CXF+2.7.5 - 200 0 0 113
2017-04-12 00:00:53 10.7.90.62 POST /EWS/exchange.asmx &CorrelationID=<empty>;&cafeReqId=8bb432a4-fab9-4176-8438-ee9a4d39a600; 443 zimbra-interop@domain.com 10.0.51.124 Apache+CXF+2.7.5 - 400 0 0 52


I captured the final SOAP request (the one that EWS doesn't like) using Wireshark:

Code: Select all

<soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:header>
      <ns2:mailboxculture xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
         EN
      </ns2:mailboxculture>
      <ns2:requestserverversion xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/messages" version="Exchange2010_SP1" />
      <ns2:timezonecontext xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
         <ns2:timezonedefinition id="Greenwich Standard Time" />
      </ns2:timezonecontext>
   </soap:header>
   <soap:body>
      <updateitem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/types" conflictresolution="AlwaysOverwrite" messagedisposition="SaveOnly">
         <itemchanges>
            <ns2:itemchange>
               <ns2:itemid id="AQIARgAAAxpEc5CqZhHNm8gAqgAvxFoJAOr/1IthTkJMmh2oDv7/atkAAAMcAAAA6v/Ui2FOQkyaHagO/v9q2QAAAgg1AAAALgAAAxpEc5CqZhHNm8gAqgAvxFoDAOr/1IthTkJMmh2oDv7/atkAAAMcAAAA" changekey="FgAAABYAAADq/9SLYU5CTJodqA7+/2rZAAAAAAir" />
               <ns2:updates>
                  <ns2:setitemfield>
                     <ns2:path xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:PathToExtendedFieldType" propertytag="0x6849" propertytype="String" />
                     <ns2:item>
                        <ns2:extendedproperty>
                           <ns2:extendedfielduri propertytag="0x6849" propertytype="String" />
                           <ns2:value>
                              /o=My Domain/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=RECIPIENTS/cn=myuser_zimbra
                           </ns2:value>
                        </ns2:extendedproperty>
                     </ns2:item>
                  </ns2:setitemfield>
                  <ns2:setitemfield>
                     <ns2:path xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:PathToExtendedFieldType" propertytag="0x684F" propertytype="IntegerArray" />
                     <ns2:item>
                        <ns2:extendedproperty>
                           <ns2:extendedfielduri propertytag="0x684F" propertytype="IntegerArray" />
                           <ns2:values>
                              <ns2:value>
                                 32276
                              </ns2:value>
                              <ns2:value>
                                 32277
                              </ns2:value>
                              <ns2:value>
                                 32278
                              </ns2:value>
                           </ns2:values>
                        </ns2:extendedproperty>
                     </ns2:item>
                  </ns2:setitemfield>
                  <ns2:setitemfield>
                     <ns2:path xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:PathToExtendedFieldType" propertytag="0x6853" propertytype="IntegerArray" />
                     <ns2:item>
                        <ns2:extendedproperty>
                           <ns2:extendedfielduri propertytag="0x6853" propertytype="IntegerArray" />
                           <ns2:values>
                              <ns2:value>
                                 32276
                              </ns2:value>
                              <ns2:value>
                                 32277
                              </ns2:value>
                              <ns2:value>
                                 32278
                              </ns2:value>
                           </ns2:values>
                        </ns2:extendedproperty>
                     </ns2:item>
                  </ns2:setitemfield>
                  <ns2:setitemfield>
                     <ns2:path xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:PathToExtendedFieldType" propertytag="0x6851" propertytype="IntegerArray" />
                     <ns2:item>
                        <ns2:extendedproperty>
                           <ns2:extendedfielduri propertytag="0x6851" propertytype="IntegerArray" />
                           <ns2:values>
                              <ns2:value>
                                 32276
                              </ns2:value>
                           </ns2:values>
                        </ns2:extendedproperty>
                     </ns2:item>
                  </ns2:setitemfield>
                  <ns2:setitemfield>
                     <ns2:path xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:PathToExtendedFieldType" propertytag="0x6852" propertytype="BinaryArray" />
                     <ns2:item>
                        <ns2:extendedproperty>
                           <ns2:extendedfielduri propertytag="0x6852" propertytype="BinaryArray" />
                           <ns2:values>
                              <ns2:value>
                                 ZG6gbkKQfpA=
                              </ns2:value>
                           </ns2:values>
                        </ns2:extendedproperty>
                     </ns2:item>
                  </ns2:setitemfield>
                  <ns2:setitemfield>
                     <ns2:path xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:PathToExtendedFieldType" propertytag="0x6850" propertytype="BinaryArray" />
                     <ns2:item>
                        <ns2:extendedproperty>
                           <ns2:extendedfielduri propertytag="0x6850" propertytype="BinaryArray" />
                           <ns2:values>
                              <ns2:value>
                                 SCGiISZDREOAQ55D2kP4QzREcESoSAJJZG6gbghwYnBCkH6QaJfCl/ShqKI=
                              </ns2:value>
                              <ns2:value>
                                 RgWCBQgWYhZoPcI9yGQiZSiMgow=
                              </ns2:value>
                              <ns2:value>
                                 KAWCBQ==
                              </ns2:value>
                           </ns2:values>
                        </ns2:extendedproperty>
                     </ns2:item>
                  </ns2:setitemfield>
                  <ns2:setitemfield>
                     <ns2:path xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:PathToExtendedFieldType" propertytag="0x6854" propertytype="BinaryArray" />
                     <ns2:item>
                        <ns2:extendedproperty>
                           <ns2:extendedfielduri propertytag="0x6854" propertytype="BinaryArray" />
                           <ns2:values>
                              <ns2:value>
                                 SCGiISZDREOAQ55D2kP4QzREcESoSAJJCHBicGiXwpf0oaii
                              </ns2:value>
                              <ns2:value>
                                 RgWCBQgWYhZoPcI9yGQiZSiMgow=
                              </ns2:value>
                              <ns2:value>
                                 KAWCBQ==
                              </ns2:value>
                           </ns2:values>
                        </ns2:extendedproperty>
                     </ns2:item>
                  </ns2:setitemfield>
                  <ns2:setitemfield>
                     <ns2:path xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:PathToExtendedFieldType" propertytag="0x6848" propertytype="Integer" />
                     <ns2:item>
                        <ns2:extendedproperty>
                           <ns2:extendedfielduri propertytag="0x6848" propertytype="Integer" />
                           <ns2:value>
                              219017100
                           </ns2:value>
                        </ns2:extendedproperty>
                     </ns2:item>
                  </ns2:setitemfield>
                  <ns2:setitemfield>
                     <ns2:path xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:PathToExtendedFieldType" propertytag="0x6847" propertytype="Integer" />
                     <ns2:item>
                        <ns2:extendedproperty>
                           <ns2:extendedfielduri propertytag="0x6847" propertytype="Integer" />
                           <ns2:value>
                              218930700
                           </ns2:value>
                        </ns2:extendedproperty>
                     </ns2:item>
                  </ns2:setitemfield>
               </ns2:updates>
            </ns2:itemchange>
         </itemchanges>
      </updateitem>
   </soap:body>
</soap:envelope>


I have no idea what EWS doesn't like about this request, though.

Even if you can't help resolve this issue, it would be helpful to know if it is at least possible, or if this only works with Exchange 2013 and earlier.


mr_compsci
Posts: 3
Joined: Fri Dec 23, 2016 12:40 am

Re: Free/busy interop with Exchange 2016

Postby mr_compsci » Fri Apr 14, 2017 3:43 am

After failing to get this working in our test environment, I upgraded it to 8.7.7. It still failed to work. I deployed a fresh copy of 8.7.7 and configured it the same way, and now Zimbra is not logging any errors.

Zimbra now shows that it is updating free/busy information for the test account after I create a new meeting:

Code: Select all

2017-04-13 19:14:32,538 DEBUG [qtp1286783232-85:https:https://zimbra87.mydomain.com/service/soap/ModifyAppointmentRequest] [name=testuser2@zimbra87.mydomain.com;mid=4;ip=10.0.50.1;port=53286;ua=ZimbraWebClient - GC57 (Mac)/8.7.7_GA_1787;] fb - EWS Wsdl URL = jar:file:/opt/zimbra/jetty-distribution-9.3.5.v20151012/webapps/service/WEB-INF/lib/zm-ews-stub-1.0.jar!/EWS.wsdl
2017-04-13 19:14:33,210 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - Entering handleMailboxChange() for account : f7b7f85a-3f96-42eb-bd50-9a1f97a0d28a
2017-04-13 19:14:34,997 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - Start: 13 Apr 2017 19:30:00 GMT 18450
2017-04-13 19:14:34,997 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - End:   13 Apr 2017 20:00:00 GMT 18480
2017-04-13 19:14:34,997 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - Start: 13 Apr 2017 20:30:00 GMT 18510
2017-04-13 19:14:34,997 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - End:   13 Apr 2017 22:30:00 GMT 18630
2017-04-13 19:14:34,997 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - Start: 13 Apr 2017 23:00:00 GMT 18660
2017-04-13 19:14:34,998 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - End:   14 Apr 2017 00:30:00 GMT 18750
2017-04-13 19:14:34,998 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - Start: 14 Apr 2017 01:00:00 GMT 18780
2017-04-13 19:14:34,998 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - End:   14 Apr 2017 01:30:00 GMT 18810
2017-04-13 19:14:34,998 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - Start: 14 Apr 2017 18:45:00 GMT 19845
2017-04-13 19:14:34,998 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - End:   14 Apr 2017 19:15:00 GMT 19875
2017-04-13 19:14:34,998 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - Start: 14 Apr 2017 20:30:00 GMT 19950
2017-04-13 19:14:34,998 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - End:   14 Apr 2017 21:30:00 GMT 20010
2017-04-13 19:14:34,998 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - Start: 14 Apr 2017 22:00:00 GMT 20040
2017-04-13 19:14:34,998 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - End:   14 Apr 2017 22:30:00 GMT 20070
2017-04-13 19:14:34,998 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - Start: 13 Apr 2017 19:30:00 GMT 18450
2017-04-13 19:14:34,998 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - End:   13 Apr 2017 20:00:00 GMT 18480
2017-04-13 19:14:34,998 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - Start: 13 Apr 2017 20:30:00 GMT 18510
2017-04-13 19:14:34,998 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - End:   13 Apr 2017 22:30:00 GMT 18630
2017-04-13 19:14:34,998 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - Start: 13 Apr 2017 23:00:00 GMT 18660
2017-04-13 19:14:34,999 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - End:   14 Apr 2017 00:30:00 GMT 18750
2017-04-13 19:14:34,999 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - Start: 14 Apr 2017 01:00:00 GMT 18780
2017-04-13 19:14:34,999 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - End:   14 Apr 2017 01:30:00 GMT 18810
2017-04-13 19:14:34,999 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - Start: 14 Apr 2017 18:45:00 GMT 19845
2017-04-13 19:14:34,999 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - End:   14 Apr 2017 19:15:00 GMT 19875
2017-04-13 19:14:34,999 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - Start: 14 Apr 2017 20:30:00 GMT 19950
2017-04-13 19:14:34,999 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - End:   14 Apr 2017 21:30:00 GMT 20010
2017-04-13 19:14:34,999 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - Start: 14 Apr 2017 22:00:00 GMT 20040
2017-04-13 19:14:34,999 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - End:   14 Apr 2017 22:30:00 GMT 20070
2017-04-13 19:14:35,090 DEBUG [EXCHANGE2010 Free/Busy Sync Queue] [] fb - Exiting handleMailboxChange() for account : f7b7f85a-3f96-42eb-bd50-9a1f97a0d28a


Wireshark shows that Exchange is replying with HTTP 200 and the following XML:

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<s:envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:header>
      <h:serverversioninfo majorversion="15" minorversion="1" majorbuildnumber="669" minorbuildnumber="32" version="V2016_07_13" xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
   </s:header>
   <s:body>
      <m:updateitemresponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
         <m:responsemessages>
            <m:updateitemresponsemessage responseclass="Success">
               <m:responsecode>
                  NoError
               </m:responsecode>
               <m:items>
                  <t:postitem>
                     <t:itemid id="AQIARgAAAxpEc5CqZhHNm8gAqgAvxFoJAOr/1IthTkJMmh2oDv7/atkAAAMcAAAA6v/Ui2FOQkyaHagO/v9q2QAAAgg3AAAALgAAAxpEc5CqZhHNm8gAqgAvxFoDAOr/1IthTkJMmh2oDv7/atkAAAMcAAAA" changekey="FgAAABYAAADq/9SLYU5CTJodqA7+/2rZAAAAnXuH" />
                  </t:postitem>
               </m:items>
               <m:conflictresults>
                  <t:count>
                     0
                  </t:count>
               </m:conflictresults>
            </m:updateitemresponsemessage>
         </m:responsemessages>
      </m:updateitemresponse>
   </s:body>
</s:envelope>


However, Exchange users still cannot see free/busy information for Zimbra users. Both OWA and Outlook say that no information is available for the Zimbra user. The EWS logs do not show any errors.
mr_compsci
Posts: 3
Joined: Fri Dec 23, 2016 12:40 am

Re: Free/busy interop with Exchange 2016

Postby mr_compsci » Thu Apr 20, 2017 11:49 pm

I contacted Microsoft about this and they said Exchange 2016 does not support retrieving free/busy information from public folders. 2013 appears to be the last version to support this.

Return to “Administrators”

Who is online

Users browsing this forum: asalar, cyber7, Google [Bot] and 21 guests