OAB Generation on a cluster server fails with event id 9395 or 9396

When you are building an OAB Version 4 Offline Address Book on a cluster server (CCR or SCC) we can fail to generate the OAB with an event id 9395 or event id 9396. In Exchange 2007 RTM (Release Build) our support for the  OAB Generation process running on clusters servers is covered by the following scenarios:

Scenario 1 - SCC cluster Servers

In this cluster type all nodes will share the same physical storage. When we are installing the mailbox role the setup process will create the following registry value 'SYSTEM\CurrentControlSet\Services\MSExchangeSA\Parameters\ {Clustered-Mailbox-Server name} \OabDropFolderLocation' which is the shared registry location between the server nodes, and points to the existing path on shared storage. Regardless of which node is active at the moment OABGen kicked off, the process will be able to find both the registry key and the path to drop location. If this does not happen, event 9396 is logged.

Event Type: Error
Event Source: MSExchangeSA
Event Category: OAL Generator
Event ID: 9396
Date: 2007-01-26
Time: 1:55:10
User: N/A
Computer: OABGen-Server
Description:
OALGen is running on an SCC cluster node which does not have the registry value
'SYSTEM\CurrentControlSet\Services\MSExchangeSA\Parameters\OABGen-Server\OabDropFolderLocation' or it is set to a non-existing path. OAB generation will not be performed.

NOTE: Possible reasons for a failure:

  • Not all nodes in the cluster are running RTM code
  • The registry value was deleted
  • The shared directory was deleted
  • The shared storage is down.

How To Fix

If this registry value is missing, it most likely means that not all nodes are running the RTM version of Exchange 2007. The fix solution should be to reinstall the cluster nodes with the pre-RTM Exchange version (if this was the version of Exchange that was used during your install). If the registry value was accidentally removed and needs to be re-created, it should point to the shared location, not system drive (which is not shared), something like K:\OABGen, where K: is shared storage drive.

NOTE: The Cluster Server Manager should be used to make sure all clustered resources are online.

Scenario 2 - CCR cluster Servers

In this cluster type nodes do not share the same physical storage; instead, the passive node continuously replicates database updates, but not the OAB files. Therefore, as the OAB Generation process needs access to the results of previous generation, only one CCR cluster node is able to generate the OAB data files, making such cluster basically asymmetric with regard to OABGen.

To control this behavior the Exchange setup process creates the registry value 'SYSTEM\CurrentControlSet\Services\MSExchangeSA\Parameters\OABGen-Server\EnableOabGenOnThisNode' which contains name of the node installed first, and from now on assumed as ‘primary’ cluster node. Whenever cluster has failed over to the ‘secondary’ node, the scheduled or forced OAB Generationtask will log the event id 9395 andfinishes.

Event Type: Error
Event Source: MSExchangeSA
Event Category: OAL Generator
Event ID: 9395
Date: 2007-01-26
Time: 1:55:10
User: N/A
Computer: OABGen-Server
Description:
OALGen is running on CCR cluster node which does not have registry value 'SYSTEM\CurrentControlSet\Services\MSExchangeSA\Parameters\OABGen-Server\EnableOabGenOnThisNode' or it is not set to this node name. OAB generation will not be performed.

With this being said OAB's are still available from both Public Folders and CAS servers, but the data becomes stale and is not updated until the ‘primary’ node becomes active again. If mentioned above registry value is completely missing, or contains name of machine that no longer exists or is no longer part of this cluster, one should change it to the name of the existing node.If Public Folder distribution is not enabled on one or more OABs generated by such CMS, switching to the new node will cause full download by clients, as OAB sequence number will be reset.

How To Fix

This is an expected error if the ‘primary’ CCR node is temporarily unavailable, so just make sure it is back online ASAP. Otherwise, the following registry key needs to be in place and contain valid cluster node name: HKLM\System\CurrentControlSet\Services\MSExchangeSA\Parameters\Server-Name\EnableOabGenOnThisNode ="ThisNodeName".

NOTE: Make sure that you updated the registry value on the CCR node to be the name of the CCR node.

Thanks to Vladimir Kritchko for reviewing this blog!!!

Dave