Generisk Python Script
Generisk Python Script
Generic Python Script (tidigare känt som Custom script och Custom backend)-kopplingar är en del av native kopplingar och kan användas för att läsa data från alla typer av applikationer och exportera dem till kundernas Matrix42 Core , Pro and IGA lösningar. Funktionaliteten implementeras av ett Python-skript (kunden tillhandahåller skriptet) som körs på kundens värddator. Skriptet ansvarar för att läsa information från målapplikationen och måste sedan generera en JSON-fil med den information som läses.
När en anpassad skriptkoppling tas i bruk krävs det att
- Ett Python-skript har skapats för kopplingen och det lagras på kundens Efecte-lösningsvärddator.
- Anslutningsdetaljer är uppfyllda och en schemalagd uppgift är konfigurerad för att importera data till kundens lösning.

Allmänna funktioner
Kontakter - allmänna funktioner
Kontakter - allmänna funktioner
I den här artikeln beskrivs allmänna funktioner för att hantera nativa kopplingar i lösningen. Alla nativa kopplingar hanteras från samma gränssnitt för kopplingshantering.
Observera att det finns separata beskrivningar för varje kontakt, där kontaktspecifika funktioner och konfigurationsinstruktioner beskrivs i detalj.
För att kunna komma åt hantering av anslutningar måste användaren ha administratörsbehörighet till kundens plattformskonfiguration. När åtkomst beviljas korrekt visas fliken för anslutningar och användaren kan hantera anslutningar.

Vänstermeny
Hantering av kopplingar är indelat i fyra flikar:

- Översikt – för att skapa och uppdatera Native Connectors. Administratörsanvändaren kan se sin status, typ och hur många schemalagda uppgifter eller händelseuppgifter som är kopplade till dem.
- Autentisering – för att skapa och uppdatera autentiseringsuppgifter. Pro tillhandahållandeuppgift för autentisering behövs för att Secure Access ska kunna definiera vilka kunders slutanvändare som har åtkomst till Matrix42 Core , Pro and IGA inloggningssidorna.
- Loggar – för att ladda ner Native Connector- och Secure Access loggar från användargränssnittet.
- Inställningar – allmänna inställningar för Native Connectors och Secure Access , inklusive miljötyp för loggning och övervakning.
Fliken Översikt över kontakter
Från översiktssidan kan användaren enkelt och snabbt se status för alla kopplingar.

Övre fältet:
- Status för inbyggda kopplingar (EPE)
- Grön text indikerar att Native Connectors är online. Alla nödvändiga tjänster är igång.
- Röd text indikerar att det är ett problem med Native Connectors, att alla tjänster inte körs.
- Status för Secure Access ( ESA )
- Grön text indikerar att Secure Access är online. Alla nödvändiga tjänster är igång.
- Röd text indikerar att det är ett problem med Secure Access , att alla tjänster inte körs.
- Versionsnumret för Native Connectors visas i det övre högra hörnet
Övre fältet för listvy:

- Ny koppling – öppnar ett nytt fönster för att lägga till och konfigurera en ny koppling
- Ta bort koppling(ar) – arbetsflödesreferenser beräknas och ett popup-fönster visas för att bekräfta borttagningen (observera att beräkningen av referenser kan ta flera sekunder)
- Exportera – Administratören kan exportera en eller flera kopplingar (och uppgifter) från miljön. Används vanligtvis för att exportera kopplingar och kopplingar (och uppgifter) från test till produkt. Hemlig information om inbyggda kopplingar är lösenordsskyddad.
- Importera – Administratören kan importera en eller flera kopplingar (och uppgifter) till miljön. Används vanligtvis för att importera kopplingar (och uppgifter) från test till prod.
- Administratören kan inte importera från det gamla EPE-gränssnittet (äldre än 2024.1) till det nya. Käll- och målmiljöer måste ha samma version.
- Importen misslyckas om konfigurationen (mallar, attribut) inte är densamma - till exempel när något attribut saknas.
- Om du importerar något med samma kopplingsdetaljer kommer det att slås samman under befintlig koppling
- Uppdatera – Administratören kan uppdatera kopplingsvyn genom att klicka på knappen .
Listvy för översikt,

- Välj kontakt(er) - Välj en kontakt genom att klicka på kryssrutan framför kontaktraden eller genom att klicka på kryssrutan i rubrikraden markeras alla kontakter.
- Id - Automatiskt genererat unikt ID för kopplingen. Kan inte redigeras eller ändras.
- Status - indikerar status för schemalagd uppgift
-
Grön bockmarkering - Uppgiften utförs utan fel
-
Röda korset - Uppgiften är utförd, men det har uppstått fel
-
Grå klocka - Uppgiften är inte utförd än, väntar på schemaläggning -
Orange - en av uppgifterna har ett problem
- Inget värde - Schemalagd uppgift saknas
-
- Namn - Anslutningsnamn tillagt i anslutningsinställningar. Unikt namn på anslutningskonfigurationen för en datakälla.
- Typ - indikerar mål-/källsystem
- Schemalagd – informerar hur många schemalagda uppgifter som är konfigurerade
- Händelse - informerar hur många händelseuppgifter som är konfigurerade
- Hantera
- Pennikon – öppnar kopplingsinställningar (dubbelklicka på kopplingsraden, även inställningarna öppnas)
- Pappersikon – kopierar kopplingen
- Stopp - arbetsflödesreferenser beräknas och ett popup-fönster visas för att bekräfta borttagningen.
- Sök – Användaren kan söka efter kopplingar genom att ange söktermen i motsvarande fält. Fälten Id, Status, Namn, Typ, Schemalagd och Händelse kan sökas.
Information om schemalagda uppgifter (klicka på pilen framför kopplingen)
När du klickar på pilen i början av kopplingsraden visas alla relaterade schemalagda uppgifter och händelseuppgifter.

Övre fältet för schemalagda uppgifter
- Ny uppgift – öppnar konfigurationssidan för ny uppgift
- Ta bort uppgift(er) – tar bort den/de valda uppgiften/uppgiftarna från systemet och de kan inte längre återställas.
- Uppdatera - uppdatera vyn över schemalagda uppgifter
- Sök – användaren kan söka efter uppgiften genom att ange söktermen i motsvarande fält för Id, namn, aktiverad, extraktions-/laddningsstatus.
Listvy för schemalagda uppgifter

- Välj uppgift(er) – Markera den uppgift som ska tas bort från listvyn genom att markera.
- Id - Unikt ID för uppgiften. Genereras automatiskt och kan inte ändras.
- Namn - Uppgiftsnamn som läggs till i uppgiftsinställningarna, unikt namn för uppgiften.
- Aktiverad - Visar om uppgiften är schemalagd eller inte
-
Grön bockmarkering – Uppgiften är schemalagd
-
Röda korset - Uppgiften är inte schemalagd
-
- Extraheringsstatus – Visar status för dataextrahering från målkatalogen/systemet
-
Grön bockmarkering - data har extraherats
-
Röda korset - data extraheras med fel eller extraheringen misslyckades
-
Klocka - Uppgiften väntar på körning
-
- Laddningsstatus - Visar status för dataexport från json-fil till kundens lösning
-
Grön bockmarkering - data har importerats till kundens lösning
-
Rött kors - data importeras med fel eller importen misslyckades
-
- Hantera
- Pennikon – öppnar aktivitetsinställningar i ett eget fönster (dubbelklick på aktivitetsraden öppnar även aktivitetsinställningar)
- Pappersikon - kopierar uppgiften
- Klockikon – öppnar vyn för uppgiftshistorik
- Stopp - ta bort uppgift, popup-fönster öppnas för att bekräfta borttagningen
Vy över schemalagd uppgiftshistorik
Genom att klicka på klockikonen i raden för schemalagda uppgifter visas historiken för schemaläggningen.

