The Global Address List Synchronization Solution (GALSync) allows you to take a mail-box enabled user from one forest, and create a mail-enabled contact object in another forest, allowing the ability to share Global Address Lists (GALs).
However, by default, GALSync puts all of the mail-enabled contacts into a single Organizational Unit (container).
The goal of this document is to provide the necessary steps and details on how to provision the mail-enabled contacts from multiple forests into separate Target Organizational Units.
The following steps are involved in this process:
To enable the sync engine to make the provisioning decision, your source management agents need to populate the metaverse with an attribute that can used by your provisioning code to determine the source of an object.
For the scenario in this article, the msExchOriginatingForest attribute is used for this purpose.
All contributing management agents need to populate this attribute in the metaverse with a fully qualified distinguished name of the originating forest.
The following section provides the configuration steps.
In this section, we will cover how to create the OrganizationalUnit structure(OU) in the Active Directory in order to have this work for us.
This section will walk us through step by step on how to update the GALSync solution to enable provisioning of mail-enabled contacts into separate Target Organizational Units.
To update your GALSync solution, you perform the following steps:
As a first step, you need to backup and change the name of your GALSync solution
(By default it is in %programfiles%\Microsoft Identity Integration Server\SourceCode)
If you do get the wizard, go through the wizard, and “Load Project Normally”.
You need to update the Build Output path to prevent the GALSync.XML file from being overwritten.
This is a configuration file that holds the different GALSync Management Agents we have built in the
If by chance you do overwrite this file, follow the steps outlined in
KB 948167 (http://support.microsoft.com/kb/948167).
In this section, you find the required modification steps for your provisioning code.
'// SAMPLE CODE
'// PURPOSE: Illustrate how to have contact objects exported to different
'// organizational Units.
'// MEMORY VARIABLES:
'// myTargetOrganizationalUnit: Sets the Target Organizational Unit for us
'// myOriginatingForest: Captures the originating forest information from the
'// metaverse person object type (msExchOriginatingForest attribute).
'// we force it to lower case to be sure that we can match the data.
Dim myTargetOrganizationalUnit As String = ""
Dim myOriginatingForest As String = mventry("msExchOriginatingForest").Value.ToLower()
'// Sets the OU to Provision to
If myOriginatingForest = "sample.microsoft.com" Then
myTargetOrganizationalUnit = "ou=Sample MSFT Contacts, " '// the comma is needed
ElseIf myOriginatingForest = "sample.net" Then
myTargetOrganizationalUnit = "ou=Sample CONTACTS, " '// the comma is needed
'// If you have additional forests, you will need to add additional ElseIF
'// statements to match those conditions.
'// END NOTE:
'// END OF SAMPLE CODE
In this section you find the required steps for building the solution.
In this section, you will find the steps for testing the updated solution.
To test the solution: