The simplest way to explain the best strategy is to consider the simplest standard sync server configuration, with just two management agents (MAs) ... HR and AD (single domain). In order to simplify the discussion, I will limit "part 1" to just the sync server, with all provisioning rules done in traditional rules extensions (no declarative portal sync rules at this stage)
Lets assume we have the following setup:
What do we need in the way of 'import', 'sync' and 'export' run profiles between HR and FIM MV, and between FIM MV and AD?
Define the following run profiles for your 2 MAs ...
A common implementation approach with the 2 MA scenario above is to project only from the "authoritative source" for the identity, namely the HR MA. This way the AD CS objects are only ever joined to existing MV objects and remain disconnectors if no join occurs. The idea here is that you can be confident that your metaverse only ever has an object for every HR employee record, provided you disconnect the AD connector in the event that an HR connector is ever deleted. This assumes that accounts are never created directly in AD again once provisioning is enabled ... to avoid the "cs object already exists" provisioning exception that can ensue.
A good way of avoiding the above exception is to project onto the MV from BOTH MAs, and using a secondary indexed metaverse attribute to achieve joins that will prevent the creation of duplicate metaverse objects. An example of this is where your first join rule for both AD and HR MAs is on employeeID in the metaverse, and the second is on accountName in the metaverse. Let's suppose you can "breadcrumb" your HR system with the sAMAccountName from AD in much the same way as you store the HR employee ID in the AD employeeID attribute. Under these conditions, when an HR employee record is created AFTER an account for that employee was created in AD, a join can still be established from HR in lieu of a new metaverse object being projected. With a bit of careful AD/HR operational cooperation this can avoid sync exceptions in the common scenario where there is a need to have an AD account created in advance of HR setting up the personnel details in HR.
For the ensuing documentation, the assumption is that you have adopted this second approach ... however I acknowledge that there may be circumstances where the first approach is the only sensible option.
The first time you load the 2 MA connector spaces and project/join to the metaverse, disable provisioning to ensure joins can be established and anomolies resolved. Thereafter use this sequence for
* Note that the above assumes you are projecting from BOTH AD and HR MAs as outlined above - otherwise the HR full import must run first before AD to allow joins to occur.
If you don't have something like Event Broker to run these automatically on demand, you will need to schedule the following sequence - at a frequency based on your operational requirements and the allowable latency threshold for your solution:
When using a management agent (such as the AD MA) that supports delta imports, you must still run a full import in several scenarios including:
A full synchronization is needed when the rules that apply to connectors are changed. Such changes could be made in:
Join and projection rules only apply to disconnectors, and if changed a full synchronization is not required to make them take effect. A delta sync (not combined with a delta import in the same step) would process all of the disconnectors in a management agent's connector space and apply the join and projection rules. Note that when running a delta-type run profile for a management agent, FIM will provide warnings either via pop-up window (if initiating the run manually via the GUI) and/or events in the application log if it notices that any configuration point has changed and a full synchronization has not yet been run on that management agent since the change. Such changes include any made to any MA's properties and any changes in the Extensions folder (a good reason never to write a log file to that location). In some cases, the warning can be ignored. In others, a full sync may be indicated on a particular management agent (one with a new or newly modified import rule, for example), but warnings for delta syncs run on the other MAs could be safely ignored.
For Parts 2, 3, etc. we can look to build on this basic concept. This will include adjusting the run profile sequencing to support declarative sync rules configured in the FIM portal ...
Bob Bradley edited Revision 1. Comment: Further refinements after Peter Geelen feedback