Friday, October 17, 2014

Fixing Blank Calendar with Chrome 38 and Outlook Web App (OWA) on Exchange 2013

So there's an issue with Chrome 38 and higher and Exchange 2013 Outlook Web App (OWA): the calendar will fail to load any data effectively showing up blank for users. You'll also see the error in the client headers as "ClientError;exMsg=Uncaught SyntaxError: Unexpected token );file=https://mail.corp.com/owa/15.0.995.29/owa2/scripts/boot.0.mouse.js:11". This is not the  modalDialog issue that's causing issues with OWA 2010, it's an issue with Chrome's V8 javascript engine their array object definition.

The fix is pretty simple to implement. On one of your mailbox servers copy the contents of: C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\Owa\prem\15.0.995.29\scripts\ to a directory on your workstation (may want to make a backup copy on the server just in case). There's no need to copy any subdirectories, only the root js files. Also note that you may have a different version number in there: 15.0.995.29 is Update 6.

Using Notepad++, find and replace in all files in the directory on your local machine: replace '"values"in n' with 'n.hasOwnProperty("values")' (without the surounding 's). On 15.0.995.29 this was 42 replacements:


Copy the updated files back to all of your Exchange Mailbox servers (if you segregate your CAS and MB hosts, you only need to update on the MB hosts as they do the actual site rendering). Also after you update the files there's no need to cycle the AppPool, clients just need to logout and log back into OWA (if you have a NetScaler or similar load balancer in between doing any form of caching you may need to refresh that).

You can actually see Microsoft's implemented the same fix for this in the Office 365 release chain; they added the fix between 16.0.411.0 and 16.0.411.1:
https://r1.res.office365.com/owa/prem/16.0.411.0/scripts/boot.0.mouse.js
https://r1.res.office365.com/owa/prem/16.0.411.1/scripts/boot.0.mouse.js


Credit to finding the root issue goes to adamk@chromium.org, the Chrome issue is here:
https://code.google.com/p/chromium/issues/detail?id=409858

Update for Chrome looks like it's coming down the pipeline soon, should also be in the Exchange 2013 Update 7 in late November.