HR-liitin (tuonti)
HR-liitin
On osa Efecte Connectin natiiveja liittimiä ja käyttää valmiita skriptejä Efecte Provisioning Engine mukautetusta skriptiliittimestä. Tämän natiivin HR-liittimen avulla asiakkaat voivat tuoda henkilökohtaisia ja organisaatiotietoja HR-ratkaisustaan. Liitin on suunniteltu IGA -ratkaisulle, mutta sitä voidaan muokata käytettäväksi kaikissa Efecten ratkaisuissa. Liitin tukee XML-, CSV- ja JSON-muotoja, ja se sisältää datan validoinnin ja vertailun edelliseen tiedostoon.
Kun HR-liitin otetaan käyttöön, asiakkaan vastuut ovat
- Luo tiedosto(t) luvussa ”Tiedoston luominen HR-ratkaisusta” kuvattujen ohjeiden mukaisesti.
- Aikatauluta tiedostojen luonti toimituksessa sovitun aikataulun mukaisesti
- Pro SFTP-palvelimen (ja yhteydet), jonne tiedostot toimitetaan ja josta HR-liitin voi noutaa tiedosto(ja)

Miten HR-liitin toimii?
Yleiskatsaus
HR-liitin käyttää Efecte Provisioning Engine (mukautettu skriptiliitin) datan lukemiseen tiedostosta. Liitin on suunniteltu käytettäväksi IGA ratkaisujen käyttäjien elinkaaren hallintatapauksissa. Sen käyttö muuhun tarkoitukseen edellyttää skriptin viemistä isäntäkoneelta ja muokkaamista asiakkaan vaatimusten mukaisesti. Huomaa, että on myös mahdollista luoda uusi skripti alusta alkaen ja käyttää mukautettua skriptiliitintä sen validointiin ja tuontiin.
HR-liitin tukee yhtä tai useampaa työjaksoa, kunhan työjaksot luodaan luvussa ”Tiedoston luominen HR-ratkaisusta” kuvatulla tavalla.
HR-liittimen perusperiaatteet,
1. Liitin käyttää ylimääräisiä argumentteja, jotka on määritelty aikataulun mukaisessa valmistelutehtävässä, tiedoston löytämiseen polusta (jos ylimääräinen argumentti puuttuu, prosessi pysähtyy).
2. Tiedostot muunnetaan JSON-muotoon (dict) ja tallennetaan JSON-muodossa
3. Jokainen tiedosto voidaan suorittaa kokonaan tai osittain
4. Osittain suoritettu suoritus vertaa tietoja aina arkistoituun tiedostoon (jos arkistoitu tiedosto puuttuu, prosessi pysähtyy)
5. Json-muotoisessa tiedostossa kaikki kartoitetut attribuutit ovat pakollisia kenttiä ja tehtävä pysäyttää tuonnin, jos jostakin tuodusta objektista puuttuu pakollisia attribuutteja. CSV-muoto toimii eri tavalla, sille riittää, että kaikki kartoitetut attribuutit löytyvät otsikkoriviltä sarakkeina.
6. Liitin tuo IGA -järjestelmänvalvojan tehtävän IGA ratkaisuun, mukaan lukien virheet ja arkistoituja ja tuotuja rivejä sisältävät JSON-tiedostot, tuonnin suorittamisen jälkeen.
Hyvä muistaa!
Lisäargumenttien tarkastelu (kun ajoitettu tehtävä on tallennettu HR-liittimeen) edellyttää, että salasana tallennetaan turvalliseen paikkaan mahdollisten argumenttien muutosten toteuttamista varten.
Liitintiedostot,
| Tiedosto (EPE-työntekijäsäiliössä) | Kuvaus |
|
/tmp/custom-provisioning-scripts/3_log.txt |
Sisältää lokeja, tiedostonimessä oleva numero on taskid. |
|
/tmp/custom-provisioning-scripts/3_output.json |
Sisältää rivit, jotka läpäisivät validoinnin ja jotka tulisi tuoda IGA ratkaisuun. Tiedoston nimessä oleva numero on taskid. |
| /tmp/custom-provisioning-scripts/data/archive/(tietotyyppi)_archive.json | Tallentaa kaikki suoritetun tiedoston rivit, mukaan lukien kelvolliset ja virheelliset. Tiedosto korvataan jokaisella suorituskerralla. |
| /tmp/custom-provisioning-scripts/data/archive/error_(tietotyyppi)_archive.json | Tallentaa rivit, jotka eivät läpäisseet validointia ajon aikana. Näitä rivejä ei tuoda IGA ratkaisuun. Tiedosto korvataan jokaisella ajolla. |
| /tmp/custom-provisioning-scripts/only_scheduled/ IGA | Liittimen skripti Kansiossa voi olla useita skriptejä, ja tehtävien käyttöliittymästä sinun on valittava, mitä skriptejä mikäkin tehtävä suorittaa. |
|
/tmp/custom-provisioning-scripts/misc-files/translation.json |
1. Käytetään raporttitapausten kääntämiseen tietylle kielelle. 2. Uusia kieliä voidaan lisätä lisäämällä "language" esim. "de" tai "en" kaikkien tapausten alle avaimella "text". Jokaisella raporttitapauksella on oltava uusi kieli, muuten liitin aiheuttaa virheen. 3. Tietyn kielen käyttämiseksi lisäargumenttien on oltava avain "language", jonka arvo löytyy translation.json-tiedostosta. |
Luo tiedosto HR-ratkaisusta
HR-liitin odottaa, että HR-ratkaisu luo tiedoston seuraavan logiikan mukaisesti ja että tiedosto tallennetaan asiakkaan SFTP-palvelimelle, josta liitin voi noutaa tiedoston/tiedostot. Huomaa, että koodauksen on oltava UTF-8.
Jos käytät csv-tiedostomuotoa, HR-liitinskriptin käyttämä oletuskenttäerotin on ; (puolipiste).
Tiedoston luominen vaihtelee asiakkaan käyttämän HR-ratkaisun mukaan. Esimerkiksi erityisesti IGA ratkaisu vaatii tiedon vastaanottamista sekä menneisyydestä että tulevaisuudesta.
Workday HR -ratkaisujen kohdalla on suositeltavaa luoda Workdaylle mukautettu raportti, joka raportoi tarvittavat tiedot, ja muotoilla tiedot json-muodossa kyseiselle raportille.
Hyvä tietää!
Joskus HR-ratkaisut saattavat luoda uuden viimeisimmän päivityksen aikaleiman tilanteissa, joissa tietoja ei tarvitse toimittaa Efecten ratkaisuun, kuten esimerkiksi palkanmaksut usein ennen palkkapäivää. Tämä tarpeeton data aiheuttaa paljon provisiointia kohdejärjestelmille, ja näiden ongelmien ratkaiseminen vie yleensä aikaa asiakkaiden ylläpitäjiltä/käyttäjiltä.
On suositeltavaa validoida tiedot ennen kuin täysi automaatio voidaan aloittaa vastaanotettujen tietojen perusteella (tiedon laatu varmistettu), ja Efecten IGA ratkaisu sisältää mahdollisuuden simuloida muutoksia (lue lisää täältä ) .
Esimerkkejä siitä, mitä tietoja käytetään tarvittavan tiedoston luomiseen,
| Logiikka | Lisätietoja |
| Kaikki käyttäjät, joilla on aktiivinen työjakso | Käyttäjät valitaan työjaksojen päivämäärien perusteella |
| Kaikki käyttäjät, joilla on aktiivinen työjakso tulevaisuudessa | Kuukausi eteenpäin |
| Kaikki käyttäjät, joilla on ollut aktiivista työjaksoa aiemmin | Kuukausi sitten, tämä on tarpeen, jos käyttäjätietoihin tehdään muutoksia työsuhteen päättymisen jälkeen. |
| Käyttäjät lajitellaan yksilöllisen tunnuksen perusteella | Yksilöllinen tunniste voi olla joko työntekijänumero tai sosiaaliturvatunnus. |
| Viimeisimmän päivityksen aikaleima | Käyttäjät voidaan valita viimeisimmän päivityksen aikaleiman perusteella, mutta tarkista asiakkaalta HR-asiantuntijalta, mikä muutos päivittää aikaleiman. |
SFTP-palvelimen kansiorakenteeseen liittyvät suositukset
Jos asiakas haluaa käyttää HR-liitintä useiden erityyppisten tietojen tuontiin, on suositeltavaa käyttää yhtä HR-liitintä tietotyyppiä kohden.
Esimerkiksi jos asiakas haluaa tuoda organisaatioita ja käyttäjiä, hänellä tulee olla kaksi liitintä, kuten "HR-liitin Organisaatiot" ja "HR-liitin Käyttäjät".
Ja jos nuo kaksi liitäntätiedostoa sijaitsevat samalla ftp-palvelimella, niiden kansiorakenne voisi olla esimerkiksi:
/sftp/iga/organisaatiossa
/sftp/iga/in/organization/archive
/sftp/iga/in/user
/sftp/iga/in/user/archive
Datakansion tulisi sisältää vain yksi tiedosto kerrallaan.
Tämän kansiorakenteen avulla voit käyttää näitä komentosarjaparametreja HR-yhdistinorganisaatioille:
“sftp_remote_path_data”:"/sftp/iga/in/organization",
“sftp_remote_path_archive”:"/sftp/iga/in/organization/archive",
“file_path”:"./organization/*.csv"
Ja vastaavasti erilaiset komentosarjaparametrit HR-liittimen käyttäjille.
Parametrit, validointi ja poikkeukset
Parametrit
Käytetään HR-liittimen asetusten määrittämiseen, jotka validoidaan skriptin suorituksen yhteydessä.
Muista säilyttää salasana turvallisessa paikassa siltä varalta, että sinun on tarkistettava parametreja ajoitetun tehtävän tallentamisen jälkeen.
HR-liitin käyttää seuraavia parametreja,
| Parametri | Kuvaus | Pakollinen / valinnainen |
| tiedostopolku | Polku ja tiedostomuoto, jossa tiedosto sijaitsee. | Pakollinen |
| data_type | Arvot: kustannuspaikka, organisaatio, titteli tai työjakso. | Pakollinen |
| päivitysraja | Kuinka monta päivitystä Efecte-ratkaisuun sallitaan. | Pakollinen |
| suoritustyyppi | Suoritustyyppi määrittää, tehdäänkö vertailu edelliseen tiedostoon. Arvot: täysi lataus tai osittainen lataus, oletusarvo on osittainen lataus |
Pakollinen |
| ohituspäivitysraja | Ohittaa päivitysrajan, jos päivitysten määrä ylittää annetun rajan. Arvot ovat tosi tai epätosi, oletusarvo on epätosi. | Pakollinen |
| rivien_minimimäärä | Mikä on tiedostossa olevien rivien vähimmäismäärä? | Valinnainen |
| webapi_käyttäjä | Web API -käyttäjä (ESM-käyttäjä) raporttien luontiin. Edellyttää IGA -järjestelmänvalvojan tehtävien luonti- ja päivitysoikeudet. | Pakollinen |
| webapi_salasana | Web API -käyttäjien salasana. | Pakollinen |
| webapi_url | URL-osoite Efecte-ratkaisuympäristöön. | Pakollinen |
| raporttimallin_koodi | Kohdemallin koodi. | Pakollinen |
| raporttikansion_koodi | Kohdekansion koodi. | Pakollinen |
| virheenjäljitys | Ottaa käyttöön virheenkorjauslokin. Arvot ovat tosi tai epätosi, oletusarvo on epätosi. Jos asetat debug-arvoksi true, saat yksityiskohtaisempia lokiviestejä, mutta tehtävä suoritetaan hieman hitaammin. Lokit löytyvät epe-worker-säilöstä /custom-provisioning-scripts -kansiosta. |
Valinnainen |
Validointi
Validointi tarkoittaa, että HR-liitin vahvistaa, että kaikki käyttäjiin liittyvät pakolliset tiedot on vastaanotettu HR-ratkaisulta. Jos tiedot puuttuvat, HR-liitin luo oletusarvoisen IGA hallintatehtävän.
Asiakas voi määrittää luettavaksi lisää attribuutteja alla olevan luettelon ulkopuolelta, mutta se vaatii HR-liitinskriptin muokkaamisen (lue lisää laajennusmahdollisuudet-luvusta).
| Ominaisuus | Kuvaus | Pakollinen / valinnainen |
| Sukunimi | Käyttäjän sukunimi, pakollinen esimerkiksi käyttäjän sähköpostiosoitteen luomisessa. | Pakollinen |
| Etunimi | Käyttäjän etunimi, pakollinen esimerkiksi sähköpostiosoitteen luomista varten. | Pakollinen |
| Sosiaaliturvatunnus / kansallinen henkilötunnus | Pakollinen, jos valittu käyttäjän yksilölliseksi tunnukseksi (tai esimerkiksi jos myös pankkitunnuksen todennus toimitetaan). | Pakollinen / valinnainen |
| Työntekijänumero (työntekijätunnus) | Pakollinen, jos valittu käyttäjän yksilölliseksi tunnukseksi. | Pakollinen / valinnainen |
| Työsuhteen alkamispäivä | Milloin käyttäjän työjakso alkoi tai on alkamassa. | Pakollinen |
| Otsikkotunnus | Käyttäjän tittelin yksilöllinen tunniste (suhde tittelin nimeen) | Pakollinen |
| Päällikön tunnus | Käyttäjäpäällikön yksilöllinen tunniste, yleensä päällikön työntekijätunnus | Pakollinen |
| Organisaatioyksikön tunnus | Yksilöllinen organisaatioyksikön tunnus (suhde organisaatioyksikön nimeen) | Pakollinen |
| Puhuttu nimi | Voidaan käyttää esimerkiksi sähköpostiosoitteessa, jota käytetään yleisesti Skandinaviassa, kun käyttäjä voi valita yhden virallisista nimistään, jolla häntä kutsutaan. | Valinnainen |
| Toinen nimi | Käytetään yleisesti samannimisten käyttäjien tunnistamiseen, ja jos nimimerkki esiintyy, sähköpostiosoitteessa käytetään toisen nimen kirjaimia. | Valinnainen |
| Työsuhteen päättymispäivä | Kun käyttäjän työjakso on päättymässä, tietoja käytetään ulkoisten prosessien käynnistämiseen | Valinnainen |
| Työsuhteen tyyppi | Pysyvä, väliaikainen, tuntiperusteinen, ulkoinen | Valinnainen |
| Onko käyttäjähallinta? | Käyttäjätittelien ei tarvitse aina ilmaista, onko käyttäjä esimies, ja joissakin HR-ratkaisuissa tämä tieto on saatavilla erikseen omana attribuuttinaan. | Valinnainen |
| Otsikko | Käyttäjän nimi tittelille ID | Valinnainen |
| Päällikön nimi | Käyttäjäpäällikön tunnuksen nimi | Valinnainen |
| Käyttäjätyyppi | Sisäinen, ulkoinen | Valinnainen |
| Kustannuspaikka | Käyttäjän kustannuspaikan nimi | Valinnainen |
| Organisaatioyksikön nimi | Suositellaan luettavaksi HR-ratkaisusta erityisesti tapauksissa, joissa asiakas haluaa päivittää organisaatioyksikön tietoja hakemistoissa tai sovelluksissa ja/tai kun käytetään IGA automatisoituja sääntöjä . | Valinnainen |
Poikkeukset
Asiakas voi määrittää, missä mallissa, kansiossa ja attribuutissa HR-liitin luo seuraavat poikkeukset,
| Poikkeus | Kuvaus | IGA järjestelmänvalvojan toiminnot |
| Tiedostoa ei vastaanotettu tai se on tyhjä | Jos tiedostoa ei ole asiakkaan SFTP-palvelimella tai se on tyhjä, IGA hallintatehtävä luodaan yksityiskohtaisempaa vianmääritystä varten. | IGA -ylläpitäjä vahvistaa, että tiedostoa ei luoda HR-järjestelmästä tai miksi tiedosto on tyhjä. Tiedosto on luotava uudelleen ja HR-liittimen ajoitettu tehtävä on suoritettava uudelleen. |
| Käyttäjältä puuttuu yksilöllinen tunnus | Yksilöllisen tunnuksen omaavat käyttäjät tuodaan, ja IGA järjestelmänvalvojan tehtävä luodaan manuaalista tarkistusta varten niille käyttäjille, joilta puuttui tietoja. |
Käyttäjän yksilöllinen tunnus on syötettävä HR-ratkaisuun, tiedosto luodaan uudelleen ja ajoitettu tehtävä suoritetaan manuaalisesti. |
| Ajoitetusta tehtävästä puuttuu ylimääräisiä argumentteja | Pakolliset lisäargumentit ovat: tiedostopolku data_type päivitysraja webapi_käyttäjä webapi_salasana webapi_url raporttimallin_koodi |
Aikataulun mukaiseen valmistelutehtävään on lisättävä ylimääräisiä argumentteja ja tehtävä on suoritettava uudelleen. |
| Arkistotiedosto puuttuu | Arkistotiedoston löytäminen on pakollista, jotta osittainen ajo voidaan suorittaa loppuun. | IGA järjestelmänvalvojan tehtävä puuttuvan tiedoston ongelman ratkaisemiseksi ja tiedoston löytyessä ajoitettu tehtävä on suoritettava uudelleen. |
| Pakollinen kenttä (objekti) tai kentän arvo puuttuu | Rivi on estetty ja tuonti on viimeistelty | IGA -ylläpitäjä voi nähdä liitinraportista ( IGA ylläpitäjän tehtävä), onko rivejä estetty. Tiedot on lisättävä lähdejärjestelmään ja tiedosto on luotava uudelleen ja suoritettava uudelleen. |
| Päivitysraja (update_limit) on ylitetty | Tuonti keskeytyy (ei suoriteta). | IGA -järjestelmänvalvojan tehtävä luodaan ongelman ratkaisemiseksi ja ajoitetun tehtävän uudelleen suorittamiseksi. |
| Rivitilin vähimmäismäärää ei ole ylitetty | Tuonti keskeytyy (ei suoriteta). | IGA -järjestelmänvalvojan tehtävä luodaan ongelman ratkaisemiseksi ja ajoitetun tehtävän uudelleen suorittamiseksi. |
| Useita tiedostoja, jotka vastaavat nimeämiskriteerejä SFTP-palvelimella | Tuonti keskeytyy (ei suoriteta). | Ylimääräiset tiedostot on poistettava ja HR-liittimen ajoitettu tehtävä on suoritettava uudelleen. |
Konfigurointiohjeet
Nämä ohjeet uid esikonfiguroidun HR-liittimen käyttöönotossa tai sellaisen luomisessa alusta alkaen. Huomaa, että skriptin muokkaaminen vaatii Python-skriptitaitoja.
Edellytykset
Varmista, että seuraavat tehtävät on suoritettu ennen HR-liittimen ajoitetun tehtävän suorittamista:
- IGA Connector.py-skripti löytyy asiakkaiden testi- ja tuotantoympäristöistä
- Jos se puuttuu, ota yhteyttä Efecte Service Desk
- HR-liitin konfiguroidaan asiakkaan Efecte-ratkaisujen testiympäristöön
- HR-liitintä testataan asiakkaan Efecte-ratkaisujen testiympäristössä
- Luo tarvittava testidata, testaa käyttäjiä ja testitapauksia
- Asiakkaiden HR-asiantuntijat ja tulevat IGA -ylläpitäjät ovat vahvistaneet datan laadun
- Tiedosto on luotu, ajoitettu ja tallennettu asiakkaan SFTP-palvelimelle oikein
- IGA ratkaisua varten toteuta konfigurointiohjeet käyttäjän elinkaaren hallinnan käyttötapauksiin
- IGA -asetettujen työjaksojen tietokortit ovat paikoillaan
- IGA tilitietojen kortti(t) on(vat) paikallaan
- Simulaatiovaiheesta on sovittu ja IGA ylläpitäjä validoi vastaanotetut tiedot xx ajanjakson ajan ennen tarjoamista (kun tietojen laatu on varmistettu, täysi automaatio voidaan ottaa käyttöön muuttamalla IGA työjaksotietojen asetuksia)
Yleisiä uid ajoitetuille tehtäville
General g uid ance for scheduled tasks
How to Create New Scheduled Task to import data
For configuring scheduled-based provisioning task, you will need access to Administration / Connectors tab.
1. Open the Administration area (a cogwheel symbol).
2. Open Connectors view.
3. Choose Connector for Scheduled-based task and select New Task
Note! If connector is not created, you have to choose first New connector and after that New task.

