Łącznik HR (import)
Złącze HR
Jest częścią natywnych konektorów Efecte Connect i wykorzystuje gotowy skrypt z niestandardowego konektora skryptowego Efecte Provisioning Engine . Dzięki temu natywnemu konektorowi HR klienci mogą importować dane osobowe i organizacyjne ze swojego rozwiązania HR. Konektor został zaprojektowany dla rozwiązania IGA , ale można go zmodyfikować, aby można go było używać we wszystkich rozwiązaniach Efecte. Konektor obsługuje formaty XML, CSV i JSON oraz zawiera funkcje walidacji danych i porównania z poprzednim plikiem.
W przypadku korzystania z łącznika HR obowiązki klienta są następujące:
- Wygeneruj plik(i) zgodnie z instrukcjami opisanymi w rozdziale „Generowanie pliku z rozwiązania HR”
- Zaplanuj generowanie plików zgodnie z ustalonym harmonogramem dostawy
- Pro serwer SFTP (i dostępy), na który dostarczane są pliki i z którego łącznik HR może pobierać pliki

Jak działa łącznik HR?
Ogólny przegląd
HR-connector wykorzystuje Efecte Provisioning Engine (niestandardowy łącznik skryptów) do odczytu danych z pliku. Łącznik został zaprojektowany do wykorzystania w rozwiązaniach IGA w zarządzaniu cyklem życia użytkownika. Użycie go do innych celów wymaga wyeksportowania skryptu z komputera hosta i zmodyfikowania go zgodnie z wymaganiami klienta. Należy pamiętać, że możliwe jest również utworzenie nowego skryptu od podstaw i użycie niestandardowego łącznika skryptów do jego walidacji i zaimportowania.
Łącznik HR obsługuje jeden lub kilka okresów pracy, pod warunkiem, że okresy pracy są generowane zgodnie z opisem w rozdziale „Generowanie pliku z rozwiązania HR”.
Podstawowe zasady łącznika HR,
1. Łącznik używa dodatkowych argumentów zdefiniowanych w zadaniu dostarczania opartym na harmonogramie w celu znalezienia pliku ze ścieżki (jeśli brakuje dodatkowego argumentu, proces zostaje zatrzymany)
2. Pliki są konwertowane do formatu JSON (słownik) i przechowywane jako JSON
3. Każdy plik można uruchomić w całości lub w części
4. Częściowe uruchomienie zawsze porównuje dane z plikiem archiwalnym (jeśli plik archiwalny jest nieobecny, proces zostaje zatrzymany)
5. W pliku w formacie JSON wszystkie mapowane atrybuty są polami obowiązkowymi, a zadanie zatrzymuje import, jeśli w którymkolwiek z importowanych obiektów brakuje atrybutów obowiązkowych. Format CSV działa inaczej – wystarczy, że wszystkie mapowane atrybuty zostaną znalezione w wierszu nagłówka jako kolumny.
6. Po wykonaniu importu łącznik zaimportuje zadanie administracyjne IGA do rozwiązania IGA w tym błędy i pliki JSON zawierające zarchiwizowane i zaimportowane wiersze.
Dobrze pamiętać!
Przeglądanie (po zapisaniu zaplanowanego zadania dla łącznika HR) dodatkowych argumentów wymaga zapisania hasła w bezpiecznym miejscu w celu wprowadzenia ewentualnych zmian w argumentach.
Pliki łączników,
| Plik (w kontenerze EPE-worker) | Opis |
|
/tmp/skrypty-custom-provisioning/3_log.txt |
Zawiera logi, liczba w nazwie pliku to taskid. |
|
/tmp/custom-provisioning-scripts/3_output.json |
Zawiera wiersze, które przeszły walidację i powinny zostać zaimportowane do rozwiązania IGA . Liczba w nazwie pliku to taskid. |
| /tmp/custom-provisioning-scripts/data/archive/(data_type)_archive.json | Przechowuje wszystkie wiersze z pliku, które zostały uruchomione, zarówno prawidłowe, jak i nieprawidłowe. Plik jest nadpisywany przy każdym uruchomieniu. |
| /tmp/custom-provisioning-scripts/data/archive/error_(data_type)_archive.json | Przechowuje wiersze, które nie przeszły walidacji podczas przebiegu. Wiersze te nie są importowane do rozwiązania IGA . Plik jest nadpisywany przy każdym przebiegu. |
| /tmp/custom-provisioning-scripts/only_scheduled/ Złącze IGA | Skrypt łącznika W tym folderze może znajdować się wiele skryptów. W interfejsie użytkownika zadań należy wybrać, który skrypt ma zostać uruchomiony przez dane zadanie. |
|
/tmp/skrypty-custom-provisioning/pliki-różne/translation.json |
1. Służy do tłumaczenia raportów na dany język. 2. Nowe języki można dodać, dodając „język”, np. „de” lub „en”, pod każdym przypadkiem z kluczem „tekst”. Każdy przypadek raportu musi mieć nowy język, w przeciwnym razie łącznik będzie generował błąd. 3. Aby użyć konkretnego języka, potrzebne są dodatkowe argumenty z kluczem „language” i wartością z pliku translation.json |
Wygeneruj plik z rozwiązania HR
Łącznik HR oczekuje, że plik zostanie wygenerowany przez rozwiązanie HR zgodnie z poniższą logiką, a następnie zapisany na serwerze SFTP klienta, skąd łącznik może pobrać plik(i). Należy pamiętać, że kodowanie musi być UTF-8.
Jeśli używasz formatu pliku csv, domyślnym separatorem pól używanym przez skrypt łącznika HR jest ; (średnik).
Proces generowania pliku różni się w zależności od rozwiązania HR, z którego korzysta klient. Przykładowo rozwiązanie IGA wymaga pobierania informacji zarówno z przeszłości, jak i z przyszłości.
W przypadku rozwiązań HR Workday zaleca się utworzenie niestandardowego raportu w Workday, który będzie zawierał potrzebne informacje, i użycie w tym raporcie formatu json do sformatowania danych.
Dobrze wiedzieć!
Czasami rozwiązania HR mogą generować nowe znaczniki czasu ostatniej aktualizacji w sytuacjach, gdy nie ma potrzeby dostarczania informacji do rozwiązania Efecte, na przykład gdy wypłaty wynagrodzeń są często realizowane przed dniem wypłaty. Te zbędne dane powodują wiele zadań provisioningowych w systemach docelowych, a rozwiązanie tych problemów zazwyczaj zajmuje czas administratorom/agentom klienta.
Zaleca się walidację danych przed rozpoczęciem pełnej automatyzacji na podstawie otrzymanych informacji (gwarancja jakości danych). Rozwiązanie IGA firmy Efecte umożliwia symulowanie zmian (więcej informacji znajdziesz tutaj ).
Przykłady, jakie informacje są wykorzystywane do generowania wymaganego pliku,
| Logika | Informacje dodatkowe |
| Wszyscy użytkownicy z aktywnymi okresami pracy | Użytkownicy są wybierani na podstawie dat okresu pracy |
| Wszyscy użytkownicy z aktywnym okresem pracy w przyszłości | Miesiąc do przodu |
| Wszyscy użytkownicy z aktywnym okresem pracy w przeszłości | Miesiąc temu jest to konieczne, jeśli zmiany w danych użytkownika zostały wprowadzone po zakończeniu stosunku pracy. |
| Użytkownicy są sortowani na podstawie unikalnego identyfikatora | Unikalnym identyfikatorem może być numer pracownika lub numer ubezpieczenia społecznego. |
| Znak czasu ostatniej aktualizacji | Użytkowników można wybierać na podstawie ostatniego znacznika czasu aktualizacji, ale należy sprawdzić u specjalisty ds. kadr klienta, który zmieni znacznik czasu. |
Zalecenia dotyczące struktury folderów serwera SFTP
Jeśli klient chce użyć łącznika HR do importowania wielu różnych typów danych, zaleca się posiadanie jednego łącznika HR na każdy typ danych.
Na przykład, jeśli klient chce zaimportować organizacje i użytkowników, powinien mieć 2 łączniki, takie jak „Łącznik HR Organizacje” i „Łącznik HR Użytkownicy”.
Mając te dwa pliki łączników na tym samym serwerze ftp, struktura folderów mogłaby wyglądać na przykład tak:
/sftp/iga/in/organisation
/sftp/iga/in/organization/archive
/sftp/iga/in/użytkownik
/sftp/iga/in/użytkownik/archiwum
Folder danych powinien zawierać tylko jeden plik na raz.
Dzięki takiej strukturze folderów możesz używać następujących parametrów skryptu dla organizacji łącznika HR:
“sftp_remote_path_data”:"/sftp/iga/in/organization",
“sftp_remote_path_archive”:"/sftp/iga/in/organization/archive",
“file_path”:"./organization/*.csv"
Podobnie różne parametry skryptu dla użytkowników łącznika HR.
Parametry, walidacja i wyjątki
Parametry
Służą do definiowania ustawień łącznika HR, które są sprawdzane po uruchomieniu skryptu.
Pamiętaj o zapisaniu hasła w bezpiecznym miejscu, na wypadek gdybyś po zapisaniu zaplanowanego zadania musiał sprawdzić parametry.
Łącznik HR wykorzystuje następujące parametry:
| Parametr | Opis | Obowiązkowe / opcjonalne |
| ścieżka_pliku | Ścieżka i wzorzec pliku, gdzie znajduje się plik. | Obowiązkowy |
| typ_danych | Wartości: centrum kosztów, organizacja, stanowisko lub okres pracy. | Obowiązkowy |
| limit_aktualizacji | Ile aktualizacji jest dozwolonych w rozwiązaniu Efecte. | Obowiązkowy |
| typ_biegu | Typ uruchomienia określa, czy zostanie wykonane porównanie z poprzednim plikiem. Wartości: pełne obciążenie lub częściowe, domyślnie częściowe |
Obowiązkowy |
| nadpisanie_limitu_aktualizacji | Nadpisuje limit aktualizacji, jeśli liczba aktualizacji przekracza podany limit. Wartości to prawda lub fałsz, domyślnie ustawiona jest wartość fałsz. | Obowiązkowy |
| minimalna_liczba_wierszy | Jaka jest minimalna liczba wierszy, która powinna znajdować się w pliku. | Fakultatywny |
| użytkownik webapi | Użytkownik API sieci Web (użytkownik ESM) do tworzenia raportów. Wymaga uprawnień do tworzenia i aktualizacji zadań administracyjnych IGA . | Obowiązkowy |
| hasło_webapi | Hasło użytkownika API sieciowego. | Obowiązkowy |
| adres URL webapi | Adres URL do środowiska rozwiązań Efecte. | Obowiązkowy |
| kod_szablonu_raportu | Kod szablonu docelowego. | Obowiązkowy |
| kod_folderu_raportu | Kod folderu docelowego. | Obowiązkowy |
| odpluskwić | Włącza rejestrowanie debugowania. Wartości: prawda (true) lub fałsz (false), wartość domyślna: fałsz (false). Jeśli ustawisz debugowanie na true, otrzymasz bardziej szczegółowe komunikaty w dzienniku, ale zadanie będzie działać nieco wolniej. Dzienniki można znaleźć w folderze kontenera epe-worker /custom-provisioning-scripts. |
Fakultatywny |
Walidacja
Walidacja oznacza, że łącznik HR weryfikuje, czy wszystkie obowiązkowe informacje dotyczące użytkowników zostały otrzymane z rozwiązania HR, a w przypadku ich braku łącznik HR tworzy domyślne zadanie administratora IGA .
Klient może zdefiniować więcej atrybutów do odczytu, spoza listy poniżej, ale wymaga to modyfikacji skryptu łączników HR (więcej informacji można znaleźć w rozdziale o możliwościach rozszerzenia).
| Atrybut | Opis | Obowiązkowe / opcjonalne |
| Nazwisko | Nazwisko użytkownika, wymagane na przykład przy generowaniu adresu e-mail dla użytkownika. | Obowiązkowy |
| Imię | Imię użytkownika, wymagane na przykład przy generowaniu adresu e-mail dla użytkownika. | Obowiązkowy |
| Numer ubezpieczenia społecznego / dowód osobisty | Wymagane, jeśli wybrano jako unikalny identyfikator użytkownika (lub na przykład jeśli dostarczane jest także uwierzytelnianie identyfikatorem bankowym). | Obowiązkowe / opcjonalne |
| Numer pracownika (ID pracownika) | Wymagane, jeśli wybrano jako unikalny identyfikator użytkownika. | Obowiązkowe / opcjonalne |
| Data rozpoczęcia zatrudnienia | Kiedy rozpoczął się lub ma się rozpocząć okres pracy użytkownika. | Obowiązkowy |
| Identyfikator tytułu | Unikalny identyfikator tytułu dla tytułu użytkownika (powiązany z nazwą tytułu) | Obowiązkowy |
| Identyfikator menedżera | Unikalny identyfikator dla menedżera użytkowników, zwykle identyfikator pracownika menedżera | Obowiązkowy |
| Identyfikator jednostki organizacyjnej | Unikalny identyfikator jednostki organizacyjnej (powiązany z nazwą jednostki organizacyjnej) | Obowiązkowy |
| Imię mówione | Można go używać na przykład w adresach e-mail, powszechnie używanych w Skandynawii, gdzie użytkownik może wybrać jedno ze swoich oficjalnych imion i używać go jako nazwy, pod którą będzie się zwracał. | Fakultatywny |
| Drugie imię | Jest powszechnie używany do identyfikacji użytkowników o tym samym imieniu i nazwisku. Jeśli występuje imię i nazwisko, w adresie e-mail używane są drugie litery imienia. | Fakultatywny |
| Data zakończenia zatrudnienia | Kiedy kończy się okres pracy użytkownika, informacja jest wykorzystywana do rozpoczęcia procesów poza pokładem | Fakultatywny |
| Rodzaj zatrudnienia | Stałe, tymczasowe, godzinowe, zewnętrzne | Fakultatywny |
| Czy jest menedżerem użytkowników? | Tytuł użytkownika nie zawsze musi wskazywać, czy użytkownik jest menedżerem. W niektórych rozwiązaniach HR informacja ta jest dostępna osobno w osobnym atrybucie. | Fakultatywny |
| Tytuł | Nazwa dla identyfikatora tytułu użytkownika | Fakultatywny |
| Imię menedżera | Nazwa dla identyfikatora menedżera użytkowników | Fakultatywny |
| Typ użytkownika | Wewnętrzny, zewnętrzny | Fakultatywny |
| Centrum kosztów | Nazwa centrum kosztów użytkownika | Fakultatywny |
| Nazwa jednostki organizacyjnej | Zaleca się odczytanie informacji z rozwiązania HR, szczególnie w przypadkach, gdy klient chce uaktualnić informacje o jednostkach organizacyjnych w katalogach lub aplikacjach i/lub gdy wykorzystywane są zautomatyzowane reguły IGA . | Fakultatywny |
Wyjątki
Klient może zdefiniować, w którym szablonie, folderze i atrybucie łącznik HR generuje następujące wyjątki,
| Wyjątek | Opis | Działania administratora IGA |
| Plik nie został odebrany lub jest pusty | W przypadku gdy plik nie istnieje na serwerze SFTP klienta lub jest pusty, generowane jest zadanie administracyjne IGA umożliwiające bardziej szczegółowe rozwiązywanie problemów. | Administrator IGA weryfikuje przyczynę, dla której plik nie został wygenerowany z systemu HR lub jest pusty. Plik należy ponownie wygenerować, a zaplanowane zadanie łącznika HR zostanie uruchomione ponownie. |
| Użytkownikowi brakuje unikalnego identyfikatora | Importowani są użytkownicy o unikalnych identyfikatorach, a także tworzone jest zadanie administratora IGA umożliwiające ręczny przegląd tych użytkowników, którzy nie mieli dostępnych informacji. |
Należy wprowadzić unikalny identyfikator użytkownika do rozwiązania HR, następnie plik zostanie wygenerowany ponownie, a zaplanowane zadanie zostanie uruchomione ręcznie. |
| Zaplanowanemu zadaniu brakuje dodatkowych argumentów | Obowiązkowe dodatkowe argumenty to: ścieżka_pliku typ_danych limit_aktualizacji użytkownik webapi hasło_webapi adres URL webapi kod_szablonu_raportu |
Do zadania dostarczania opartego na harmonogramie należy dodać dodatkowe argumenty i ponownie uruchomić zadanie. |
| Brak pliku archiwum | Aby możliwe było częściowe wykonanie, konieczne jest znalezienie pliku archiwum | Zadanie administratora IGA mające na celu rozwiązanie problemu z brakującym plikiem. Gdy plik zostanie znaleziony, należy ponownie uruchomić zaplanowane zadanie. |
| Brak obowiązkowego pola (obiektu) lub wartości pola | Wiersz jest zablokowany, a import sfinalizowany | Administrator IGA może sprawdzić w raporcie łącznika (zadanie administratora IGA ), czy jakiekolwiek wiersze zostały zablokowane. Należy dodać informacje do systemu źródłowego, a następnie ponownie wygenerować plik i uruchomić go ponownie. |
| Przekroczono limit aktualizacji (update_limit) | Import został przerwany (nie został uruchomiony). | Zadanie administratora IGA jest tworzone w celu rozwiązania problemu i ponownego uruchomienia zaplanowanego zadania. |
| Minimalna liczba wierszy na koncie nie została przekroczona | Import został przerwany (nie został uruchomiony). | Zadanie administratora IGA jest tworzone w celu rozwiązania problemu i ponownego uruchomienia zaplanowanego zadania. |
| Wiele plików spełniających kryteria nazewnictwa na serwerze SFTP | Import został przerwany (nie został uruchomiony). | Należy usunąć dodatkowe pliki i ponownie uruchomić zaplanowane zadanie łącznika HR. |
Instrukcje konfiguracji
Instrukcje te uid jak korzystać ze wstępnie skonfigurowanego łącznika HR lub jak utworzyć go od podstaw. Należy pamiętać, że modyfikowanie skryptu wymaga umiejętności pisania skryptów w języku Python.
Wymagania wstępne
Przed uruchomieniem zaplanowanego zadania dla łącznika HR upewnij się, że wykonano następujące zadania:
- Skrypt IGA Connector.py można znaleźć w środowiskach testowych i produkcyjnych klientów
- W przypadku braku prosimy o kontakt z Service Desk Efecte
- Łącznik HR jest skonfigurowany w środowisku testowym rozwiązań Efecte dla klienta
- Łącznik HR został przetestowany w środowisku testowym rozwiązań Efecte dla klienta
- Utwórz potrzebne dane testowe, przetestuj użytkowników i przypadki testowe
- Jakość danych została potwierdzona przez specjalistów ds. HR klientów i przyszłych administratorów IGA
- Plik został poprawnie wygenerowany, zaplanowany i zapisany na serwerze SFTP klienta
- W przypadku rozwiązania IGA wdroż instrukcje konfiguracji dla przypadków użycia zarządzania cyklem życia użytkownika
- Karta(y) danych z informacjami o okresie pracy IGA są dostępne
- Karta(y) danych konta IGA są na miejscu
- Uzgodniono fazę symulacji, a administrator IGA weryfikuje otrzymane dane w okresie xx przed ich udostępnieniem (gdy jakość danych zostanie zapewniona, można włączyć pełną automatyzację, zmieniając ustawienia na karcie(ach) danych informacji o okresie pracy IGA ).
Ogólne uid dotyczące zaplanowanych zadań
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.
Konfigurowanie łącznika HR i zaplanowanego zadania
Aby uzyskać dostęp do zarządzania złączami, użytkownik musi mieć uprawnienia do konfiguracji platformy Efecte.
1. Otwórz obszar administracyjny Efecte (symbol koła zębatego).
2. Otwórz widok złączy.
3. Wybierz nowe złącze