Övre fältet för visningshistorik
- Uppdatera – uppdaterar statusen för schemalagda uppgifter. Detta påverkar inte uppgiften, det uppdaterar bara användargränssnittet för att visa den senaste informationen om den körda uppgiften.
Listvy för historik över schemalagda uppgifter
- Radens färg anger status
-
Grön - uppgiften har utförts
-
Röd - fel uppstod under körning
-
- Körnings-ID - unikt ID för den schemalagda uppgiftsraden
- Planerad extraktionstid - när nästa extraktion från katalogen/applikationen är schemalagd att ske
- Utdragets slutförande tid - när utdraget slutfördes
- Extraheringsstatus - status för att hämta data från katalogen/applikationen
- Starttid för laddning – när nästa laddning till kundens lösning är schemalagd
- Lastningstid - när lastningen var klar
- Laddningsstatus - status för laddning av information till kundens lösning
Listvy för status för schemalagd uppgift
- Faktisk starttid - tidsstämpel för faktisk start
- Användarfil - JSON-fil som innehåller användarinformation läst från katalogen/applikationen
- Gruppfil - JSON-fil som innehåller gruppinformation läst från katalogen/applikationen
- Generisk fil - JSON-fil som innehåller generisk information läst från katalogen/applikationen
- Extrahera information - detaljerad information om att läsa information från katalogen/applikationen
- Ladda information - detaljerad information om hur informationen laddas till kundernas Matrix42 Core , Pro and IGA -lösningar
Redigera fönster för schemalagd uppgift
Konfigurationen för schemalagd uppgift kan öppnas genom att klicka på pennikonen eller dubbelklicka på uppgiftsraden.
Vänstermeny och attribut varierar beroende på valda alternativ och därför kan mer detaljerade instruktioner för att redigera uppgifter hittas i kopplingens beskrivning, men det finns gemensamma funktioner för alla schemalagda uppgifter som beskrivs nedan.

Sparar uppgiften
Om obligatorisk information saknas i uppgiften, kommer muspekaren över spara-knappen att visa vilka attribut som fortfarande är tomma.
Övre fältet för att redigera schemalagd uppgift
- Kör uppgift manuellt – administratören kan köra uppgiften manuellt utanför den definierade schemaläggningen
- Stoppa uppgift – administratören kan stoppa en schemalagd uppgift som för närvarande körs. Uppgiften stoppas och statusen ändras till stoppad. Den väntar i detta tillstånd tills nästa tidpunkt inträffar.
- Rensa datacachen – Datacachen för nästa provisionering av användare och grupper kommer att rensas. Det betyder att nästa körning körs som förstagångskörning.
- Som standard rensar vi cachen varje dag klockan 00:00 UTC
- Om du vill rensa cachen vid en annan tidpunkt måste du ange ett annat värde i värdfilen 'custom.properties'.
- EPE-cachen rensas också när EPE startas om, hela miljön startas om och EPE-mappningar har ändrats.
Information om händelseuppgift
När du klickar på pilen i början av kopplingsraden visas alla relaterade schemalagda uppgifter och händelseuppgifter.

Översta fältet för händelseuppgifter
- Ny uppgift – öppnar konfigurationssidan för ny händelseuppgift
- Ta bort uppgift(er) - tar bort markerade uppgifter, ett popup-fönster visas för att bekräfta borttagningen.
- Uppdatera - uppdaterar vyn för händelseuppgifter
- Visa arbetsflödesreferenser – beräknar arbetsflödesrelationer och statusar för uppgifter. Detta är mycket användbart om du inte vet från vilka arbetsflöden händelsebaserade uppgifter används.
Listvy för händelseuppgifter
- Välj uppgift(er) – Markera den uppgift som ska tas bort från listvyn genom att markera.
- Id - Unikt ID för uppgiften. Genereras automatiskt och kan inte ändras.
- Namn - Uppgiftsnamn som läggs till i uppgiftsinställningarna, unikt namn för uppgiften.
- Arbetsflödesrelationer
- Frågetecknet visar ett popup-fönster med detaljerad information om referensen
- Arbetsflödesstatus
- Används inte - Inga relationer till arbetsflödet
- Används - Arbetsflöde(n) kopplade till uppgift, uppgiften kan inte tas bort
- Hantera
- Pennikon - öppnar aktivitetsinställningar i eget fönster
- Pappersikon - kopierar uppgiften
- Stoppikon – tar bort uppgiften, ett popup-fönster visas för att bekräfta borttagningen
Redigera fönster för händelseuppgift
Konfigurationen för händelseuppgiften kan öppnas genom att klicka på pennikonen eller dubbelklicka på uppgiftsraden.
Vänstermeny och attribut varierar beroende på valda alternativ och därför kan mer detaljerade instruktioner för redigering av uppgifter hittas i kopplingbeskrivningen, men det finns gemensamma funktioner för alla händelseuppgifter som beskrivs nedan.

Redigera händelseuppgiftsfönstret
- Uppgiftsanvändning, redigerbar? – detta visas när du redigerar en befintlig uppgift och ändrar uppgiftsanvändningstypen kommer att avbryta arbetsflöden
- Mappningstyp, redigerbar? - detta visas när du redigerar en befintlig uppgift och ändring av mappningstypen kommer att avbryta arbetsflöden.
Sparar uppgiften
Om obligatorisk information saknas i uppgiften, kommer muspekaren över spara-knappen att visa vilka attribut som fortfarande är tomma.
Fliken Autentisering
Autentisering för Matrix42 Core , Pro and IGA -lösningar konfigureras från fliken autentisering. Observera att endast vissa av kopplingarna (katalogkopplingar) stöder autentisering, så det är inte möjligt att skapa autentiseringsuppgifter för alla tillgängliga kopplingar.

Övre fältet för autentisering
- Ny koppling – öppnar ett nytt fönster för att konfigurera den nya kopplingen (observera att inte alla kopplingar stöder autentisering)
- Ta bort koppling(ar) – tar bort markerade uppgifter, ett popup-fönster visas för att bekräfta borttagningen.
- Exportera - användaren kan exportera en eller flera uppgifter från miljön. Används vanligtvis för att exportera uppgifter från test till prod. EPE-kontakter är lösenordsskyddade.
- Observera att Realm för autentiseringsuppgifter inte exporteras, du måste ställa in det manuellt efter importen.
- Importera - användaren kan importera en eller flera uppgifter till miljön. Används vanligtvis för att importera uppgifter från test till prod.
- Uppdatera - uppdaterar vyn för autentiseringsuppgifter
Listvy för autentiseringsöversikt
- Välj kontakt(er) - Välj en kontakt genom att klicka på kryssrutan framför kontaktraden eller genom att klicka på kryssrutan i rubrikraden markeras alla kontakter.
- Id - Automatiskt genererat unikt ID för kopplingen. Kan inte redigeras eller ändras.
- Namn - Anslutningsnamn tillagt i anslutningsinställningar. Unikt namn på anslutningskonfigurationen för en datakälla.
- Typ - indikerar mål-/källsystem
- Antal – anger hur många autentiseringsuppgifter som är konfigurerade
- Hantera
- Pennikon - öppnar inställningen för autentiseringsuppgift i ett eget fönster
- Pappersikon - kopierar uppgiften
- Stoppikon – tar bort vald uppgift
Information om autentiseringsuppgift
När du klickar på pilen i början av kopplingsraden visas alla relaterade schemalagda uppgifter och händelseuppgifter.

Översta fältet för autentiseringsöversikt
- Skapa ny uppgift – öppnar konfigurationssidan för ny autentiseringsuppgift
- Ta bort uppgift(er) - tar bort markerade uppgifter, ett popup-fönster visas för att bekräfta borttagningen.
- Uppdatera - uppdaterar vyn för autentiseringsuppgifter
Listvy för autentiseringsöversikt,
- Välj uppgift(er) – Markera den uppgift som ska tas bort från listvyn genom att markera.
- Id - Unikt ID för uppgiften. Genereras automatiskt och kan inte ändras.
- Namn - Uppgiftsnamn som läggs till i uppgiftsinställningarna, unikt namn för uppgiften.
- Hantera
- Pennikon – öppnar aktivitetsinställningar i ett eget fönster (dubbelklicka på aktivitetsraden, öppnar även inställningsfönstret)
- Pappersikon - kopierar uppgiften
- Stoppikon – tar bort uppgiften, ett popup-fönster visas för att bekräfta borttagningen
Fliken Loggar
Fliken Loggar är för att ladda ner loggar för Native Connector och Secure Access från användargränssnittet för detaljerad felsökning.

- epe-master- loggar - innehåller varnings-, felsöknings- och felnivåmeddelanden om Native Connectors och information om hur länge uppgiftsåtgärder har vidtagits.
- epe-worker-ad -loggar - innehåller extraheringsdata för Active Directory anslutningen (vad Native Connector laddar till kundernas Matrix42 Core , Pro and IGA lösningar). Om valet är tomt betyder det att katalogen inte används i den här miljön.
- epe-worker-azure -loggar – innehåller extraheringsdatastatus för Entra ID (vad Native Connector laddar till kundernas Matrix42 Core , Pro and IGA lösningar). Om valet är tomt betyder det att katalogen inte används i den här miljön.
- epe-worker-ldap- loggar - innehåller extraheringsdata för LDAP (vad Native Connector laddar till kundernas Matrix42 Core , Pro and IGA lösningar). Om valet är tomt betyder det att katalogen inte används i den här miljön.
- epe-launcher- loggar - innehåller information om EPE-uppskjutningar
- datapump-itsm l ogs - Innehåller information om dataexport till kunders Matrix42 Core , Pro and IGA lösningar.
- esa -loggar – Innehåller information om Secure Access åtkomstautentisering.
Inställningsfliken
Inställningsflikar används för att övervaka miljöer med kopplingar.

- Miljötyp - är obligatorisk att vara vald och information används till exempel för att definiera varningar kritiskt.
- Test – välj detta när din miljö används som testmiljö
- Pro d – välj detta när din miljö används som produktionsmiljö
- Demo – välj detta när din miljö används som demo- eller utbildningsmiljö
- Utvecklare – välj detta när din miljö används som utvecklingsmiljö
Vad övervakar vi?
- Fel i schemalagd provisionering (extrahering av data, export av data till ESM, föråldrade certifikat, felaktiga lösenord, felaktig sökbas/filter, felaktiga mappningar etc.)
- Fel i händelsebaserad provisionering (misslyckades med att skriva till AD / Azure , etc.)
- Händelsebaserad provisionering – vilka kopplingar används för att skriva data till program/kataloger.
- ESA fler än tio misslyckade inloggningsförsök till en användare under de senaste 3 dagarna
- Miljötyp - är obligatorisk att vara vald och information används till exempel för att definiera varningar kritiskt.
Datamigreringar
Klicka inte på ”Migrera attributmappningar” eller ”Migrera arbetsflöden” om du inte begär det av Matrix42 .
Skapa Python-skript
Här är ett exempel på ett Python-skript, men du kan också skapa ditt eget.
#!/usr/bin/python3
importera json
importera operativsystem
importera biblioteket för gemensamma_subrutiner_effekter
# system_info_efecte_library.printOsName()
# system_info_efecte_library.printReleaseVersion()
arguments_dictionary = common_subrutines_efecte_library.initialize_script()
#########################################
#
# lägg kundspecifika skript under detta
#
#
data_extraction_attributes_json = arguments_dictionary['data_extraction_attributes']
script_current_working_directory = arguments_dictionary['script_current_working_directory']
fel_filnamn_fullständig_sökväg = arguments_lexikon['fel_filnamn']
förväntat_utmatningsfilnamn_fullständig_sökväg = arguments_lexikon['förväntat_utmatningsfilnamn']
heartbeat_filename_full_path = arguments_dictionary['heartbeat_filename']
log_filename_full_path = arguments_dictionary['log_filename']
totala_attribut_att_extrahera = len(data_extraktion_attribut_json)
common_subroutines_efecte_library.log_line(log_filename_full_path, 'skriptet började bearbetas')
os.chdir(script_current_working_directory)
lista = []
attribut för_extraktion_av_ordbok = {}
för n inom intervallet (totala_attribut_att_extrahera):
attributnamn = common_subrutines_efecte_library.get_value_from_json(data_extraction_attributes_json[n],
'attributnamn')
multivalue = common_subroutines_efecte_library.get_value_from_json(data_extraction_attributes_json[n], 'multivalue')
dictionary_data_extraction_attributes[attributnamn] = str(multivalue)
common_subroutines_efecte_library.log_line(log_filename_full_path, 'skriptet skapar en json-fil med begärda fält')
för n inom intervallet (1, 11):
värdeordbok = {}
för en_nyckel i dictionary_data_extraction_attributes.keys():
values_dictionary[one_key] = 'detta är ett exempelvärde för row = ' + str(n) + ', key = ' + one_key
lista.append(värden_ordlista)
# print(json.dumps(lista, indent=4, sort_nycklar=Sant))
f = open(förväntad_utdata_filnamn_fullständig_sökväg, "w")
f.write(json.dumps(lista, indent=4, sort_nycklar=Sant))
f.close()
common_subroutines_efecte_library.log_line(log_filename_full_path, 'skript slutfört!')
# json_data = json.dumps(lista)
# print('json_data = ' + json_data)
# heartbeat-filen måste uppdateras minst en gång var 5:e minut
f = open(hjärtslag_filnamn_fullständig_sökväg, "w+")
f.write('hjärtslag uppdaterat: ' + common_subroutines_efecte_library.get_timestamp())
f.close()
Konfigurera anpassad backend-anslutning
För att få åtkomst till kopplingshantering måste användaren ha behörighet till Efecte Platform-konfigurationen.
1. Öppna administrationsområdet för Efecte (en kugghjulssymbol).
2. Öppna kopplingsvyn.
3. Välj ny kontakt

