9.7:documentation:adm:synchronization:relation-sync

Synchronization - contractual relationships

Identity (contractual) relationship synchronization operates by the same rules as identity synchronization. Here we describe only the behavior specific to this synchronization.
It defines the link between an identity and a tree structure. In the application, we advance the logic according to which every identity has at least one contractual relationship. Typically for an identity, one contractual relationship equals to one contract in the company.
Actions normally executed after the end of sync are not executed when the user has cancelled sync!

HR processes in the base ensure the correct state of identities depending on the state of their contractual relationships. Since you need to evaluate the status of contractual relationships as a whole (for a given identity), it is not possible to trigger HR processes during the synchronization of each contractual relationship. Therefore, no HR processes are executed during synchronization.

HR processes can be (should be) correctly started after the end of sync. This can be ensured by the property After end, start the HR processes on the detail of sync configuration. If this option is selected, then the HR processes 'Enabled contract', 'End of contract', 'Contract exclusion' (in this order) start automatically after the contract relationships sync has ended properly.

Recalculation of automatic roles is skipped altogether during sync. Recalculation of automatic roles can be (should be) correctly started after the end of the sync. This is ensured by the property 'After end, start the automatic role recalculation' on the detail of sync configuration.

  • Owner - Relation owner. Must be identity in IdM. This field is required for every relation. Output from atribute transformation can be:
    • ID of IdM identity in String or UUID format.
    • Username of IdM identity in String.
      • Main - Define if is the contract main (between all contracts for the identity). Output from attribute transformation must be Boolean.
      • State - State of contract. Output from attribute transformation must be enumeration ContractState or String representation for this enumeration (DISABLED, EXCLUDED) (more details see below).
      • Position - String representation of contract. Typically name of contract.
      • Guarantees - List of leaders, directly linked on the contractual relationship (more details see below).
      • Work position - Define link to some tree node. Generaly define place in organization structure (more details se below).
      • Other positions - List of other contract positions (more details se below).
      • Valid from - Validity for the contractual relationship. Relation is 'active', only if is valid and state is null. Output value from attribute transformation must be 'org.joda.time.LocalDate'.
      • Valid till - Validity for the contractual relationship. Relation is 'active', only if is valid and state is null. Output value from attribute transformation must be 'org.joda.time.LocalDate'.
      • Externe - If is the contractual relationship for externe identity, then is output value (boolean true) .
      • Description - String for description the relation.

List of supervisors (guarantors), directly linked to the contractual relation. Linked supervisors must exist in IdM. The output from attribute transformation can be:

  • Username of supervisor (String).
  • Id of supervisor (UUID or String).
  • List of usernames (List<String>).
  • List of Ids (List<String> or List<UUID>).
  • Null value. If value is not defined and sync configuration is set for 'Default leader', then this supervisor is set to relation.

If a supervisor is not found, then the synchronization item is marked with a 'warning' (relation will be created/saved). The detailed information is then saved in a log item:

.........................
Finding guarantor [temslie7].
.........................
Warning! - Identity [temslie7] was not found for [temslie7]!
.........................

It defines a link to some tree node. Generally, it defines the place within the organizational structure. The output from attribute transformation can be:

  • Id of tree node (UUID or String).
  • Code of tree node. Node by code runs a search across a default tree (define in sync configuration 'Default type of structure').
  • Null value. If value is not defined and the sync configuration is set to 'Default position in structure', then will be this node set to relation.

If a node is not found, then the synchronization item is marked with a 'warning' (relation will be created/saved). The detailed information is saved in a log item:

........................
Work position - try find directly by transformed value [Divanoodle]!
........................
Work position - was not not found directly from transformed value [Divanoodle]!
........................
Work position - try find in default tree type [DEFAULT_ORG] with code [Divanoodle]!
........................
Warning - Work position - none node found for code [Divanoodle]!
When isn't work-position attribute defined in the mapping, then none default position will be set.

Defines a link to other contractual positions - tree nodes. Generally, it defines other contractual places within the organizational structure. The output from attribute transformation can be:

  • List of Ids of tree nodes (List<String> or List<UUID>).
  • Codes of tree nodes (List<String>). Node by code runs a search within the default tree (define in sync configuration 'Default type of structure').
  • Null value - contractual positions will be empty.

State of the contract. The output from attribute transformation must be enumeration ContractState or String representation for this enumeration.

ContractState have these values: