Typically one contractual relationship is equal to one contract in company for the identity. One slice of the contractual relationship describes what the contract looked like in a specific time slot, i. e., it is a snapshot of the contract at a given time. Sync of slices persists slices to the entity IdmContractSlice
and creates relation to the account with entity AccContractSliceAccount
. If more slices exist for the same contract, then only one is being used as source at one time (the latest). See here to learn more about slices.
From these slices (specifically the latest one), a contract is built. This contract is managed only by time slices and cannot be modified directly.
After the synchronization, HR processes must be run. In the Specific settings of synchronization, you can check After end, start the HR processes and not have to worry about anything. This, however, has its problems. If you sync a large amount of time slices (>10,000), you can see some issues. In those cases, it is recommended you run the HR processes manually.
As mentioned above, sometimes, you need to run HR processes manually. Each HR process is a long-running task a can be run from Settings > Task scheduler > Scheduled task. There you can run the desired LRT by simply clicking the green arrow button.
You should run HR processes in this order:
ClearDirtyStateForContractSliceTaskExecutor
SelectCurrentContractSliceTaskExecutor
HrEnableContractProcess
HrEndContractProcess
HrContractExclusionProcess
For more details about some of them, see below.
ClearDirtyStateForContractSliceTaskExecutor
LRT, even if you cancelled the synchronization manually. If you don't, you will see duplicated contract as a result. This HR process creates and deletes contracts and deletes slices which are supposed to be deleted.
So, in a situation where you ran the synchronization and either cancelled it manually before it finished and the HR processes ran or just decided to sync your contracts again (perhaps the data changed), before you run the synchronization a second time, you must run the ClearDirtyStateForContractSliceTaskExecutor
. You can ignore the rest of HR processes for now but you absolutely must run ClearDirtyStateForContractSliceTaskExecutor
.
This LRT deletes those slices which have the flag "dirty" which means that they should be deleted (they are obsolete). It also creates and deletes contracts from the time slices. Beware that it takes some time to complete.
Before HR processes proper are executed, this long running task selects the current contract slices. The LRT is started synchronously and complete log will contain information about its run.
HR processes, simply put, ensure the correct state of identity depending on the state of their contractual relationships. Because we need to evaluate the status of contractual relationships as a whole (to 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 but only after it ends.
There are three HR processes: HrEnableContractProcess, HrEndContractProcess, and HrContractExclusionProcess. Their names are descriptive enough but in a nutshell HrEnableContractProcess determines that the contract should start (it's valid), HrEndContractProcess determines that the contract should end (it's no longer valid), and HrContractExclusionProcess deals with contracts exclusion's start and end. (e. g., due to parental leave)
HR processes can be (should be) correctly started after the end of the sync. This can be ensured ticking the checkbox After end, start the HR processes
in the Specific settings of synchronizationon in sync configuration. If is this property ticked, then all HR processes including ClearDirtyStateForContractSliceTaskExecutor and SelectCurrentContractSliceTaskExecutor will be run once the synchronization finishes.
Recalculation of automatic roles is skipped during sync but it can be (should be) started after the end of the sync. This can be ensured by the property 'After end, start the automatic role recalculation' in the Specific settings of synchronizationon of sync configuration.
String
value represents relation between all slices for the same contract.yyyy-MM-dd
).yyyy-MM-dd
).yyyy-MM-dd
).List of leaders, directly linked to the contractual relation. Linked leader must exists in IdM. Output from attribute transformation can be:
If no leader is found, the synchronization item will be marked as 'warning' (relation will be created/saved). Detailed information will be saved in item log:
......................... Finding guarantee [temslie7]. ......................... Warning! - Identity [temslie7] was not found for [temslie7]! .........................
Defines link to some tree node. Generally defines a place in the organization structure. Output from attribute transformation can be:
If no node is found the synchronization item will be marked as 'warning' (relation will be created/saved). Detailed information will be saved in item log:
........................ 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]!