2. Välj datakälltyp som anpassad backend

3. Uppfylla information
- Fyll i ett unikt kopplingsnamn för kopplingen. Observera att namnet inte kan ändras i efterhand.
- Välj [script_filename].py-skriptet från fältet för provisioneringsskript.
- Lösenord för parameterkryptering behövs för att dölja/visa parametrar efter att anslutningen har sparats
- Web API användare behövs när connectorn skriver data till kunder Efecte-lösning
- Lösenord för webb API behövs när anslutningen skriver data till kunder Efecte-lösning

4. Spara kopplingen med hjälp av knappen Spara. Nu är kopplingen konfigurerad och du kan gå vidare till Konfigurera schemalagd uppgift.
Rekommendationer för mappstruktur på ftp-server
Om kunden vill använda en anpassad backend-anslutning för att importera många olika typer av data rekommenderas det att ha en anpassad backend-anslutning per datatyp.
Om kunden till exempel vill importera rättigheter och roller, bör de ha två kopplingar som "Rättigheter" och "Roller".
Och om de två connector-filerna finns på samma ftp-server, kan mappstrukturen till exempel vara:
/sftp/iga/in/rättigheter
/sftp/iga/in/rättigheter/arkiv
/sftp/iga/in/roller
/sftp/iga/in/roller/arkiv
En datamapp bör endast innehålla en fil åt gången.
Med den mappstrukturen kan du använda dessa skriptparametrar i din Entitlements-anslutning:
“sftp_remote_path_data”:"/sftp/iga/in/ rättigheter ",
“sftp_remote_path_archive”:"/sftp/iga/in/ entitles /archive",
“file_path”:"./ rättigheter /*.csv"
Och liknande olika skriptparametrar för Roles-anslutningen.
Allmän uid för schemalagda uppgifter
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.
Konfigurera schemalagd uppgift för att läsa data
Obs! Om ingen koppling skapas måste du först skapa en "ny koppling" och därefter kan du skapa nya uppgifter.
1. Öppna administrationsområdet för Efecte (en kugghjulssymbol).
2. Öppna kopplingsvyn.
3. Välj den anslutning som den schemalagda uppgiften är konfigurerad för.
4. Välj ny uppgift under rätt koppling

4. Definiera schemaläggning för uppgiften (om och hur schemalagda uppgifter ska köras regelbundet). Välj schemaläggningssekvens, vilket beror på hur mycket data som läses till kundens Efecte-lösning.

5. Fyll i uppgiftsuppgifter
- Unikt uppgiftsnamn för kopplingen, observera att namnet inte kan ändras i efterhand.
- Uppgiftsanvändning är inställd på schemalagd
- Mappningstypen är inställd på generisk (en mall)

6. Fyll i felinformation
Valfria inställningar för felhantering. Om en schemalagd uppgift misslyckas kan ett datakort skapas till Efecte ESM som visar felet. Om felinställningar har definierats behöver administratören inte manuellt kontrollera statusen för schemalagda uppgifter.
- Felmall – Välj en mall för datakort som skapas vid fel under etableringen (anslutning till datakällor, timeouts etc.)
- Felmapp – Välj mapp där feldatakortet lagras.
- Felattribut – Välj ett attribut där i felmallen felinformationen ska lagras.

- Attributnamn för uid . Skrev namnet på din indatakolumn/attribut, som innehåller en unik identifierare för raden. Till exempel: objectGUID

7. Fyll i mappningar för generisk mall
Generiska data läses till valfri mall som användaren önskar och det är obligatoriskt att ange målmapp, datakälla-ID och unika värden som används för att identifiera data mellan anpassad backend och Efecte-lösning.
- Målmall – Välj en mall för att definiera attributmappningar
- Målmapp – Välj en mapp från en lista med mappar. Listan begränsas för att matcha kompatibilitet med vald mall.
- Attributmappningar
- Efecte-mallattribut - till vilket attributet i Efecte-katalogen är mappat.
- filattribut - vilket attribut från filen mappas till Efecte

8. Om du behöver ändra själva skriptet måste det laddas ner från kundens värddator, modifieras och laddas upp igen.
- Om du inte har åtkomst till värddatorn, vänligen kontakta Efectes Service Desk för hjälp.
9. Spara dina ändringar
10. Innan du kör den schemalagda uppgiften för den anpassade backend-anslutningen,
- Kontrollera att all konfiguration relaterad till arbetsflöden och inställningar i datakort är på plats.
- När du kör för första gången, se till att provisionering är inaktiverat för kataloger och applikationer
- Om du använder standardimportfilen IGA Connector.py och csv-typen är fältavgränsaren som används som skript ; (semikolon).
11. Kör uppgiften manuellt eller vänta tills den schemalagda körningen har startats.
12. Kontrollera att data har lästs till korrekta datakort och att korrekta attribut finns på plats.
13. Felsökning
- Om felmall används, kontrollera korrekt datakort
- Kontrollera historiken för schemalagda uppgifter från kopplingshanteringen
- Kontrollera Efecte Provisioning Engine loggar
Konfigurera händelseuppgift för att skriva data
- Öppna konfigurationsvyn för Efecte-plattformen (en kugghjulssymbol).
- Öppna kopplingsvyn
- Välj koppling som ska använda händelseuppgiften
- Välj "ny uppgift" under rätt anslutning

4. Fyll i uppgiftsuppgifter
- Uppgiftsnamn - Ange ett namn för uppgiften, det kommer att visas i kopplingsvyn.
- Uppgiftsanvändningen indikerade att det är den uppgift som används för att läsa data eller skriva data. Kan ändras i efterhand, men det rekommenderas inte om händelseuppgiften används. Det kommer att störa arbetsflöden.
- Välj mappningstyp Generisk

5. Definiera generiska mappningar
- Målmall – Välj en mall för att definiera attributmappningar
- Målmapp – Välj en mapp från en lista med mappar. Listan begränsas för att matcha kompatibilitet med vald mall.
- Attributmappningar
- Efecte-mallattribut - till vilket attributet i Efecte-katalogen är mappat.
- Backend-attribut - vilket attribut från katalogen mappas till Efecte
- Lägg till nytt attribut - Det är möjligt att ange ytterligare attribut, som läses från backend, genom att välja knappen Nytt attribut

6. Spara provisioneringsuppgiften från knappen ”spara”
7. Nästa steg är att konfigurera arbetsflödet för att använda denna händelsebaserade uppgift. Från arbetsflödesmotorn i Efecte-plattformen är det möjligt att köra provisioneringsaktiviteter mot backend. Det betyder att vilken som helst av de tillgängliga orkestreringsnodernas aktiviteter kan köras när som helst i arbetsflödet.
Arbetsflödesreferenser visas på översiktssidan för kopplingar,

Arbetsflödesaktiviteter (orkestreringsnoder)
Kör provisioneringsuppgift
Denna aktivitet används när all information från katalogen omedelbart behövs tillbaka.

I illustrationen ovan kan administratörer välja rätt katalog "Mål". Kör provisioneringsuppgiftens orkestreringsnod och läs attribut från backend till Efecte.
Om det finns behov av att ändra attributmappningarna måste dessa attribut definieras i konfigurationsvyn för etableringsuppgiften för att de ska kunna ändras i orkestreringsnoden.
Undantag Pro etablering är en valfri egenskap på den här arbetsflödesnoden. Administratörer kan konfigurera den här egenskapen där undantag kan skrivas om några undantag finns under etableringsåtgärderna.
Kör anpassad backend-uppgift
Den här aktiviteten kommer att anropa ett pythonskript (pythonskriptet). Vid den tidpunkten kommer den nya informationen endast att vara tillgänglig i det externa systemet, ännu inte i ESM.

I illustrationen ovan kan administratörer välja rätt katalog "Mål". Om det finns behov av att ändra attributmappningarna måste dessa attribut definieras i konfigurationsvyn för provisioneringsuppgiften för att de ska kunna ändras i orkestreringsnoden.
Undantag Pro etablering är en valfri egenskap på den här arbetsflödesnoden. Administratörer kan konfigurera den här egenskapen där undantag kan skrivas om några undantag finns under etableringsåtgärderna.
Hur man anpassar kopplingen
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.
HR-kontakt
HR-anslutningen är byggd ovanpå denna generiska Python-skriptanslutning.

