This blog is about the Directory Synchronization process used by the Connector for Lotus Notes. It is the first blog of three in a series about Directory Synchronization. First, I would like to thank a major contributor, Brandon Hoff, I’ve updated to include some other information as well, but the majority of this article is the original document he wrote. I’d also like to thank Shawn Zaravar who provided the process flow diagrams and Shawn Zaravar, Ed Thornburg, and the Product Group technical review.
The high level process- This picture is borrowed from the Exchange 2003 Technical Reference guide.
It presents a high level overview of the process flow between Domino and the Active Directory during the directory synchronization process.
Lsdxa.exe- This is the directory exchange manager that controls both Dxanotes.dll and Dxamex.dll.
Dxanotes.dll- This component checks the Lotus Domino Directory for recipient updates.
This component also transfers Exchange address information changes to the Lotus Domino Directory
Dxamex.dll- This component checks Active Directory for recipient updates.
This component also transfers Lotus Domino address information changes to Active Directory.
Dxamex.dll communicates with Active Directory through ADSI to extract the recipient information from the export containers specified in the connector configuration. Dxamex.dll maps the recipient attributes as defined in Amap.tbl and Mapmex.tbl, and places the results in a temporary file named Dxanotes.txt in the \Program Files\Exchsrvr\Conndata\Temp directory. This information is stored in message interchange format (MIF).
Dxanotes.dll then parses the object list in Dxanotes.txt file, creates the person documents in the target name and address book specified by the connector configuration.
To communicate with Lotus Domino, Dxanotes.dll uses the Lotus Notes Client API.
Examples of the Dxanotes.txt and the Dxamex.txt files are located in the Directory Synchronization Section:
Dxanotes.dll performs directory synchronization from Lotus Domino to Active Directory.
The process uses the Lotus Notes Client API to read the Lotus Domino directory. Dxanotes.dll maps the recipient attributes as defined in Amap.tbl and Mapnotes.tbl,
and writes the recipient information to the Dxamex.txt file in the \Program Files\Exchsrvr\Conndata\Temp directory. Dxamex.dll processes the Dxamex.txt file and creates
the objects in the import container specified in the connector configuration.
The Connector for Lotus Notes uses a folder structure on the file system to maintain control files used during directory synchronization.
Control files are schema definition files and mapping rule files, which determine how attributes in one directory are mapped to the other directory.
The connector store is located in the \Program Files\Exchrvr\Conndata directory.
You can edit the following schema definition files and mapping rule files in Notepad to determine how attributes in one directory are mapped to the other directory:
• AMAP.TBLin the \Dxamex subdirectory Defines the Active Directory object attributes to be synchronized.
Exchange Common Name
· Friendly Name The name used by the connector internally to define a particular attribute.
· Length The length of the particular attribute. If this is larger than the space allocated, the attribute is truncated.
· Exchange Common Name This is the attribute in Active Directory for a user object. These attributes can be viewed using AD tools, such as ADSIEDIT.MSC or LDP.EXE.
· Key Attribute Marks the attribute as unique within the directory system. If there are more than one in the column, the Connector combines the attributes to ensure uniqueness.
If the attribute or combination of attributes is not unique, the Connector rejects a particular directory update. If not a key attribute, it can be left blank or have a "NULL" in the column.
If there is more than one key attribute indicated (indicated by numbers), then the connector will chain-searches the attributes indicated in priority sequence.
For example, User1 has a MailDomain of Exchange and User2 has a MailDomain of Exchange. The Key Attribute in the AMAP.TBL for Notes is MailDomain 1 and FullName 2.
The connector checks the MailDomain for uniqueness first; if it is not unique, the Connector combines the highest priority key attribute with the next attribute to create a unique value.
If that doesn't work, the Connector will add in the next attribute and so on until it creates a unique string.
• AMAP.TBL in the \Dxanotes subdirectory Defines the Lotus Domino directory object attributes to be synchronized.
Same as above with the exception of Notes field name instead of Exchange Common Name
· Notes Field Name The document field name within a document of a the name and address book
Notes Field Name
The next two tables are where formulas are applied based on that amap tables.
• MAPMEX.TBLin the \Dxanotes subdirectory Determines the attribute mapping from Active Directory to Lotus Domino.
CALDOM = Trim( Strip( NotesAddr, "@", "L" ), "B" )
This shows a formula taking the Notes Proxy Address and creating the Calendar Domain information for the Domino Directory Person Document.
The left side of this equation, CALDOM is referenced in \dxanotes\amap.tbl, it is the friendly name which represents the CalendarDomain field in the Domino Person document.
The process takes a NotesAddr which is the friendly name of the proxyAddresses(NOTES:) located in dxamex\amap.tbl and reads it from the Active Directory.
NOTES:Administrator@Exchange is the proxyAddress for NOTES:
The function STRIP strips everything from the left of the at sign and leaves the remainder.
The function TRIM trims any leading or trailing blanks.
In this case the CALDOM is Exchange
• MAPNOTES.TBL in the \Dxamex subdirectory Determines the attribute mapping from Lotus Domino to the Active Directory
This shows a formula taking the Full Name from a Domino Person document and translating it to a Target Address for the Active Directory.
TA = "NOTES:" Strip( FullName, ";", "L", "R" ) "@" MailDomain
TA is the friendly name in the \dxamex\amap.tbl which represents the TargetAddress.
FullName and MailDomain are the friendly names for the FullName and Maildomain attributes in the Domino Directory.
This scans the FullName field from left to right and drops any information after the first delimiter which is a “;” since Fullname is typically a multi-valued field.
In the Domino Directory the person document
FullName = John T Smith/Notes
MailDomain = NorthAmerica
In the Active Directory, Exchange General Tab, E-mail section.
NOTES:John T Smith/Notes@NorthAmerica