Offline Address Book Integrity (OABInteg) Utility Explained
OABInteg is a nifty little command line display utility created by Dave Goldman who’s a Microsoft Exchange Escalation Engineer. There’s not much information about OABInteg utility on the Internet, so I thought it would be a good idea to write an article explaining and showing how to use it.
Basically OABInteg is a utility which can help you in troubleshooting OAB generation issues, as well as help out when dealing with Outlook clients that have problems downloading an OAB from a Public Folder store.
OABInteg can be downloaded from the Microsoft Support Services FTP site.
In my work as an Exchange consultant, I've seen many OAB related issues, and if you do a search for “OAB download problem” or “OAB generation problem” in on Google Groups or just here on MSExchange.org’s own Message Board the number of hits speaks for themselves (for example see this post which at the time of this writing has got 158 replies so far!).
The OABInteg utility is capable of gathering information on the following objects (done using non-intrusive tests):
- Address List, Offline Address Lists and Address List related properties
- System Folders
- OAB Messages
- OAB Attachments
- Address List Hierarchy
- Address Book Recipients as well as data
OABInteg can simulate an Outlook client connecting to the System Folders in a Public Information Store in order to download the respective OAB files. OABInteg can also simulate the method which the OABGEN process uses when one or more OAB is rebuild.
In Figure 1 below I’ve taking a screenshot of the OABInteg utility help.
Figure 1: OABInteg Utility Help
As you can see in Figure 1, there’re several parameters available in OABInteg, I’ve listed each of them below.
OABInteg.exe [/s:servername] [/t:testname] [/l] (enable file logging) [/v: 1 or 2] (enable verbose logging) | Optional Commands [/d:SearchDN] [/p:# - Page Size] [U/:UserName] [/P:password]
/l Logging output will go to c:\OABInteg.txt
/v: Logging output will go to the screen. - Default logging is general - nothing selected | /v:1 for minimum and /v:2 for maximum logging.
/p: Active Directory search page size. Default size is 64 and maximum is 512.
/dn: -proxytest only!! <Example: OU=Managers,DC=OrgName,DC=local>
If you do not specify a search /dn: we will use base query of DC=OrgName,DC=local
/U: Username. If you are going to connect use different credentials or connect to a different domain.
/P: Password. If you are going to connect use different credentials or connect to a different domain.
There are four different types of test categories in OABInteg – Active Directory, MAPI, Registry and Mapi File tests. Each of these contains several sub-tests, all of which I’ve listed below.
Active Directory Tests
- Storealtest - Validate if the information stores point to an Adress list
- Altest - Validate if the information stores point to an address list
- Oaltest - Finds all offline address lists in the organization.
- Abrtest - Finds the addressBookroots properties.
- Proxytest - Scan for users that will be skipped during the oabgen process. Checks for invalid legacy Dn's also
- Rdntest - Scan for all legacyExchangeDN's that have a final RDN greater than 64 characters.
- Templatetest - Scans the active directory for any orphaned display templates.
- Alltests - Runs all the LDAP tests | [-storealtest][-altest][-oaltest][-abrtest][-proxytest][-templatetest]
- Oabfldcheck - Logon to the public information store and check the OAB system folders, messages and attachments.
- Getabinfo_v2 - Open the default address book for a selected profile and dump all entries using OAB V2 props.
- Getabinfo_v3 - Open the default address book for a selected profile and dump all entries using OAB V3a props.
- Hierarchyinfo - Logon to the public information store and get the OAB Hierarchy list information.
- Getoabseqnum - Check all user profiles and find the last downloaded OAB sequence number.
Mapi File Tests
- Scanmapisvc - Scan the mapisvc.inf file for invalid entries.
In order to show you how OABInteg works I’ve included 3 usage examples in this article. Each of them is explained in detail below.
To validate whether the Mailbox Stores existing in the organization points to an Address List, you will use storealtests as shown below:
Oabinteg.exe /s:ehvms01 /l /t:storealtest
/S is used to specify the server and the /l parameter logs the result to a .txt file named OABinteg.txt in the root of the C: drive.
Executing this command in my test environment gives the output shown in Figure 2.
Figure 2: Output from running OABInteg with the Storealtest command
In order to list all Offline Address Books (OABs) in the organization we’ll use the oaltest command shown below:
Oabinteg.exe /s:ehvms01 /l /t:oaltest
Executing this command in my test environment gives the output shown in Figure 3.
Figure 3: Output from running OABInteg with the Oaltest command
Let’s also try to scan the AD for user objects that will be skipped during the OABGEN process, we do this by using the proxytest command as shown below:
Oabinteg.exe /s:ehvms01 /l /t:proxytest
Executing this command in my test environment gives the following result (notice an Event ID 9325 and 9324 will be logged to the Application log if either the proxyAddress doesn’t match or if the legacyExchangeDn doesn’t start with /=o or /=O respectively). For more details see Figure 4.
Figure 4: Output from running OABInteg with the Proxytest
In this article we have only taken a look at the Active Directory related tests, but the MAPI tests available are just as useful, so remember to check those out too, once you have got a copy of the OABInteg utility.
In this article we had a superficial look at OABInteg, we went through the parameters as well as the different types of tests available in OABInteg. As you probably already have experienced, troubleshooting OAB related issues, can be a complex and time consuming task, especially if you don’t know what’s going on behind the GUI. OABInteg will in most situations make the task a little less painful.
I will, in a future article, delve more into the tasks necessary to troubleshoot OAB related issues.
OAB Integrity Tool (OABINTEG) User Guide which included with the utility (a must read!)
TechNet Support WebCast: How to troubleshoot Offline Address Book issues in Microsoft Exchange Server:
You may also find Dave Goldman's WebLog interesting: