How Synchronization Situations Are Assessed
Reconciliation is performed in two phases:
Source reconciliation accounts for source objects and associated links based on the configured mapping.
Target reconciliation iterates over the target objects that were not processed in the first phase.
For example, if a source object was deleted, the source reconciliation phase will not identify the target object that was previously linked to that source object. Instead, this orphaned target object is detected during the second phase.
Source Reconciliation
During source reconciliation and liveSync, IDM iterates through the objects in the source resource. For reconciliation, the list of objects includes all objects that are available through the connector. For liveSync, the list contains only changed objects. IDM can filter objects from the list by using the following:
Scripts specified in the
validSource
propertyA query specified in the
sourceCondition
propertyA query specified in the
sourceQuery
property
For each object in the list, IDM assesses the following conditions:
Is the source object valid?
Valid source objects are categorized
qualifies=1
. Invalid source objects are categorizedqualifies=0
. Invalid objects include objects that were filtered out by avalidSource
script orsourceCondition
. For more information, see "Filter Source and Target Objects With Scripts".Does the source object have a record in the links table?
Source objects that have a corresponding link in the repository's
links
table are categorizedlink=1
. Source objects that do not have a corresponding link are categorizedlink=0
.Does the source object have a corresponding valid target object?
Source objects that have a corresponding object in the target resource are categorized
target=1
. Source objects that do not have a corresponding object in the target resource are categorizedtarget=0
.
The following diagram illustrates the categorization of four sample objects during source reconciliation. In this example, the source is the managed user repository and the target is an LDAP directory:
Based on the categorizations of source objects during the source reconciliation phase, the synchronization process assesses a situation for each source object, and executes the action that is configured for each situation.
Not all situations are detected during all synchronization types (reconciliation, implicit synchronization, and liveSync). The following table describes the set of synchronization situations detected during source reconciliation, the default action taken for each situation, and valid alternative actions that can be configured for each situation:
Source Qualifies | Link Exists | Target Objects Found | Situation | Default Action | Possible Actions |
---|---|---|---|---|---|
| | 0 | SOURCE_IGNORED | IGNORE source object | EXCEPTION, REPORT, NOREPORT, ASYNC |
| | 1 | UNQUALIFIED | DELETE target object | EXCEPTION, IGNORE, REPORT, NOREPORT, ASYNC |
| | > 1 | UNQUALIFIED | DELETE target objects | EXCEPTION, IGNORE, REPORT, NOREPORT, ASYNC |
| | 0 | UNQUALIFIED | DELETE linked target object [a] | EXCEPTION, REPORT, NOREPORT, ASYNC |
| | 1 | UNQUALIFIED | DELETE linked target object | EXCEPTION, REPORT, NOREPORT, ASYNC |
| | > 1 | UNQUALIFIED | DELETE linked target object | EXCEPTION, REPORT, NOREPORT, ASYNC |
| | 0 | ABSENT | CREATE target object | EXCEPTION, IGNORE, REPORT, NOREPORT, ASYNC |
| | 1 | FOUND | UPDATE target object | EXCEPTION, IGNORE, REPORT, NOREPORT, ASYNC |
| | 1 | FOUND_ALREADY_LINKED [b] | EXCEPTION | IGNORE, REPORT, NOREPORT, ASYNC |
| | > 1 | AMBIGUOUS [c] | EXCEPTION | REPORT, NOREPORT, ASYNC |
| | 0 | MISSING [d] | EXCEPTION | CREATE, UNLINK, DELETE, IGNORE, REPORT, NOREPORT, ASYNC |
| | 1 | CONFIRMED | UPDATE target object | IGNORE, REPORT, NOREPORT, ASYNC |
[a] In this case (and the two following cases), the DELETE action is applied to the linked target object and not necessarily to the target object(s) found by the correlation query. If the source is no longer valid and a link existed, the correlation logic is skipped. [b] The source object qualifies for a target object and is not linked to an existing target object. There is a single target object that correlates with this source object, according to the logic in the correlation, but that target object is already linked to a different source object. [c] The source object qualifies for a target object, is not linked to an existing target object, but there is more than one correlated target object (that is, more than one possible match on the target system). [d] If the action is CREATE for the situation MISSING, the orphaned link associated with the source object is updated to point to the new target object. When a target object is deleted, the link from the target to the corresponding source object is not deleted automatically. This allows IDM to detect and report items that might have been removed without permission or might need review. If you need to remove the corresponding link when a target object is deleted, change the action to UNLINK to remove the link, or to DELETE to remove the target object and the link. |
Based on this table, the following situations would be assigned to the previous diagram:
Target Reconciliation
During source reconciliation, the synchronization process cannot detect situations where no source object exists. In this case, the situation is detected during the second reconciliation phase, target reconciliation.
Target reconciliation iterates through the target objects that were not accounted for during source reconciliation. The process checks each object against the validTarget
filter, determines the appropriate situation, and executes the action configured for the situation. Target reconciliation evaluates the following conditions:
Is the target object valid?
Valid target objects are categorized
qualifies=1
. Invalid target objects are categorizedqualifies=0
. Invalid objects include objects that were filtered out by avalidTarget
script. For more information, see "Filter Source and Target Objects With Scripts".Does the target object have a record in the links table?
Target objects that have a corresponding link in the
links
table are categorizedlink=1
. Target objects that do not have a corresponding link are categorizedlink=0
.Does the target object have a corresponding source object?
Target objects that have a corresponding object in the source resource are categorized
source=1
. Target objects that do not have a corresponding object in the source resource are categorizedsource=0
.
The following diagram illustrates the categorization of three sample objects during target reconciliation:
Based on the categorizations of target objects during the target reconciliation phase, a situation is assessed for each remaining target object. Not all situations are detected in all synchronization types. The following table describes the set of situations that can be detected during the target reconciliation phase:
Target Qualifies | Link Exists | Source Exists | Source Qualifies | Situation | Default Action | Possible Actions |
---|---|---|---|---|---|---|
| n/a | n/a | n/a | TARGET_IGNORED [a] | IGNORE | DELETE, UNLINK, REPORT, NOREPORT, ASYNC |
| | | n/a | UNASSIGNED | EXCEPTION | IGNORE, REPORT, NOREPORT, ASYNC |
| | | | CONFIRMED | UPDATE target object | IGNORE, REPORT, NOREPORT |
| | | | UNQUALIFIED [b] | DELETE | UNLINK, EXCEPTION, IGNORE, REPORT, NOREPORT, ASYNC |
| | | n/a | SOURCE_MISSING [c] | EXCEPTION | DELETE, UNLINK, IGNORE, REPORT, NOREPORT, ASYNC |
[a] During target reconciliation, the target becomes unqualified by the [b] Detected during reconciliation and target change events [c] Detected during reconciliation and target change events |
Based on this table, the following situations would be assigned to the previous diagram:
Situations Specific to Implicit Synchronization and LiveSync
Certain situations occur only during implicit synchronization (when changes made in the repository are pushed out to external systems) and liveSync (when IDM polls external system change logs for changes and updates the repository).
The following table shows the situations that pertain only to implicit sync and liveSync, when records are deleted from the source or target resource.
Source Qualifies | Link Exists | Targets Found [a] | Targets Qualify | Situation | Default Action | Possible Actions |
---|---|---|---|---|---|---|
n/a | | 0 | n/a | LINK_ONLY | EXCEPTION | IGNORE, REPORT, NOREPORT, ASYNC |
n/a | | 1 | 1 | SOURCE_MISSING | EXCEPTION | IGNORE, REPORT, NOREPORT, ASYNC |
n/a | | 1 | 0 | TARGET_IGNORED | IGNORE | DELETE, UNLINK, EXCEPTION, REPORT, NOREPORT, ASYNC |
n/a | | 0 | n/a | ALL_GONE | IGNORE | EXCEPTION, REPORT, NOREPORT, ASYNC |
| | 0 | n/a | ALL_GONE | IGNORE | EXCEPTION, REPORT, NOREPORT, ASYNC |
| | 1 | 1 | UNASSIGNED | EXCEPTION | REPORT, NOREPORT |
| | > 1 | > 1 | AMBIGUOUS | EXCEPTION | IGNORE, REPORT, NOREPORT, ASYNC |
| | 0 | n/a | ALL_GONE | IGNORE | EXCEPTION, REPORT, NOREPORT, ASYNC |
| | 1 | 1 | TARGET_IGNORED | IGNORE target object | DELETE, UNLINK, EXCEPTION, REPORT, NOREPORT, ASYNC |
| | > 1 | > 1 | UNQUALIFIED | DELETE target objects | EXCEPTION, IGNORE, REPORT, NOREPORT, ASYNC |
[a] If no link exists for the source object, IDM executes any included correlation logic. If a link exists, correlation does not apply. |