Addressing Templates are very important to Exchange and the OAB Generation process. There are two types of templates that are located in the Active Directory:
Missing or duplicate Address-Templates can cause the OAB Generation process to fail. In the latest version of OABInteg I added another verification check to the /t:templatetest function, that will scan the Active Directory and report back all Address-Templates that exist in the Addressing/Address-Templates container. If there are any duplicates OABInteg will report them, and there are any missing you will can look below and the complete list for a comparison.
There are 49 Addressing Templates that reside in the Active Directory. Below is the output from OABInteg validation check:
Starting Test 7 - Addressing Template Validation Test - Check 2
Search started at: 04:55:06 PM Entry 0: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=401Entry 1: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=402Entry 2: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=403Entry 3: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=404Entry 4: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=405Entry 5: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=406Entry 6: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=407Entry 7: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=408Entry 8: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=409Entry 9: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=40FEntry 10: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=40bEntry 11: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=40cEntry 12: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=40dEntry 13: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=40eEntry 14: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=410Entry 15: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=411Entry 16: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=412Entry 17: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=413Entry 18: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=414Entry 19: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=415Entry 20: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=416Entry 21: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=418Entry 22: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=419Entry 23: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=41aEntry 24: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=41bEntry 25: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=41dEntry 26: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=41eEntry 27: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=41fEntry 28: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=420Entry 29: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=421Entry 30: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=422Entry 31: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=424Entry 32: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=425Entry 33: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=426Entry 34: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=427Entry 35: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=429Entry 36: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=42AEntry 37: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=42dEntry 38: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=439Entry 39: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=43EEntry 40: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=43FEntry 41: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=456Entry 42: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=464Entry 43: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=804Entry 44: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=816Entry 45: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=81AEntry 46: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=8411Entry 47: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=C04Entry 48: /o=OABGen/CN=Configuration/CN=Addressing/CN=Address-Templates/CN=C0A
Search ended at: 04:55:06 PM
Scan Completed+---------------------+49 Addressing Templates found0 Duplicate Addressing Templates found
How to fix missing Address-Templates
The trick to fixing missing Address-Templates is pretty simple.
Below are the detailed steps for replacing the missing Address-Templates.
1. Open LDP and select 'Connection' from the menu.2. Select 'Connect' and type in the domain controller you want to connect to.3. Select 'OK'.4. Select 'Connection' from the menu and select 'Bind'.5. Type in your user, password and domain (domain will be checked).6. Select 'View' from the menu.7. Select 'Tree'.8. For BaseDN paste or type the following: CN=Address-Templates,CN=Addressing,CN=<YOUR-EXCHORG>,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=<YOUR_DOMAIN>,DC=<EXTENSION>
Example: CN=Address-Templates,CN=Addressing,CN=OABGen,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=MyDomain,DC=com
9. Expand this container in LDP.10. Hit Ctrl+N (This will clear the display in LDP).11. Double click one of the existing templates.12. Look for Dn: and copy the Dn to notepad.
Example: CN=401,CN=Address-Templates,CN=Addressing,CN=OABGen,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=MyDomain,DC=com
Now that we have the DN of one of the existing Address-Templates we can export the 4##, 8## or C## Addressing Templates from the addressing container.
NOTE: 4##, 8## and C## means that you need to find one other one that is existing.
13. Run from a command prompt: ldifde -f output.ldf -s domain_controller –d "CN=4##,CN=Address-Templates,CN=Addressing,CN=<YOUR-EXCH-ORG>,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=<YOURDOMAIN>,DC=<EXTENSION>" -v
NOTE: If everything is ok you will see the following output:
Connecting to "OABGen-DC1"Logging in as current user using SSPIExporting directory to file c:\output.ldfSearching for entries...Writing out entries......6 entries exported
2. Open output.ldf in notepad and perform the following options:
a. Find and replace all instances of 4## or 8## or C## with the number of the Address-Template that is missing. b. If you have a different local installed replace all instances of "Language" with "English (US)" c. Remove all the dSCorePropagationData entries d. Remove all the instanceType entries e. Remove all the objectGUID entries f. Remove all the USNChanged entires g. Remove all the USNCreated entries h. Remove all the WhenChanged entries i. Remove all the WhenCreated entries
NOTE: If your forget to remove one line this import will fail and you will have to remove the template from the active directory using ADSIEdit.msc and then fix the file so you can import it again.
3. Save the modified file as ###.ldf (verify it doesn't get saved with a .TXT extension).4. Run from a command prompt ldifde -i -k -f input409.ldf -s domain_controller -v
Importing this modified file will create your Address-Template in the Active Directory. If everything is successful you will see the following output:
C:\>ldifde -i -k -f 409.ldf -s dc1 -vConnecting to "OABGen-DC1"Logging in as current user using SSPIImporting directory from file "409.ldf"Loading entries
1: CN=409,CN=Address-Templates,CN=Addressing,CN=OABGen,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=MyDomain,DC=comEntry modified successfully.
2: CN=X400,CN=409,CN=Address-Templates,CN=Addressing,CN=OABGen,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=MyDomain,DC=comEntry modified successfully.
3: CN=MS,CN=409,CN=Address-Templates,CN=Addressing,CN=OABGen,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=MyDomain,DC=comEntry modified successfully.
4: CN=SMTP,CN=409,CN=Address-Templates,CN=Addressing,CN=OABGen,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=MyDomain,DC=comEntry modified successfully.
5: CN=MSA,CN=409,CN=Address-Templates,CN=Addressing,CN=OABGen,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=MyDomain,DC=comEntry modified successfully.
6: CN=CCMAIL,CN=409,CN=Address-Templates,CN=Addressing,CN=OABGen,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=MyDomain,DC=comEntry modified successfully.
6 entries modified successfully.The command has completed successfully
How to fix Duplicate Address-Templates WARNING- Incorrectly modifying the Active Directory can cause serious problems that may require you to reinstall Exchange and or your entire Exchange Organization. Problems resulting from modifying (Deleting, Changing, Adding, etc) the Active Directory incorrectly may not be able to be resolved, so before making *ANY* modifications back up any valuable data.
1. Load up ADSIEdit.msc2. Navigate to the following container: CN=Address-Templates,CN=Addressing,CN=<YOUR-EXCHORG>,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=<YOUR_DOMAIN>,DC=<EXTENSION>3. Expand the container.4. Look for the duplicate Address-Template.5. Delete the duplicate Address-Template.
Dave
Under certain circumstances the OAB Generation process can fail when OABGen.dll is able to query the