Systems - DB: Users' contracts synchronization

  • You need install CzechIdM 7.7.0 (and higher).
  • You need be logged in as admin.
  • You need enable ACC module.
  • You must have database jdbcTest with table contracts:
CREATE DATABASE "jdbcTest"
  WITH OWNER = idmadmin
       ENCODING = 'UTF8'
       TABLESPACE = pg_default
       LC_COLLATE = 'cs_CZ.UTF-8'
       LC_CTYPE = 'cs_CZ.UTF-8'
       CONNECTION LIMIT = -1;
CREATE TABLE public.contracts
(
  id character varying(255),
  name character varying(255),
  state character varying(255),
  disbled character varying(255),
  description character varying(255),
  valid_from date,
  valid_to date,
  team_leader character varying(255),
  leader character varying(255),
  main character varying(255),
  changed character varying(255),
  organization_name character varying(255),
  organization_code character varying(255),
  owner character varying(255)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE public.contracts
  OWNER TO idmadmin;
  • And add two records:
INSERT INTO public.contracts(
            id, name, state, disbled, description, valid_from, valid_to, 
            team_leader, leader, main, changed, organization_name, organization_code, 
            owner)
    VALUES (
'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');

INSERT INTO public.contracts(
            id, name, state, disbled, description, valid_from, valid_to, 
            team_leader, leader, main, changed, organization_name, organization_code, 
            owner)
    VALUES (
'2','Contract two','20','true','revolutionize viral experiences','2017-04-06',null,null,null,'true','2016-06-15','Einti','60429-911','john.roe');
  • We go into Systems agenda and add a new system. Click on green button Add.

  • Fill System name and at bottom of page there is green button Save and continue, so click on it.

Go to Configuration tab and fill in information about your database. Ours are as such:

^ Host                 ^ jdbc:postgresql://localhost:5432/jdbcTest  ^
| Port                 | 5432                                       |
| User                 | idmadmin                                   |
| User Password        | ********                                   |
| Database             | jdbcTest                                   |
| Table                | contracts                                  |
| Key Column           | id                                         |
| JDBC Driver          | org.postgresql.Driver                      |
| JDBC Connection URL  | jdbc:postgresql://localhost:5432/jdbcTest  |

  • Then go to tab Scheme and generate scheme.

  • Then go to Mapping and click on Add button.

  • Now fill in information from the picture below and click on Save and continue.

  • At the bottom of page, there are mapped attributes. We are going to add 7 attributes:
^ Attribute in schema ^ Name       ^ Identifier ^ Entity attr. ^ Entity field     ^ IdM key    ^ Transform from system ^
| leader              | leader     | false      | true         | Guarantess       | guarantees | does not have         |
| name                | name       | false      | true         | Name of position | position   | does not have         |
| __NAME__            | __NAME__   | true       | false        |                  |            | does not have         |
| owner               | owner      | false      | true         | Owner            | identity   | does not have         |
| state               | state      | false      | true         | State            | state      | has                   |
| valid_from          | valid_from | false      | true         | Valid from       | validFrom  | has                   |
| valid_to            | valid_to   | false      | true         | Valid till       | validTill  | has                   |
  • In Transformation from system field of state attribute there is green button Insert script select Compiles identity-relation state and click Select

  • Paste to Transformation from system field of valid_from and valid_to attributes:
import org.joda.time.LocalDate;
 
if(attributeValue){
    return new LocalDate(attributeValue);
}
  • Two examples how to fill attributes:
  • Now we have 7 mapped attributes:
  • Go to tab Synchronization and Add new synchronization.
  • Fill the form as in the picture below and click on Save and continue, then click on green arrow and option Save and run sync will show up, so click on it:
  • Confirm start synchronization:
  • Wait a few seconds, so synchronization can finish its job. And then go to Users section (in the left menu). And find user john.roe.
  • In tab positions there is now 3 contracts. The Default contract has been here since creating this user (for testing purposes) and the other two are synchronized from the database. If you have it in a state like in the upper picture you successfully complete this tutorial.
Thank you for following this tutorial, I hope it was useful.