Managing OAB in Exchange Server 2013
Published Jan 14 2013 01:09 PM 243K Views

The Exchange team blog article OAB in Exchange Server 2013 introduced the new Offline Address Book (OAB) generation and distribution architecture in Exchange Server 2013. Take a few moments to visit the article if you haven’t seen it yet or re-visit it for a quick refresher. The OAB management and administration is different in Exchange 2013 because of architecture changes. Additionally, the new Exchange Admin Center does not currently have options for managing OABs. This means that, at this time, you will need to use Exchange Management Shell for OAB-related tasks. This article takes you through commonly performed tasks in OAB administration and has a couple of real life scenarios to help understand the tasks better.

Note: If you are in multi-forest Active Directory domain environment, make sure the Shell session has ViewEntireForest is enabled, else some of the commands in the article won’t return any output.

Command to enable ViewEntireForest:

Set-ADServerSettings -ViewEntireForest $true

Creating a new OAB

Creating a new OAB in Exchange 2013 no longer uses the -Server parameter. In order to create a new OAB, you should only specify the address lists to be required. The following example creates OAB for address list named “Global Address List FAB”

New-OfflineAddressBook -Name OAB-FAB -AddressLists "Global Address List FAB"

Identify the OAB generation server(s)

The arbitration mailboxes in Exchange Server 2013 are assigned certain “Persisted capability” that defines the purpose/function of the arbitration mailbox. An arbitration mailbox with Persisted Capability “OrganizationCapabilityOABGen” is responsible for OAB generation. We will refer this mailbox as “Organization Mailbox” throughout the article. Exchange Server 2013 mailbox server hosting the Organization Mailbox will generate all OAB’s defined in the environment. For a non-DAG environment, use following command to identify the OAB Generation servers:

Get-Mailbox -Arbitration | where {$_.PersistedCapabilities -like "*oab*"} | ft name,servername

image For a DAG environment, identifying OAB generation server(s) is a two-step process. Step1: Identify the mailbox database hosting organization mailbox with OAB Gen capability. Use the following command to list the arbitration mailboxes with persisted capability of OABGen and database on which this mailbox is hosted:

Get-Mailbox -Arbitration | where {$_.PersistedCapabilities -like "*oab*"} | ft name,database

image Step2: Identify the mailbox server where the database hosting organization mailbox is mounted Use following command to identify active copy of mailbox database:

Get-MailboxDatabaseCopyStatus db1

image The server where database status is “mounted” is the current OAB generation server.

Change the OAB generation server

There are two methods of changing the OAB generation server.

Move mailbox

Move the organization mailbox to a mailbox database on a server intended to be designated as OAB Generation server. Example: DB1 is a single copy database present on the server Exch1 and hosts the organization mailbox. DB2 is mailbox database present on Exch2. The following command can be used to move the organization mailbox to DB2 and make Exch2 the OAB generation server.

Get-Mailbox -Arbitration -database db1| where {$_.PersistedCapabilities –like “*oab*”} | New-MoveRequest -TargetDatabase db2

This method is more suited for environments that have single copy of mailbox database hosting the Organization Mailbox.

Activate the mailbox database on another server

This method is suited for environments that have multiple copies of the mailbox database hosting Organization Mailbox. Example: DB1 hosts the Organization Mailbox and has copies on servers Exch1 and Exch2. DB1 is currently active on Exch1. The following command can be used to activate DB1 on Exch2 and therefore make it the OAB generation server:

Move-ActiveMailboxDatabase DB1 -ActivateOnServer Exch2

Note: Review guidelines mentioned in “Placement of Organization Mailbox” below before changing the OAB Generation server.

Creating a new Organization Mailbox

Administrators can create additional Organization Mailboxes for fault tolerance or for serving users in a geographically disbursed Exchange deployment. Creating a new Organization Mailbox is a two step process: Step1: Create a new arbitration mailbox

New-Mailbox -Arbitration -Name "OAB Seattle" -Database DB2Seattle -UserPrincipalName oabs@contoso.com –DisplayName “OAB Mailbox for Seattle”

Step2: Enable OABGen capability

Set-Mailbox -Arbitration oabs -OABGen $true -MaxSendSize 1GB

Note: Review guidelines mentioned in “Placement of Organization Mailbox” below before creating additional organization mailboxes.

Changing the OAB Generation Schedule

The OAB Generation till Exchange Server 2010 was based on a “Schedule” set on OAB properties. You might see a “Schedule” defined when viewing properties of Exchange 2013 OAB. But, the Exchange Server 2013 OAB generation does not take place according to the “Schedule” defined on OAB properties: image Instead, Exchange Server 2013 OAB Generation takes place according to OABGeneratorWorkCycle and OABGeneratorWorkCycleCheckpoint properties configured at the Mailbox Server. Example: image The values in the above screenshot mean OAB is generated once every day.

Which Mailbox Server processed the OAB download request?

The Exchange Server 2013 CAS role proxies the OAB download request to an appropriate Mailbox role server. The CAS role maintains log of each request it handles in the log files, present in folder %ExchangeInstallPath%\Logging\HttpProxy\OAB\ These log files are an excellent tool to identify which mailbox server the CAS chose to serve the request. Information of some important fields from the log file:
Field Description
UrlStem Useful to identify the OAB being downloaded and also if this was a full download or incremental download
AuthenticatedUser Name of the User requesting the OAB
AnchorMailbox DN of Organization Mailbox identified as the closest to serve the OAB request
ServerHostName CAS Server Name handling the request
HttpStatus Status code for Proxy action
ProxyAction Action CAS Server performed for the request, it will be mostly “Proxy” for Exchange 2013 OAB
TargetServer Name of Mailbox role server to which request was proxied
The log file can be imported in Excel for better readability. Example: image

