Troubleshooting OAB issues in Exchange 2013

In this article, we will be looking into issues faced in OAB after users have been migrated from Exchange 2007/2010 to Exchange 2013.

Unlike the previous versions of Exchange the OAB generation process in Exchange 2013 has been completely changed. So the troubleshooting OAB part in Exchange 2013 is little bit different while compared to older versions

 If you are running an older version of Exchange 2007/2010 first run the below command to change the default OAB to Exchange 2013:

1. Run the command in Exchange 2013 EMS to change the default OAB on Exchange 2013 databases:

 Get-MailboxDatabase | Set-MailboxDatabase -OfflineAddressBook "\Default Offline Address Book (Ex2013)"

You can accomplish this task via EAC as well as shown below but this has to be done for each and every DB one by one.

Click Servers – databases – client settings and select the default OAB to be selected for the databases.

Also, check if the OAB virtual directories are set properly in Exchange 2013. You can check by running the below command:

Set-OabVirtualDirectory -Identity "exchange2013\OAB (Default Web Site)" -InternalUrl https://mail.exchangequery.com/oab -ExternalUrl https://mail.exchangequery.com/oab

In our case, since we have not set the virtual directories on Exchange 2013, we're running the below command to set the virtual directories first in Exchange 2013 and showing the output.

After running the above command we can see the virtual directories showing up in external and internal URL.

Now let’s look into troubleshooting the OAB issues in Exchange 2013.

 First, run Get-offlineaddressbook |fl and see if the default offline address book assigned has virtual directories linked with them and is set to true as shown below.

If there are no virtual directories specified the OAB will not work.

Now you need to look if there is anything wrong with the arbitration mailbox which holds the OAB by running the below command and see if there is associated  arbitration mailbox for OAB:

 Get-Mailbox –Arbitration | where-Object {$_.PersistedCapabilities –Like “*OabGen*”} | FL Name,Persisted*

There should be an associated arbitration mailbox for OAB. If there is not then create a new arbitration mailbox and assign it to OAB by running the below command:

Set-Mailbox -Arbitration “arbitrationmbxname” -OABGen $true

If everything seems to be fine then please run the below command to see where the arbitration mailbox resides:

Now run the below command to check if the arbitration mailbox database is healthy:

If the database if healthy and mounted then run the below command to check the OAB generation cycle work point:

What is OAB generation cycle check point?

The default setting of the OAB update is generated once in every day and that’s why we have it as 1 specified. So we need to have this setting. If there are no values specified and if it is then null OAB will not be functioning.

You can run the below commands to change the above parameters value and if there is no value set on them.

Set-MailboxServer <SERVERNAME> -OABGeneratorWorkcycle 00.05:00:00

Set-MailboxServer <SERVERNAME> -OABGeneratorWorkCycleCheckpoint 01:00:00

Also, you can force the OAB download to happen by running the below command like we do it for Exchange 2007 & 2010 and see if users are able to download OAB.

Update-OfflineAddressBook -Identity "Default Offline Address List (Ex2013)"

Also, you can run below command to see if the certificate is issued to name mail.exchangequery.com in our example

Get-OutlookProvider | FL Identity,CertPrincipalName

Run the below command if there is no cert principal name issued 

Set-OutlookProvider EXPR -CertPrincipalName:"msstd:<FQDN the certificate is issued to>"

This can be a guide for troubleshooting OAB since there could be few more factors considering OAB download not happening.