IMVSynchronization Methods

The IMV Synchronization Interface (found in the Microsoft.MetadirectoryServices namespace) is used by the Forefront Identity Manager Synchronization Service to implement rules extensions for objects in the Metaverse. Conceptually, the methods in this interface are applied to

you can think of the methods in this interface as being applied to a metaverse object, rather than to a specific Management Agent or Connector Space relationship that the object might have.

In other words, this is where the non-declarative (ILM style) provisioning occurs in FIM.

When a synchronisation runs against a connector, each object which has a corresponding Metaverse object first has any Management Agent rules extensions evaluated for that connector in the IMASynchronization interface and then has the Metaverse Rules extensions evaluated.

The IMVSynchronization Interface is comprised of 4 distinct methods:

Initialize
This method initializes the Metaverse rules extension object and executes when the synchronisation operation begins, running only once for the entire operation. This is typically where you might load an XML configuration file into a global variable, or perform other logic that only needs to be performed once during a synchronisation operation.

Provision
This method is the real workhorse of the IMVSynchronization Methods. This method executes in response to a change to a Metaverse object and evaluates any provisioning logic that needs to occur. In this method, we can provision to a connected system, modify the distinguished name of an existing connector and even initiate deprovisioning logic for a connected system.

ShouldDeleteFromMV
When a connector is disconnected during an import/sync operation, the object deletion rule for that Metaverse object is triggered to determine whether the Metaverse object should be deleted. Under the Metaverse designer, you may select one of three options to determine under what circumstances the Metaverse object should be deleted – if you select “Rules Extension”, then the ShouldDeleteFromMV method will be called to determine whether the object should be deleted.

Terminate
When a synchronization operation is complete, the Terminate method is called to free any resources that are owned by the rules extension. Similar to the Initialize method, this method is only executed once during a synchronization operation, and allows you to perform any tasks that must be performed once, at the end of a synchronization.