New SP2 default behavior and OAB Generation PDN Changes

There has been a lot of questions and confusion around the differences in the behavior between exchange service packs, specifically service pack 2. By default now in Exchange 2003 SP2 we’ve changed behavior in what OAB Version 2 and OAB Version 3 does when it detects a PDN change (addition or removal) during the generation process.

The old behavior (prior to Exchange 2003 SP2) was that we would not generate a difference file when a failure occurred due to a PDN change, but we would still create and post a full OAB message. Now if the application logs are not being monitored no one would even know there was a generation failure. This could cause differences in the sizes of the details file that are downloaded by the Outlook clients, based on when the last full OAB was posted and what was posted in it.

Now the reason why Outlook clients have to do a full download of the OAB is because the pdndex.oab file cannot be re-indexed after it has been created on the client side. This can only happen on a full download. In addition to the above mentioned behavior once the Outlook client tries to download the OAB difference files, it will notice that there is no difference file and the clients will be forced to do a full download and this will get the OAB full post.

This can and will generate a lot of heavy network traffic and cause other issues like non-paged pool depletion issues. For more information on the non-paged pool depletion please refer to this blog: OAB full downloads and server side paged pool depletion.

If you suspect that you are having issues with full downloads and would like to monitor this traffic you can follow the steps below:

1. Run Performance Monitor.
2. Select the Performance Object then select MSExchangeIS. Under the MSExchangeIS performance object you will see the following OAB counters

OAB: Differential Download Attempts
OAB: Differential Download Bytes
OAB: Differential Download Bytes/sec
OAB: Full Download Attempts
OAB: Full Download Attempts Blocked
OAB: Full Download Bytes
OAB: Full Download Bytes/sec

One way you can try to stop Outlook clients from being affected by this PDN problem is to both upgrade the Outlook client and the Exchange server to service pack 2. If the Outlook client is on SP2 it should automatically upgrade the profile to the Version 4 providing that the client is already using a Unicode profile, and that they actually connected to the server where the OAB Version 4 is located.

Now with Exchange 2003 Service Pack 2 the new behavior is to not generate a difference file or a full OAB post. This will be the root of all evil during migrations, however the good thing is that you will have a chance to see what objects are causing the PDN table changes that lead to 9340's and 9341's. For more information on the OAB PDN Changes and Exchange Site Consolidations, please see this blog: https://blogs.msdn.com/dgoldman/archive/2005/11/18/494545.aspx

A new addition with SP2 that will allow you to have the ability to add a registry key called “OAL post full if diff fails”. The “OAL post full if diff fails” registry key forces the Exchange to post a full OAB message when a difference failure has occurred by reverting the generation behavior back to SP1 behavior.

You MUST be careful when using this registry key. The reason why I am saying this is that you should not use this registry key to force the server to post a full message every time there is a failure because this will still cause full downloads (we have to post the full OAB message after the failure). You really should follow my other blog in regards to how to migrate and all of the causes for PDN changes. If you are in the middle of the migration and you feel that the objects that are being found are valid and need to be added to the OAB, then you might want to use this registry key.

Below I am providing a high level overview of what the OAB generation process does based on the service pack versions.

Example - Exchange 2000 - Exchange 2003 SP1
1. OABGen rebuilds an address list by schedule or by an Administrator via the ESM.
2. OABGen will connect to the active directory via NSPI interface for the necessary data.
3. Once the data is downloaded to the system temp directory, OABGen will sort the downloaded data and the old OAB files.
4. After the sort OABGen will compare the data that was read from the active directory and the downloaded OAB files.
5. A PDN change was detected (an addition or removal of a PDN).
6. Difference generation FAILS, but OABGen process posts a full OAB message. (This will contains the changes).
7. Clients will perform a full download, but the OAB data is current.

Example - Exchange 2003 SP2 without the "OAL post full if diff fails" registry key in place.
1. OABGen rebuilds an address list by schedule or by an Administrator via the ESM..
2. OABGen will connect to the active directory via NSPI interface for the necessary data.
3. Once the data is downloaded to the system temp directory, OABGen will sort the downloaded data and the old OAB files.
4. After the sort OABGen will compare the data that was read from the active directory and the downloaded OAB files.

5. OAB Difference File generation FAILS, NO OABGen post is made to the public folder store. (The data is discarded and the next time we generate we will compare the same active directory data against the OAB post in the store. This WILL result in the same errors.)
6. Clients will not download anything

NOTE: OAB Version 4 builds differently so clients that are on OAB Version 4 will download their OAB just fine.

Example - Exchange 2003 SP2 with the "OAL post full if diff fails" registry key in place.
1. OABGen rebuilds an address list by schedule or by an Administrator via the ESM..
2. OABGen will connect to the active directory via NSPI interface for the necessary data.
3. Once the data is downloaded to the system temp directory, OABGen will sort the downloaded data and the old OAB files.
4. After the sort OABGen will compare the data that was read from the active directory and the downloaded OAB files.
5. Diff generation fails, but OABGen is forced to post the data that we have. (This contains the changes).
6. Clients will perform a full download, but the OAB data is current.

Dave