Forcing the OAB Generation

The Exchange Server 2013 OAB generation can be forced to start immediately by two methods.

Method 1: Update-OfflineAddresBook

Below command will force OAB generation of an OAB named "Default Offline Address Book" across all organization mailboxes.

Update-OfflineAddressBook "default offline address book"

Note: This command initiates an RPC request to each mailbox server hosting an active organization mailbox.

Method 2: Restart the Mailbox Assistant service.

The Microsoft Exchange Mailbox Assistant service on Mailbox Role is responsible for generating OAB. Restarting this service generates all OAB’s defined in the environment on a specific mailbox server, if it’s hosting an active organization mailbox.

Placement of Organization Mailbox

Exchange Server 2013 CAS role proxies the OAB download request to a “nearest” mailbox server hosting an active Organization Mailbox. It can proxy the request in round robin fashion if it finds more than one organization mailbox active in same AD site. Prior to CU5, this will result in frequent full OAB downloads and is therefore, not recommended. Hence, current guidance is to plan organization mailbox placement such that you will have one organization mailbox active in an AD site. This applies to creating a new organization mailbox as well as to creating copies of mailbox database that hosts an organization mailbox. Prior to CU5, customers should only deploy a single OAB generation mailbox per Exchange organization to prevent users from accessing different OAB generation mailboxes and requiring a full OAB download.  With CU5 and later, customers can assign OABs to specific OAB generation mailboxes and not have to worry about accidentally triggering full OAB downloads due to accessing different OAB generation mailboxes.  For more information, please see the article, OAB Improvements in Exchange 2013 Cumulative Update 5.

Scenarios

The following scenarios discuss a real life situation to further explain the new OAB management methods.

Scenario 1: Create a new Organization Mailbox

Contoso has Exchange Server 2013 Mailbox & CAS role servers deployed at Dallas and Seattle sites. John, the Exchange Admin for Contoso, analyzes the http proxy log files on CAS servers and finds the OAB download request for Seattle users is going to Dallas servers. On further investigation, John finds he has just one Organization Mailbox present in Dallas, hence OAB download requests of all the users are going to Dallas server. He decides to create a new Organization Mailbox at Seattle site with following commands: Step1: Create a new Arbitration Mailbox

New-Mailbox -Arbitration -Name "OAB Seattle" -Database DB2Seattle -UserPrincipalName oabs@contoso.com –DisplayName “OAB Mailbox for Seattle”

Step2: Enable the Arbitration Mailbox with OABGen capability

Set-Mailbox -Arbitration oabs -OABGen $true -MaxSendSize 1GB

Scenario 2: Customize OAB Generation Schedule

Ben is an administrator of Exchange 2013 deployment at Tail Spin Toys. The default OAB generation schedule does not suit them and they want to generate OAB approximately every fourth hour of the day. Ben will use following command to change properties of the mailbox servers that will be hosting the Organization Mailbox.

Set-MailboxServer Exch1 -OABGeneratorWorkCycle 01.00:00:00 -OABGeneratorWorkCycleCheckpoint 04:00:00

After a couple of days, John analyzes Event ID 17002 in application log and makes sure the OAB is generated every four hours. image Hopefully, you find this post useful! Let us know your feedback below! Bhalchandra Atre

Updates

  • 5/15/14: Updated Placement of Organization Mailbox section to align with current guidance.
11 Comments
Not applicable

So, it's all command-line PowerShell based? Nah, I'll wait for the GUI.

Not applicable

Here "Note: If you are in multi-forest Active Directory domain environment..." you probably meant "in multi-domain AD forest environment'.

And here "The OAB Generation till Exchange Server 2010 was based on a “Schedule”..." you probably meant "till Exchange 2013".

Not applicable

Andrei # Thanks for catching the First one, it is indeed for multi-domain environment. About second point, OAB generation in Exchange 2013 does not start at a fixed schedule.

Not applicable

Thanks Bhalchandra.

Nicely mentioned the log results and scenario, It is useful and informative :)

Not applicable

You are writing "The OAB Generation till Exchange Server 2010 was based on a “Schedule”. It means in 2010 it does not start on schedule too. Is that right?

Not applicable

Ok... by "till" you probably meant - before 2010 and including 2010 :) I think you should rephrase the sentence though :)

Not applicable

Nice Article bhalchandra. Thanks for sharing about logging and stuffs.

Not applicable

"It can proxy the request in round robin fashion if it finds more than one organization mailbox active in same AD site. This might result in frequent full OAB download."

Can you please expand on this scenario & explain how having multiple OAB-Arbitration mailboxes in the same AD site could result in more full OAB downloads than normal? Thanks.

Not applicable

ASHigginbotham # If you go for more than one org mailbox per site, each OAB mailbox will have it's own setup of OAB files, with different names, generation time etc. The Outlook client, if CAS proxies them to different org mailboxes, will download the Full OAB as they see new file names/generation times etc. It may some time even result in corruption of OAB files.

Not applicable

Excellent post. Thanks!

Microsoft
You may see MessageSubmissionExceededException errors with OAB Generation in 17004 events in the app log on the server holding the generation system mailbox. This will only happen if you have a very large OAB. By default the MaxSendSize is set to Unlimited for the OAB generation system mailbox. This setting is overridden by the transport MaxSendSize. To avoid this issue set the MaxSendSize on the OAB generation mailbox to 1,000,000,000 or something larger than your OAB size.
Version history
Last update:
‎Jul 01 2019 04:10 PM
Updated by: