Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
devel:documentation:adm:contracts [2019/02/07 14:08]
kotisovam created (admin guide) page on time slices
— (current)
Line 1: Line 1:
-====== Time slices of contractual relationships  ======  
- 
-Many companies employ data sources about users, employees or org. structures that work with so-called time slices. For this purpose, an agenda of contract time slices was designed. 
- 
-<note>**The basic idea** is that time slices are stored in a self-contained agenda. This agenda only contains time slices for identity contracts. If a slice is currently valid, its values will be **copied into the respective identity's contract**. **Every day** a scheduled task is performed to identify a valid time slice, and to copy its value into a contract).</note> 
- 
-<note important>On any given day, only **one slice** per contract may exist. Every slice must contain all the contract data. In a sense, a slice is a **snapshot** of a contract! </note> 
- 
-===== Task for updating a contract using a current slice ===== 
-To recalculate the current slice, you can use the `SelectCurrentContractSliceTaskExecutor` task. This task seeks all slices that should be used for the current date, and copy their values to their parent contracts. 
- 
-<note important>**Suppose more than one slice is found** during synchronization (for the same contract), which should be set as the current one, then the contract is not recalculated! **Error will be logged in this long-running task**.</note> 
- 
-<note tip>By default, this task is triggered every day at **0:30 AM**.</note> 
- 
- 
-===== Protection of the contract validity ===== 
- 
-There may be a situation when one time slice **ends** the contract, while there is another time slice that **restarts** this contract. If there is no gap between its termination and restart dates, then the contract will not terminate (no accounts will be deleted).  
-However, if the dates do not follow seamlessly, then (by default) **the contract is terminated**, and all connected **accounts will be removed** from the target systems. 
- 
-In some situations (projects), a **protection period** must be used over the course of which a contract will **not be terminated**, provided that there is another slice relevant for the contract that restarts the latter. Furthermore, the gap between the termination and the commencement of the contract must be less than or equal to the protection interval. 
- 
-<note>**The protected interval** can be set using the property `idm.sec.core.contract-slice.protection-interval`, where the value is a **number of days**. If the number of days between the termination of the contract and its renewal in the following time slice is **less than or equal** to the number of days set in the protection interval, then the date of the contract validity **from** the following slice will be used instead of the date of **termination** of the contract from the currently valid slice.</note> 
- 
-<note tip> 
-**By default**, protection interval is **disabled**. The method how to create/update a contract by slice can be customized.</note>  
- 
-<note important>Contracts cannot be modified or removed when they contain some slices (are controlled by slices). Once the **last slice** of the contract is deleted, then the contract will be deleted, too.</note> 
- 
- 
-===== Sync ===== 
-The synchronization of time slices is very similar to the sync of contracts. 
- 
-Sync of slices adds new attributes: 
-   * **Contract code** - Code of the parent contract. This `String` value represents relation between all slices for the same contract. It means all slices of a contract must have the same value.   
-   * **Valid from of slice** - Defines time from which a slice is valid. **Valid till of slice** is computed automatically (relying on the validity of the next slice) after saving. 
- 
-<note> **Sync of contract slice** usees the specific configuration from sync of contract. **Valid till date** is set only if a slice is the last one (in sync)!</note> 
- 
-**More informations about sync** of time slices are [[|here]]. 
  
  • by kotisovam