This wiki shows various conditions and the expected behavior of the provisioner to handle situations

See these other wikis for more context:

Definitions


Full sync or IncrementalEventGroup or Entity in sync tableMembership in sync tableMembership typeSupported behavior by targetErrorExpected outcome regarding recalcStatus
Full syncN/ARetrieve all groups and entities regardless of sync table valuesRetrieve all memberships regardless of sync table values
CRUD supportedN/AEverything is a recalc. Done
Full syncN/ARetrieve all groups but not all entities ( configuration to not retrieve all entities in full sync) if the entity is in the sync tableRetrieve all memberships regardless of sync table values
CRUD supportedFalseUse the sync entity. groups and memberships are recalcs and entities are not.To be done
Full syncN/ARetrieve all groups and entitiesRetrieve all memberships regardless of sync table values
CRUD supportedTrue for a membership changeRecalc the error group, error entity, and error memberships.
Full syncN/ARetrieve all groups but not all entities ( configuration to not retrieve all entities in full sync) if the entity is not in the sync tableRetrieve all memberships regardless of sync table values
CRUD supportedN/ARecalc missing entitiesTo be done
Full syncN/ARetrieve all groups and entities regardless of sync table valuesRetrieve all memberships regardless of sync table values
Doesn't select from targetN/AThrow an exception if no object types select. If an object type does select from the target, sync only the object types that can select. e.g. group is selected, entity and membership are not. Only sync group with target and ignore entity and membership during full sync run.To be done
Incremental syncMembership add/removeGroup and entity are in the sync tableA membership add corresponds to a missing sync table entry, or a remove corresponds to an existing sync table entry
N/AFalseNothing is a recalc
Incremental syncMembership add/removeGroup and entity are in the sync tableA membership add corresponds to an existing sync table entry, or a remove corresponds to a missing sync table entry
Does select from targetFalseConvert to a recalc membership
Incremental syncMembership add/removeGroup and entity are in the sync tableA membership add corresponds to an existing sync table entry, or a remove corresponds to a missing sync table entry
Doesn't select from targetFalseDon't convert to a recalc membership
Incremental syncMembership add/removeGroup and entity are in the sync tableA membership add corresponds to a missing sync table entry, or a remove corresponds to an existing sync table entry
Does select from targetTrueSend a message to recalc the group only and recalc the entity only (if there are groups and entities in the target), update the sync table with an error message
Incremental syncMembership add/removeGroup and entity are in the sync tableA membership add corresponds to a missing sync table entry, or a remove corresponds to an existing sync table entry
Doesn't select from targetTrue

Put the error in the sync row (every error whether it sends a message or not, should still update the sync table). 

A subsequent incremental provisioner will retry the actions.


Incremental syncMembership add/removeGroup is not in the sync table N/A
Does select from targetFalse

Group recalc with memberships (group attribute membership type or membership object type) - e.g. ldap has attributes on a group that represent memberships

Group recalc only (if entity attribute membership type ) - only sync group like name, description, etc. No memberships are synced with the target.


Incremental syncMembership add/removeGroup is not in the sync table N/A
Doesn't select from targetFalse

Proceed with the membership add or remove. Can't recalc because can't select from the target. The sync group row will be added to the table.


Incremental syncMembership add/removeGroup is not in the sync tableN/A

TruePut the error in the sync group row (every error whether it sends a message or not, should still update the sync table)
Incremental syncMembership add/removeEntity is not in the sync tableN/A

False

Entity recalc with memberships (if entity attribute type )

Entity recalc only (if group attribute type )


Incremental syncMembership add/removeEntity is not in the sync tableN/A

TruePut the error in the sync member row (every error whether it sends a message or not, should still update the sync table)
Incremental syncGroup add/removeN/AN/Agroup attribute membership type  or membership objectsDoes select groups and memberships for a group from targetFalse

Group recalc with memberships (if group attribute membership type  or membership objects)

Each entity in the group should not be recalc if in the sync table. This is applicable only for group attribute membership type  or membership objects


Incremental syncGroup add/removeN/AN/Aentity attribute membership type Does select groups from targetFalse

Group recalc only (if entity attribute type )


Incremental syncGroup add/removeN/AN/Agroup attribute membership type  or membership objectsIf either group or group memberships or both can't be selected from the target, the logic of this row is applied. False

Proceed with the group add or remove without Recalc.


Incremental syncGroup add/removeN/AN/Aentity attribute membership type Doesn't select groups from the targetFalseProceed with the group add or remove without Recalc.
Incremental syncGroup add/removeN/AN/A
N/ATrue

Put the error in the sync group row


Incremental syncEntity add/removeN/AN/Aentity attribute membership type  or membership objectsDoes select entities and memberships for an entity from the targetFalse

Entity recalc with memberships (if entity attribute membership type  or membership objects)

Each group associated with the entity should not be recalc if in the sync table. This is applicable only for entity attribute membership type  or membership objects


Incremental syncEntity add/removeN/AN/Agroup attribute membership typeDoes select entities from the targetFalse

Entity recalc only


Incremental syncEntity add/removeN/AN/Aentity attribute membership type  or membership objectsIf either entity or entity memberships or both can't be selected from the target, the logic of this row is applied. False

Proceed with the entity add or remove without Recalc.


Incremental syncEntity add/removeN/AN/Agroup attribute membership type Doesn't select entities from the targetFalseProceed with the entity add or remove without Recalc.
Incremental syncEntity add/removeN/AN/A
N/ATrue

Put the error in the sync entity row