Currently I’m upgrading an Exchange 2013 environment to Exchange 2016. In general this upgrade runs very smoothly and is almost seemless for user. It’s a complete different story when you’re coming from Exchange 2010.
So far I got only positive feedback and no issue were reported. Until a bunch of shared mailbox have been migrated.
Users complained they cannot access these mailbox anymore. First I couldn’t reproduce the issue, until I got another important detail:
All these user are using Outlook for Mac and indeed I could reproduce the behavior.
A user with a mailbox on Exchange 2013 was granted FullAccess to a mailbox on Exchange 2016. When he tries to access the mailbox using method 3 as described in this KB article, only the folder structure is visible, but no items.
As we were talking about Outlook for Mac, which uses EWS, I used my script Get-EWSStats.ps1 and pulled the data from the logs. But the result were not really clear as the logs were full with the error ErrorInvalidServerVersion
You can find a list of ResponseCode here. But the error
“This error indicates that an invalid request server version was specified in the request.”
was not really helpful. Therefore I decided to use Fiddler. I think this is the best tool to analyze EWS request as it’s easy to configure and has the built-in ability to display XML data. And now the previous error makes perfect sense:
Outlook for Mac requests version V2016_07_13 when it’s sending GetItem SoapCommand. The problem is that Exchange 2013 doesn’t know this version and the response is as expected: ErrorInvalidServerVersion
The only workarounds are the following ones:
- migrate the user to Exchange 2016
- use Outlook for Windows
Looks like someone missed a test scenario. This is definately an issue, which needs to be fixed on client-side. It’s how Exchange works since version 2013:
In Exchange 2013 we still have the Client Access Server role and with Exchange 2016 we have Client Access Services. Both authenticate the incoming request and route the request to the Mailbox server, which has the active copy of the database hosting the mailbox. You can read the full details in this EHLO post.
Thus means the request will never go directly to the mailbox, where the user has FullAccess to. The request get proxied via his Mailbox server.
A possible solution would be Outlook for Mac is using the version of the main mailbox instead of the target mailbox. The way around from Exchange 2016 to 2013 works as expected.
I opened a PSS case and the issue is under investigation.