4. Continue with connector specific instructions: Native Connectors
Should I use Incremental, Full or Both?
Scheduled task can be either Incremental or Full -type.
Do not import permissions with AD and LDAP incremental task
Incremental task has issue with permissions importing. At the moment it is recommended not to import group memberships with incremental scheduled task.
On Microsoft Active Directory and OpenLDAP connectors, remove this mapping on incremental task:

Setting on Scheduled tasks:

Incremental type is supported only for Microsoft Active Directory, LDAP and Microsoft Graph API (formerly known as Entra ID) Connectors.
Incremental type means, that Native Connectors (EPE) fetches data from source system, using changed timestamp information, so it fetches only data which is changed or added after previous incremental task run.
When Incremental type task is run for very first time, it does a full fetch (and it marks the current timestamp to EPE database), thereafter, task uses that timestamp to ask the data source for data that changed since that timestamp (and then EPE updates the timestamp to EPE database for next task run). Clearing task cache doesn't affect this timestamp, so Incremental task is always incremental after first run.
Full type is supported for all Connectors.
Full type import fetches always all data (it's configured to fetch) from source system, on every run.
Both Full and Incremental type tasks use also Task cache in EPE, which makes certain imports faster and lighter for M42 system.
By default that task cache is cleared ad midnight UTC time. When cache is cleared, next import after that is run without caching used to reason if data fetched should be pushed to ESM, all fetched data is pushed to ESM. But after that, next task runs until next time cache is cleared, are using EPE cache to determine if fetched data needs to be pushed to ESM or not.
You can configure at what time of day task cache is emptied, by changing global setting in EPE datapump configuration:
/opt/epe/datapump-itsm/config/custom.properties
which is by default set to: clearCacheHours24HourFormat=0
You can also clear cache many times a day, but that needs to be thinked carefully, as it has impact on overall performance as EPE will push changes to ESM, that probably are already there, example(do not add spaces to attribute value): clearCacheHours24HourFormat=6,12
After changing this value, reboot EPE datapump container to take change into use.
Recommendations:
Have always by default Full type scheduled task.
If you want to fetch changes to data fetched already by full task, more frequently than you can run full task, add also incremental task. Usually incremental task is not needed.
Recommended Scheduling Sequence
Recommended scheduling sequence, depends how much data is read from Customers system/directory to the Matrix42 Core, Pro or IGA solution and is import Incremental or Full.
Examples for scheduling,
| Total amount of users | Total amount of groups | Full load sequence | Incremental load sequence |
| < 500 | < 1000 |
Every 30 minutes if partial load is not used Four (4) times a day if partial load is used |
Every 10 minutes |
| < 2000 | < 2000 |
Every 60 minutes, if partial load is not used Four (4) times a day if partial load is used |
Every 15 minutes |
| < 5000 | < 3000 |
Every four (4) hours, if partial load is not used Twice a day if partial load is used |
Every 15 minutes |
| < 10 000 | < 5000 | Maximum imports twice a day, no matter if partial load is or is not used | Every 30 minutes |
| < 50 000 | < 7000 | Maximum import once a day, no matter if partial load is or is not used | Every 60 minutes |
| Over 50 000 | Over 7000 | There might be a need for another EPE-worker, please contact Product Owner | Separately evaluated |
Please note that if there are several tasks running at the same time you may need more EPE-workers. The tasks should be scheduled at different times and can be completed according to the table above. However, if there are more than 6 tasks running at the same time, the number of epeworkers should be increased. It's best practice not to schedule tasks to run at same time, if possible.
Recommendations related to performance
If the amount fo data to be imported is over 10000 concider these things:
Adjust log level of ESM and DATAPUMP to ERROR-level, to lowe the amount of logging during task run
Have as few as possible automations starting immediately for imported datacards (listeners, handlers, workflows), as those make ESM to take longer time handling new datacards.
Set removed accounts and entitlements status removed/disabled
With this functionality, you can mark account and entitlement status to e.g. Deleted or Disabled, when account or entitlement is removed from source system. Starting from version 2025.3 you can also set status to generic objects (not only to accounts/identities and entitlements/groups).
For version 2025.3 and newer
In version 2025.3 these settings are moved from properties files to Task UI. Also you can now set these settings for Generic objects, which have not been possible before this version.
There is separate configuration for each scheduled task, and for all mapping types. Here is example of this config on task:

For version 2025.2 and older
This functionality is available for “full” type scheduled tasks.
Settings are on datapump dockers configuration file. To change those parameter values, you need to set those in /opt/epe/datapump-itsm/config/custom.properties file.
Configuration
To enable disabling functionality, datapump config should have these parameters set to true:
disable.unknown.esm.users=truedisable.unknown.esm.groups=true
Those 2 parameters are false by default in 2024.2 and 2025.1 versions. In 2025.2 and newer version those are true by default.
Next are these parameters:
personTemplateStatusCodeAttributeKey=accountStatuspersonTemplateStatusAttributeDisabledValueKey=DeletedgroupTemplateStatusCodeAttributeKey=statusgroupTemplateStatusAttributeDisabledValueKey=5 - Removed
First two attributes should point to the DatacardHiddenState attribute in the User template, and tell which value should be send there when the user is deleted.
By default its accountStatus and Value 5 - Removed on IGA Account template.
All these needs to match with the attribute configuration:

Same thing applies for the next two paramaters, but its for Groups.'
If you need to change those parameters in properties file, do changes in Datapump container to file: /opt/epe/datapump-itsm/config/custom.properties and those changes will then survive over container reboot and will be copied on reboot to /opt/epe/datapump-itsm/config/application.properties.
Description
Tasks save their __taskid__ shown as Task Id mapping in the UI to the datacards, its then used to determine if the datacard was added by this task. In case there are multiple tasks with different sets of users.
This field was previously used as datasourceid, but since we moved to the model where connector can have multiple tasks its identifier cannot be used anymore, thats why the field was repurposed as taskid instead.
Taking users as an example, when task runs ESM is asked for the list of users that have its taskid in Task Id mapping field, and doesn't have a personTemplateStatusAttributeDisabledValueKey value in the personTemplateStatusCodeAttributeKey
This result is then compared to what the task fetched, and the datacards of users that were not fetched have their personTemplateStatusattribute set to value specified in the config - 5 - Removedby default.
Example log below shows described process and informs that one user was removed.

Same thing applies to groups but groupTemplateStatusattributes are used instead.
Notes
- Feature works only with full fetch scheduled tasks..
- No support for generic templates yet, only identity and access
- When migrating from the previous versions where datasourceid was still used it needs to run at least once to set its taskid’s in the datacards first.
- EPE identifies Disabled users or groups as the ones that were removed from the AD, at the present we do not support statuses related to the entity beign active or not.
- EPE does not enable users back on its own.
- If more than one tasks fetches the same users or groups it may overwrite the taskid in the datacard depending on which task ran last. It is suggested that many full type tasks are not fetching same user or group.
- Always do configuration file changes to custom.properties, do not change only application.properties as those changes are lost on container reboot if you have not done same changes to custom.properties.
HR-liittimen ja ajoitetun tehtävän määrittäminen
Päästäkseen liittimien hallintaan käyttäjällä on oltava oikeudet Efecte Platformin konfigurointiin.
1. Avaa Efecten hallinta-alue (ratassymboli).
2. Avaa yhdistinnäkymä.
3. Valitse uusi liitin

2. Valitse tietolähteen tyypiksi Mukautettu taustajärjestelmä

3. Täytä tiedot
- Täytä liittimen yksilöllinen nimi. Huomaa, että nimeä ei voi muuttaa jälkikäteen.
- Valitse IGA Connector.py-skripti valmisteluskriptikentästä
- Parametrien salaussalasana tarvitaan parametrien piilottamiseen/näyttämiseen liittimen tallentamisen jälkeen.
- Web API -käyttäjää tarvitaan, kun HR-liitin kirjoittaa dataa asiakkaille Efecte-ratkaisu
- Web API -salasana tarvitaan, kun HR-liitin kirjoittaa tietoja asiakkaille Efecte-ratkaisu

4. Näytä ja muokkaa parametreja asiakkaan määritelmien mukaisesti
- Säilytä salaussalasana turvallisessa paikassa. Tarvitset sitä myöhemmin, jos parametreja on tarpeen muuttaa.
Esimerkki parametreista:
{"objectGUID_field_name":"objectGUID", "sftp_server_fqdn":"transfer.xx.com", "sftp_server_ssh_port_number":"22", "sftp_username":"username_here", "sftp_password":"username_here", "sftp_remote_path_data":"/sftp/data", "sftp_remote_path_archive":"/sftp/archive",
"file_path":"./data/workperiod*.csv", // Path and file pattern where file is located. Mandatory value
"data_type":"workperiod", // Values: costcenter, organization, title or workperiod. Mandatory value
"run_type":"partial", // Run type specifies if comparison to previous file will be done. Values: full or partial. Optional value, default is 'partial'
"update_limit": 100, // How many updates are allowed to IGA System. Mandatory value
"override_update_limit":false, // overrides update limit, if amoun of updates is more than given limit. Values: true or false. Optional value, defaul is 'false'
"minimum_row_count": 10, // What is the minimum amount of rows, that should exist in the file. Optional value
"webapi_user": " IGA .Web API ", // Web API user for report creation. Requires Create and Read permissions to IGA Adminisitration task. Mandatory value
"webapi_password": "aeiou", // Web API user's password. Mandatory value
"webapi_url":"https://eisdemo.efectecloud-demo.com", // URL to ESM environment. Mandatory value
"report_template_code":" IGA WorkflowTaskInformation", // Target template code. Mandatory value
"report_folder_code":"iga_tasks", // Target folder code. Mandatory value
"debug": false, // Enables debug logging. Values: true of false. Optional value, default is 'false'
"language": "en" // Sets IGA Administration Task report language. Optional value, default is 'en'
}

5. Luo uusi ajoitettu tehtävä HR-liittimelle

6. Täytä tehtävän tiedot
- Yhdistimen yksilöllinen tehtävänimi. Huomaa, että nimeä ei voi muuttaa jälkikäteen.
- Tehtävien käyttö on asetettu ajoitetuksi
- Yhdistämistyypiksi on asetettu yleinen (yksi malli)

- Objectg uid :n attribuutin nimi. Kirjoita syötetietosarakkeen/attribuutin nimi, joka sisältää rivin yksilöllisen tunnisteen. Esimerkiksi: objectGUID

7. Täytä vikatiedot
Valinnaiset asetukset virheiden käsittelyyn. Jos ajoitettu tehtävä epäonnistuu, Efecte ESM:ään voidaan luoda datakortti, joka näyttää virheen. Jos virheasetukset on määritetty, järjestelmänvalvojan ei tarvitse tarkistaa ajoitettujen tehtävien tilaa manuaalisesti.
- Virhemalli - Valitse datakortin malli, joka luodaan, jos valmistelussa ilmenee virheitä (yhteys tietolähteisiin, aikakatkaisut jne.).
- Vikakansio - Valitse kansio, johon vikatietokortti on tallennettu.
- Virheattribuutti – Valitse attribuutti, mihin virhemallissa virhetiedot tallennetaan.

8. Täytä yleisen mallin määritykset
Yleisiä tietoja luetaan mihin tahansa käyttäjän haluamaan mallipohjaan, ja on pakollista asettaa kohdekansio, tietolähteen tunniste ja yksilölliset arvot, joita käytetään tietojen tunnistamiseen asiakkaan HR:n ja Efecte-ratkaisun välillä.
- Kohdemalli – Valitse malli määrittääksesi attribuuttimääritykset
- Kohdekansio - Valitse kansio kansioluettelosta. Luetteloa rajataan vastaamaan yhteensopivuutta valitun mallin kanssa.
- Ominaisuusmääritykset
- Efecte-mallin attribuutti - mihin attribuuttiin Efecte-hakemistossa attribuutti on yhdistetty.
- HR-attribuutti - mikä tiedoston attribuutti yhdistetään Efecteen

9. Jos sinun täytyy muokata varsinaista skriptiä, se on ladattava asiakkaan isäntäkoneelta, muokattava ja ladattava uudelleen.
- Jos sinulla ei ole pääsyä isäntäkoneeseen, ota yhteyttä Efecte Service Desk saadaksesi apua.
10. Tallenna muutokset
11. Ennen HR-liittimen ajoitetun tehtävän suorittamista
- Tarkista, että kaikki työnkulkuihin ja datakorttien asetuksiin liittyvät määritykset ovat paikoillaan.
- Kun suoritat ensimmäisen kerran, varmista, että hakemistojen ja sovellusten provisiointi on poistettu käytöstä.
12. Suorita tehtävä manuaalisesti tai odota, kunnes ajoitettu suoritus on alkanut.
13. Vahvista, että tiedot on luettu oikeille datakorteille ja että oikeat määritteet ovat käytössä.
14. Vianmääritys
- Jos käytetään vikamallia, tarkista oikea datakortti
- Tarkista ajoitettujen tehtävien historia liitinten hallinnasta
- Tarkista Efecte Provisioning Engine lokit
Hyvä muistaa!
Muista tallentaa kaikki salasanat turvalliseen paikkaan.
Sopiiko HR-liitin käyttötarkoitukseeni?
Valitse HR-liitin, jos:
- HR-tiedosto on XML-, CSV- tai JSON-muodossa
- Asiakkaalla on SFTP-palvelin
- HR-tietoa saadaan menneisyydestä ja tulevaisuudesta
- Tietotyyppi on kustannuspaikka, organisaatio, titteli tai työjakso
- Tiedot sisältävät vähintään sukunimen, etunimen, työsuhteen alkamispäivämäärän, tittelin tunnuksen, esimiehen tunnuksen ja organisaatioyksikön tunnuksen.
- Data sisältää vähintään yhden näistä yksilöllisistä arvoista: Sosiaaliturvatunnus / kansallinen henkilötunnus / Työntekijänumero
Tuonnin mukauttaminen
How to create and modify custom Python scripts
General info
Generic Python Script connector comes with couple out-of-the box Python scripts. You should not modify those. Instead, if you need to make modifications to those, copy-paste those to new name and then do your modifications to newly named python script file. And as last step, modify your connector to use that script.
Work order:
- Create your custom scheduled or task-based script
- Take it into use to connector from Connectors UI
Scheduled scripts
How to take your custom python script into use for scheduled tasks, guidance for 1 host and 1 worker environment:
Note! Do not change "default" .py files which came with environment installation.
Copy your customly named (in this example mypythonscript.py) python script to these folders from HOST (remember to use correct tenant_name in path):
cp mypythonscript.py /var/lib/efecteone/tenant_files/{tenant_name}/epe-master/files/custom-provisioning-scripts/only_scheduled
cp mypythonscript.py /var/lib/efecteone/tenant_files/{tenant_name}/epe-worker-1/files/custom-provisioning-scripts
cp mypythonscript.py /var/lib/efecteone/tenant_files/{tenant_name}/epe-master/files/custom-provisioning-scripts
Change your custom python script file permission to 755 on all those above locations where you copied your script(in this example mypythonscript.py) (remember to use correct tenant_name in path):
chmod 755 /var/lib/efecteone/tenant_files/{tenant_name}/epe-master/files/custom-provisioning-scripts/only_scheduled/mypythonscript.py
chmod 755 /var/lib/efecteone/tenant_files/{tenant_name}/epe-worker-1/files/custom-provisioning-scripts/mypythonscript.py
chmod 755 /var/lib/efecteone/tenant_files/{tenant_name}/epe-master/files/custom-provisioning-scripts/mypythonscript.py
If you have more hosts, repeat on every host.
If you have more workers, repeat to every worker(check that worker folder name is correct).
Event-based scripts
How to take your custom python script into use for event-based tasks, guidance for 1 host environment:
Note! Do not change "default" .py files which came with environment installation.
Copy your customly named (in this example mypythonscript.py) python script to these folders from HOST (remember to use correct tenant_name in path):
cp mypythonscript.py /var/lib/efecteone/tenant_files/{tenant_name}/epe-master/files/custom-provisioning-scripts/only_event
cp mypythonscript.py /var/lib/efecteone/tenant_files/{tenant_name}/epe-master/files/custom-provisioning-scripts
Change your custom python script file permission to 755 on all those above locations where you copied your script(in this example mypythonscript.py) (remember to use correct tenant_name in path):
chmod 755 /var/lib/efecteone/tenant_files/{tenant_name}/epe-master/files/custom-provisioning-scripts/only_event/mypythonscript.py
chmod 755 /var/lib/efecteone/tenant_files/{tenant_name}/epe-master/files/custom-provisioning-scripts/mypythonscript.py
If you have more hosts, repeat on every host.
Example/base for custom Event-based python script
This script reads attribute values from Connector and from Orchestration node. And prints values to logs. You can use this as a starting point for your own custom python script for Event-based tasks.
#!/usr/bin/python3
import json
import sys
import logging
def main():
# Configure logging, change log file name
logging.basicConfig(filename='python_event_task_abc.log', level=logging.INFO, format='%(asctime)s - %(message)s')
# Read inputs from stdin
lines = sys.stdin.read().splitlines()
if len(lines) != 2:
print("Error: Expected exactly two lines of input.")
raise Exception("Expected exactly two lines of input.")
# Parse the first line, this contains connector variables
try:
connector_parameters = json.loads(lines[0])
host = connector_parameters.get('host', None)
password = connector_parameters.get('password', None)
logging.info(f"Connector parameters, Host={host}")
# read custom connector parameters here
except json.JSONDecodeError:
raise Exception("Connector parameters is not a valid JSON string.")
# Parse the second line, this contains mappings data from template datacard
try:
task_mappings = json.loads(lines[1])
logging.info(f"Task mappings JSON: {task_mappings}")
#read task mappings data here
# Implement your logic here
except json.JSONDecodeError as e:
raise Exception("Task mappings is not a valid JSON string.") from e
# Exceptions raised are controlling workflow orchestration node flow, on exception it goes to Exception path, otherwise it goes to Completed path. Exception raised can be seen on Provisioning exception attribute value.
except Exception as e:
raise Exception("An unexpected error occurred") from e
if __name__ == "__main__":
main()
Take customly named script into use to connector
How to take your customly named Python script into use, by selecting it from Connectors UI. Select your script from connectors Provisioning script -dropdown:

Implementation and work estimations
Only Matrix42 has access to host, which is needed for these custom scripts to be installed.
These expansion possibilities always need Matrix42 consultants review, before implementation and work estimations can be agreed.

