Table of Contents

Systems - CSV file: users contracts synchronization

What is synchronization of contractual relationships?

The principle of this synchronization is the same as for identity synchronization. However, the aim of this synchronization is not a direct identity, but his/her contractual relationship. More on what constitutes a contractual relationship can be found here.

Typically, one contractual relationship is equal to one contract in a company per identity.
More on the sync of contractual relationships can be found here here.

What you need before you start

Create data with contracts in CSV format

First we need to create sample data that we will synchronize. We will be using the CSV connector, for which we need to create a CSV source file with our sample contracts.

Here are the sample data in CSV format:

ID,NAME,STATE,DISBLED,DESCRIPTION,VALID_FROM,VALID_TO,TEAM_LEADER,LEADER,MAIN,CHANGED,ORGANIZATION_NAME,ORGANIZATION_CODE,OWNER
1,"Contract one","30","false","visualize dot-com ROI","2016-05-04","2016-06-21","john.doe","john.doe","true","2016-06-25","Skinder","68016-376","john.roe"
2,"Contract two","20","true","revolutionize viral experiences","2017-04-06","","","","true","2016-06-15","Einti","60429-911","john.roe"

Create a new file "contracts.csv" which contains the above data. This file can be saved in your user space. In my case, the path is: "/home/svandav/csv/contracts.csv".

Create system 'Contracts - CSV'

Create a new system in CzechIdM, with the name 'Contracts - CSV'.

Connector configuration

Now we can configure the CSV connector and its settings.

Remember, you have to set correct path to your contracts.csv file!

Generate schema

Once we have configured the system, we need to generate its schema. Go to the scheme tab and click on the "Generate scheme" button.

Create sync mapping

System mapping for synchronizing contractual relationships can be created in the tab "Mapping".

Create mapped attributes

Now we have to map our attributes. These are definitions specifying the way the data from our CSV file should be represented in IdM.

Primary attribute

One of the attributes must be selected as primary identifier.

Name attribute

Defines the name of the contractual relationship.

Guarantee attribute

Defines the list of superiors, directly linked to the contractual relationship (more details see below).

Owner attribute

Defines relation owner. Must be an identity in IdM. This field is required for every relation.

Valid from attribute

Valid from - Validity for the contractual relationship. This attribute requires LocalDate type. For this we need need to transform our data (as show example below).

import org.joda.time.LocalDate;
 
if(attributeValue){
    return new LocalDate(attributeValue);
}

Valid till attribute

Valid till - Validity for the contractual relationship. This attribute requires LocalDate type. For this we need to transform our data (as show example below).

import org.joda.time.LocalDate;
 
if(attributeValue){
    return new LocalDate(attributeValue);
}

State attribute

State of contract. In some situations information can be needed to determine the result state in multiple attributes. For example, we can have an attribute 'state' with one of multiple values (10,20,30) and a second attribute 'disabled' (with value true/false). In this case states '10' and '30' mark that contractual relation is 'excluded', but when the attribute 'disabled' will be 'true', then the final state of relation must be 'DISABLED'.

To resolve the situation described above we created the transformation script 'compileIdentityRelationState'.

Create sync configuration

We have created a system with mapped attributes. Now we need to create synchronization configuration.

Start sync

Finally we can start synchronization of contract relationships.

Log of sync

After the sync ended (it should not take than a few seconds), you can check result of sync.

Check contracts on user 'john.roe'

Finally, you can check the new contract relations of the user 'john.roe'.

If you see the same result, then congratulations on your first successful synchronization of contract relationships!