How to tell what public folder store your Outlook client is going to when you fail to download the OAB with error 0x8004010f

There are a lot of common reasons why an Outlook client will fail to download the OAB. Some of the common reasons are

  1. There is no OAB associated with the users mailbox store.
  2. The OAB has not been generated.
  3. No local OAB public folder replica.
  4. Client is possibly going out of site to a different public folder store.
  5. The public folder object does not exist. For more information see blog: https://blogs.msdn.com/dgoldman/archive/2006/10/15/generating-a-newly-created-offline-address-book-fails-with-errors-9331-and-9335.aspx
  6. Using the ms-Associated-External-Account in the wrong fashion. For more information see blog: https://blogs.msdn.com/dgoldman/archive/2007/08/23/having-problems-downloading-the-oab-after-you-have-migrated.aspx
  7. etc, etc, etc...

All of the mentioned above items can affect the EntryID that is stamped on the mailbox information store. This EntryID is called PR_ADDRBOOK_FOR_LOCAL_SITE_ENTRYID and it maps to an OAB folder. This is the EntryID that the Outlook client will use to open the OAB system folder so it can download the OAB information.

Example:

  • You have a mailbox store with 1 user called OAB-User.
  • The information store has an OAB associated with it call "Default Offline Address List".
  • Once OAB-User logs in the information store will look at the Windows profile information to get some information and during that process we will convert the information needed to get the EntryID.  This OAB EntryID will be store in the Information Store's store table. Only Online clients can see this.
  • You can also see which OAB is associated with the mailbox store by looking in the ESM or looking at the msExchUseOAB attribute on the mailbox store object.

Now how do we find out where the client is going? There are two tests within OABInteg that can be used with each other to give you this information. Here are the two tests:

  1. oabinteg /s:serverName /t:hierarchylist /v:2 /l
  2. oabinteg /s:serverName /t:oabfldcheck /v:2 /l

Both of these test will simulate Outlook client connectivity. Both tests will get the EntryID to the OAB folder. First run the Hierarchylist test. This will give you the EntryID's for all of your public folders on the given information store.

1. From the Outlook client having the problem run the following: oabinteg /s:serverName /t:hierarchylist /v:2 /l

You will see an output similar to this below:

=====================================================
OABInteg (Offline Address Book Integrity Checker)
Product Version 06.05.7839.1
OABInteg.exe
Microsoft Corporation, Copyright (C) 2006
Microsoft and Windows are registered trademarks of Microsoft Corporation.
=====================================================

Command line arguments: oabinteg.exe /s:serverName /t:hierarchylist /v:2 /l

Checking to see if OABInteg is running on an Exchange Server
Unable to open \HKEY_LOCAL_MACHINE\Software\Microsoft\Setup\
Exchange Server is not running on this computer.
Total registry keys found 0.
Total registry values found 0.

Starting Test 13 - Get Public Folder Hierarchy Information
The MAPI subsystem was initialized successfully.

Attempting to create OABInteg-Admin_05:45:51 PM profile on ComputerName.
OABInteg-Admin_05:45:51 PM profile was created in the Windows Messaging Subsystem on ComputerName.

Obtaining a MAPI Session.
Initializing MAPI profile.
Logging on to MAPI session with the selected profile.

Profile linked to Mailbox: /O=Company/OU=America/cn=Recipients/cn=dgoldman
Profile Version: 0x1
Profile Type: 0x0

Opening the Exchange Public Folder Store.
Retrieving the message store table.
Obtaining store table properties.

Hierarchy Server: Public Folder Server 1
Store Offline: 0 (1 = True | 0 = False)

Trying to retrieve the property for the PR_OFFLINE_ADDRBOOK_ENTRYID.
Property for PR_ADDRBOOK_FOR_LOCAL_SITE_ENTRYID found.
PR_OFFLINE_ADDRBOOK_ENTRYID: 000000001A447390AA6611CD9BC800AA002FC45A0300790431D57047B94A8B692E587C735EEE0000000000
050000
Using the PR_OFFLINE_ADDRBOOK_ENTRYID to open the OAB System folders.
System folder opened.

Folder Name: OFFLINE ADDRESS BOOK
Replica Server Name: Public Folder Server 1
URL Name: /NON_IPM_SUBTREE/OFFLINE ADDRESS BOOK

OAB Folder EntryID: 000000001A447390AA6611CD9BC800AA002FC45A0300790431D57047B94A8B692E587C735EEE0000000000050000

Obtaining the hierarchy table for the system folder.
25 folders found.

Folder Name: /o=Company/cn=addrlists/cn=oabs/cn=Default Offline Address List
Replica Server Name: PF Server 2
URL Name: /NON_IPM_SUBTREE/OFFLINE ADDRESS BOOK/
OAB Folder EntryID: 000000001A447390AA6611CD9BC800AA002FC45A0300B4CF3F5BB03DC0499AB07A96F707B1AB0000000000080000

Folder Name: OAB Version 2
Replica Server Name: PF Server 2
URL Name: /NON_IPM_SUBTREE/OFFLINE ADDRESS BOOK/
OAB Folder EntryID: 000000001A447390AA6611CD9BC800AA002FC45A0300B2F0D580BAC8BC479CEA73A8D1FA1B6C0000383BE4CA0000

Folder Name: OAB Version 3a
Replica Server Name: PF Server 2
URL Name: /NON_IPM_SUBTREE/OFFLINE ADDRESS BOOK/
OAB Folder EntryID: 000000001A447390AA6611CD9BC800AA002FC45A0300B2F0D580BAC8BC479CEA73A8D1FA1B6C0000383BE4CD0000