2. Wybierz typ źródła danych: Niestandardowe zaplecze

3. Uzupełnij informacje
- Wpisz unikalną nazwę łącznika, pamiętaj, że nazwy tej nie można później zmienić.
- Wybierz skrypt IGA Connector.py z pola skryptu provisioningowego
- Hasło szyfrujące parametry jest potrzebne do ukrycia/ujawnienia parametrów po zapisaniu łącznika
- Użytkownik API sieci Web jest potrzebny, gdy łącznik HR zapisuje dane klientom Rozwiązanie Efecte
- Hasło API sieci Web jest potrzebne, gdy łącznik HR zapisuje dane klientom Rozwiązanie Efecte

4. Ujawnij i zmodyfikuj parametry zgodnie z definicjami klienta
- Zapisz hasło szyfrowania w bezpiecznym miejscu. Będziesz go potrzebować później, jeśli zajdzie potrzeba zmiany parametrów.
Przykład dotyczący parametrów:
{"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. Utwórz nowe zaplanowane zadanie dla łącznika HR

6. Wypełnij szczegóły zadania
- Unikalna nazwa zadania dla łącznika. Należy pamiętać, że nazwy tej nie można później zmienić.
- Użycie zadań jest ustawione na zaplanowane
- Typ mapowania jest ustawiony na ogólny (jeden szablon)

- Nazwa atrybutu dla uid Objectg. Zapisano nazwę kolumny/atrybutu danych wejściowych, która zawiera unikalny identyfikator wiersza. Na przykład: objectGUID

7. Uzupełnij informacje o awarii
Opcjonalne ustawienia obsługi awarii. Jeśli zaplanowane zadanie zakończy się niepowodzeniem, może utworzyć kartę danych w systemie Efecte ESM, która wyświetla błąd. Jeśli zdefiniowano ustawienia awarii, administrator nie musi ręcznie sprawdzać statusu zaplanowanych zadań.
- Szablon awarii — wybierz szablon karty danych, który zostanie utworzony w razie wystąpienia błędów podczas udostępniania (połączenie ze źródłami danych, przekroczenie limitu czasu itp.).
- Folder awarii – wybierz folder, w którym będzie przechowywana karta danych awarii.
- Atrybut awarii — wybierz atrybut, w którym w szablonie awarii mają być przechowywane informacje o błędzie.

8. Uzupełnij mapowania dla szablonu ogólnego
Dane ogólne są odczytywane według potrzeb dowolnego szablonu, a obowiązkowe jest ustawienie folderu docelowego, identyfikatora źródła danych i unikalnych wartości, które służą do identyfikacji danych pomiędzy działem HR klienta a rozwiązaniem Efecte.
- Szablon docelowy — wybierz szablon, aby zdefiniować mapowania atrybutów
- Folder docelowy – wybierz folder z listy folderów. Lista jest zawężana w celu dopasowania do wybranego szablonu.
- Mapowania atrybutów
- Atrybut szablonu Efecte - do którego atrybutu w katalogu Efecte jest mapowany atrybut.
- Atrybut HR – który atrybut z pliku jest mapowany na Efecte

9. W przypadku konieczności modyfikacji skryptu należy go pobrać z komputera klienta, zmodyfikować i ponownie przesłać.
- Jeśli nie masz dostępu do komputera-hosta, skontaktuj się z Service Desk Efecte, aby uzyskać pomoc.
10. Zapisz zmiany
11. Przed uruchomieniem zaplanowanego zadania dla łącznika HR,
- Sprawdź, czy cała konfiguracja dotycząca przepływów pracy i ustawień na kartach danych jest na swoim miejscu.
- Podczas pierwszego uruchomienia upewnij się, że obsługa katalogów i aplikacji jest wyłączona
12. Uruchom zadanie ręcznie lub poczekaj, aż rozpocznie się zaplanowane uruchamianie.
13. Sprawdź, czy dane zostały odczytane na właściwych kartach danych i czy zastosowano właściwe atrybuty.
14. Rozwiązywanie problemów
- W przypadku użycia szablonu awarii należy sprawdzić poprawność karty danych
- Sprawdź historię zaplanowanych zadań z poziomu zarządzania łącznikiem
- Sprawdź dzienniki modułu Efecte Provisioning Engine
Dobrze pamiętać!
Pamiętaj, aby zapisać wszystkie hasła w bezpiecznym miejscu.
Czy łącznik HR jest odpowiedni do mojego zastosowania?
Wybierz łącznik HR jeśli:
- Plik HR jest w formacie XML, CSV lub JSON
- Klient ma serwer SFTP
- Informacje HR są otrzymywane z przeszłości i przyszłości
- Typ danych to centrum kosztów, organizacja, stanowisko lub okres pracy
- Dane zawierają co najmniej nazwisko, imię, datę rozpoczęcia zatrudnienia, identyfikator stanowiska, identyfikator kierownika, identyfikator jednostki organizacyjnej
- Dane zawierają co najmniej jedną z następujących unikalnych wartości: numer ubezpieczenia społecznego / dowód osobisty / numer pracownika
Jak dostosować import
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.