Folder Name: OAB Version 4
Replica Server Name: PF Server 2
URL Name: /NON_IPM_SUBTREE/OFFLINE ADDRESS BOOK/
OAB Folder EntryID: 000000001A447390AA6611CD9BC800AA002FC45A03004A3388834FB960438CC4369485DE30F500001DCABE3F0000

Folder Name: /o=Company/cn=addrlists/cn=oabs/cn=Offline Address List 1
Replica Server Name: PF Server 3
URL Name: /NON_IPM_SUBTREE/OFFLINE ADDRESS BOOK/
OAB Folder EntryID: 000000001A447390AA6611CD9BC800AA002FC45A0300FBEFAB5E8BBD794D91C717383125417E0000000000080000

Folder Name: EX:/O=Company/OU=America
NOTE: Exchange 5.5 system folder found!
Replica Server Name: Public Folder Server 3
URL Name: /NON_IPM_SUBTREE/OFFLINE ADDRESS BOOK/EX%3A
OAB Folder EntryID: 000000001A447390AA6611CD9BC800AA002FC45A03005837F21A27D04CB299479411DC8BFB880000000000080000

OABInteg-Admin_05:45:51 PM profile was found and deleted from the Windows Messaging Subsystem.

etc....

The idea here is that you get the list of EntryID's so we can see which public folder store we are trying to connect too:

2. Next run: oabinteg /s:serverName /t:oabfldcheck /v:2 /l.

You will see the following output:

=====================================================
OABInteg (Offline Address Book Integrity Checker)
Product Version 06.05.7839.1
OABInteg.exe
Microsoft Corporation, Copyright (C) 2006
Microsoft and Windows are registered trademarks of Microsoft Corporation.
=====================================================

Command line arguments: oabinteg /s:serverName /t:oabfldcheck /v:2 /l

Checking to see if OABInteg is running on an Exchange Server
Unable to open \HKEY_LOCAL_MACHINE\Software\Microsoft\Setup\
Exchange Server is not running on this computer.
Total registry keys found 0.
Total registry values found 0.
NOTE: Running this tool against a resource mailbox account will most likely cause the tool to fail when being ran.

Registry scan started at: 05:52:56 PM

Checking for user MAPI profiles.
The MAPI subsystem was initialized successfully.

Profile found: Outlook
Profile found: Outlook (Online)

Logoff of profile successful.
Closing MAPI session.
The MAPI subsystem was un-initialized successfully.

Checking for Exchange system MAPI profiles.
WARNING: No exchange server profiles on this system. This is ok.

Registry scan ended at: 05:52:56 PM

Starting Test 9 - OAB System Folder Check
OAB System folder check started at: 05:52:56 PM
The MAPI subsystem was initialized successfully.

Attempting to create OABInteg-Admin_05:52:56 PM profile on FLAGSHIP2.
OABInteg-Admin_05:52:56 PM profile was created in the Windows Messaging Subsystem on FLAGSHIP2.

Obtaining a MAPI Session.
Initializing MAPI profile.
Logging on to MAPI session with the selected profile.

Profile linked to Mailbox: /O=Company/OU=America/cn=Recipients/cn=dgoldman
Profile Version: 0x1
Profile Type: 0x0

Sort Locale being used by the server is: 1033
Code Page being used by the server is 1252
Global Address book opened using address book provider.
Address book root entry scanned.
Current profile is using DC01 for NSPI queries to the active directory.
Opening the Exchange Public Folder Store.
Retrieving the message store table.
Obtaining store table properties.

Hierarchy Server: Public Folder Store 1
Store Offline: 0 (1 = True | 0 = False)

Trying to retrieve the property for the PR_ADDRBOOK_FOR_LOCAL_SITE_ENTRYID.
Property for PR_ADDRBOOK_FOR_LOCAL_SITE_ENTRYID found.
PR_ADDRBOOK_FOR_LOCAL_SITE_ENTRYID: 000000001A447390AA6611CD9BC800AA002FC45A0300B4CF3F5BB03DC0499AB07A96F707B1AB000
0000000080000

Using the PR_ADDRBOOK_FOR_LOCAL_SITE_ENTRYID to open the OAB System folder.
System folder opened.

Now all you care about from the oabfldcheck test is the EntryId that your client is trying to use. I have highlighted this in red:

000000001A447390AA6611CD9BC800AA002FC45A0300B4CF3F5BB03DC0499AB07A96F707B1AB000
0000000080000

3. Search the hierarchylist output for this EntryID and you can see it will match one in the list:

000000001A447390AA6611CD9BC800AA002FC45A0300B4CF3F5BB03DC0499AB07A96F707B1AB0000000000080000
000000001A447390AA6611CD9BC800AA002FC45A0300B4CF3F5BB03DC0499AB07A96F707B1AB0000000000080000

Now you can see which folder the Outlook client went to. Based on my search here my client is downloading the OAB from the following folder:

Folder Name: /o=Company/cn=addrlists/cn=oabs/cn=Default Offline Address List
Replica Server Name: PF Server 2
URL Name: /NON_IPM_SUBTREE/OFFLINE ADDRESS BOOK/
OAB Folder EntryID: 000000001A447390AA6611CD9BC800AA002FC45A0300B4CF3F5BB03DC0499AB07A96F707B1AB0000000000080000

Dave