From b64cdd02dc49bb7485cb6a43651c93e6712cb331 Mon Sep 17 00:00:00 2001 From: hannaejohansen <161599498+hannaejohansen@users.noreply.github.com> Date: Fri, 24 Apr 2026 16:06:15 +0200 Subject: [PATCH] Add IAM tools-actionsets docs and sidebar - Add IAM tools-actionsets docs and sidebar - Wrap API URL in documentation as inline code Add a new 'Tools actionsets' category to docs/iam/sidebars.js and introduce multiple documentation files under docs/iam/tools-actionsets. The added Markdown files document a range of IAM ActionSets (QueryIDW, QueryMV, QueryUser, QueryPortal, PersonProfiling, ActiveDirectoryDelete, RenamePDAccount, various Report_* and TOOL_* helpers, WFM_* utilities, etc.), including purpose, input parameters, examples, results and error handling. --- docs/iam/sidebars.js | 37 ++++ .../ActiveDirectoryDelete_dokumentasjon.md | 52 ++++++ .../PersonProfiling_dokumentasjon.md | 87 ++++++++++ .../QueryIDW_dokumentasjon.md | 73 ++++++++ .../tools-actionsets/QueryMV_dokumentasjon.md | 62 +++++++ .../QueryMergeUserInfo_dokumentasjon.md | 56 ++++++ .../QueryPortal_dokumentasjon.md | 60 +++++++ .../QueryUser_dokumentasjon.md | 66 +++++++ .../REPORT_DBTableSize_dokumentasjon.md | 79 +++++++++ .../RenamePDAccount_dokumentasjon.md | 49 ++++++ .../Report_Entitlements_dokumentasjon.md | 58 +++++++ .../Report_Group_Members_dokumentasjon.md | 70 ++++++++ .../Report_Healthchecks_dokumentasjon.md | 67 ++++++++ .../Report_JMLStatsPD_dokumentasjon.md | 80 +++++++++ .../Report_MVTableAnalytics_dokumentasjon.md | 80 +++++++++ .../Report_ManageReportFiles_dokumentasjon.md | 67 ++++++++ .../Report_PortalAnalytics_dokumentasjon.md | 115 +++++++++++++ .../Report_SystemTests_dokumentasjon.md | 161 ++++++++++++++++++ .../Report_appRoles10_dokumentasjon.md | 70 ++++++++ .../TOOL_CountFagpersoner_dokumentasjon.md | 63 +++++++ .../TOOL_CourseProfiling_dokumentasjon.md | 73 ++++++++ .../TOOL_DELETE_LDAP_OBJECT_dokumentasjon.md | 69 ++++++++ .../TOOL_DiffBetweenRIAndAD_dokumentasjon.md | 50 ++++++ .../TOOL_ExportGAL_dokumentasjon.md | 49 ++++++ ...cy_Username_MasterPersons_dokumentasjon.md | 64 +++++++ ...L_FutreDatedMessages_Move_dokumentasjon.md | 63 +++++++ .../TOOL_GetGalItems_dokumentasjon.md | 47 +++++ ...equestableEntitlement_csv_dokumentasjon.md | 109 ++++++++++++ ..._Manually_Update_Workflow_dokumentasjon.md | 52 ++++++ .../TOOL_OrgProfiling_dokumentasjon.md | 61 +++++++ .../WFM_DeleteIdentifier_dokumentasjon.md | 63 +++++++ .../WFM_MergeIdentities_dokumentasjon.md | 52 ++++++ .../WFM_RenameUser_dokumentasjon.md | 67 ++++++++ 33 files changed, 2271 insertions(+) create mode 100644 docs/iam/tools-actionsets/ActiveDirectoryDelete_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/PersonProfiling_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/QueryIDW_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/QueryMV_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/QueryMergeUserInfo_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/QueryPortal_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/QueryUser_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/REPORT_DBTableSize_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/RenamePDAccount_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/Report_Entitlements_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/Report_Group_Members_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/Report_Healthchecks_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/Report_JMLStatsPD_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/Report_MVTableAnalytics_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/Report_ManageReportFiles_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/Report_PortalAnalytics_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/Report_SystemTests_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/Report_appRoles10_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/TOOL_CountFagpersoner_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/TOOL_CourseProfiling_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/TOOL_DELETE_LDAP_OBJECT_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/TOOL_DiffBetweenRIAndAD_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/TOOL_ExportGAL_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/TOOL_Fix_Legacy_Username_MasterPersons_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/TOOL_FutreDatedMessages_Move_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/TOOL_GetGalItems_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/TOOL_InitializeUsersForARequestableEntitlement_csv_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/TOOL_Manually_Update_Workflow_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/TOOL_OrgProfiling_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/WFM_DeleteIdentifier_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/WFM_MergeIdentities_dokumentasjon.md create mode 100644 docs/iam/tools-actionsets/WFM_RenameUser_dokumentasjon.md diff --git a/docs/iam/sidebars.js b/docs/iam/sidebars.js index dfca3f2a6..07fab69c5 100644 --- a/docs/iam/sidebars.js +++ b/docs/iam/sidebars.js @@ -71,6 +71,43 @@ module.exports = [ 'iam/integrasjoner/Writebacktofs', ], }, + { + type: 'category', + label: 'Tools actionsets', + items: [ + 'iam/tools-actionsets/QueryIDW_dokumentasjon', + 'iam/tools-actionsets/QueryMergeUserInfo_dokumentasjon', + 'iam/tools-actionsets/QueryMV_dokumentasjon', + 'iam/tools-actionsets/QueryPortal_dokumentasjon', + 'iam/tools-actionsets/QueryUser_dokumentasjon', + 'iam/tools-actionsets/ActiveDirectoryDelete_dokumentasjon', + 'iam/tools-actionsets/PersonProfiling_dokumentasjon', + 'iam/tools-actionsets/RenamePDAccount_dokumentasjon', + 'iam/tools-actionsets/Report_appRoles10_dokumentasjon', + 'iam/tools-actionsets/REPORT_DBTableSize_dokumentasjon', + 'iam/tools-actionsets/Report_Entitlements_dokumentasjon', + 'iam/tools-actionsets/Report_Group_Members_dokumentasjon', + 'iam/tools-actionsets/Report_Healthchecks_dokumentasjon', + 'iam/tools-actionsets/Report_JMLStatsPD_dokumentasjon', + 'iam/tools-actionsets/Report_ManageReportFiles_dokumentasjon', + 'iam/tools-actionsets/Report_MVTableAnalytics_dokumentasjon', + 'iam/tools-actionsets/Report_PortalAnalytics_dokumentasjon', + 'iam/tools-actionsets/Report_SystemTests_dokumentasjon', + 'iam/tools-actionsets/TOOL_DELETE_LDAP_OBJECT_dokumentasjon', + 'iam/tools-actionsets/TOOL_DiffBetweenRIAndAD_dokumentasjon', + 'iam/tools-actionsets/TOOL_Fix_Legacy_Username_MasterPersons_dokumentasjon', + 'iam/tools-actionsets/TOOL_FutreDatedMessages_Move_dokumentasjon', + 'iam/tools-actionsets/TOOL_GetGalItems_dokumentasjon', + 'iam/tools-actionsets/TOOL_ExportGAL_dokumentasjon', + 'iam/tools-actionsets/TOOL_InitializeUsersForARequestableEntitlement_csv_dokumentasjon', + 'iam/tools-actionsets/TOOL_OrgProfiling_dokumentasjon', + 'iam/tools-actionsets/TOOL_CourseProfiling_dokumentasjon', + 'iam/tools-actionsets/TOOL_Manually_Update_Workflow_dokumentasjon', + 'iam/tools-actionsets/WFM_MergeIdentities_dokumentasjon', + 'iam/tools-actionsets/WFM_RenameUser_dokumentasjon', + 'iam/tools-actionsets/WFM_DeleteIdentifier_dokumentasjon', + ], + }, { type: 'category', label: 'Versjoner', diff --git a/docs/iam/tools-actionsets/ActiveDirectoryDelete_dokumentasjon.md b/docs/iam/tools-actionsets/ActiveDirectoryDelete_dokumentasjon.md new file mode 100644 index 000000000..9aed18cab --- /dev/null +++ b/docs/iam/tools-actionsets/ActiveDirectoryDelete_dokumentasjon.md @@ -0,0 +1,52 @@ + +# ActiveDirectoryDelete + + +Kategori: Account Management / Deprovisioning + + +## Formål + +Sletter et objekt fra Active Directory (AD) basert på sAMAccountName. +Actionsettet er en del av deprovisioneringsflytene i Felles IAM og brukes +når en brukerkonto skal fjernes permanent fra AD. + +Brukes til: +- Permanent sletting av AD-kontoer ved avslutning av arbeidsforhold eller studierett +- Opprydding av AD-objekter som ikke lenger skal eksistere +- Testing/simulering av sletting uten å gjøre faktiske endringer (log_only-modus) + + +## Hvordan kjøre + +### Input-parametere: +- username (string): sAMAccountName til AD-objektet som skal slettes +- idautoid (string): UH-ID til brukeren – brukes til revisjonslogging +- log_only (boolean, valgfri): Hvis satt til true kjøres actionsettet i simuleringsmodus + uten å gjøre faktiske endringer i AD + +### Eksempler: +- ActiveDirectoryDelete("laols0070", "3ddf4822-77ed-4c27-909e-7c826ca10423") +- ActiveDirectoryDelete("laols0070", "3ddf4822-77ed-4c27-909e-7c826ca10423", true) ← simulering + + +Resultat + +Actionsettet returnerer true ved suksess, false ved feil. + +Fargekoding i logger: +- GRØNN: AD-objektet ble slettet +- BLÅ: Simuleringsmodus (log_only=true) – objektet ville blitt slettet +- ORANSJE: Brukeren ble ikke funnet i AD – anses som allerede slettet (returnerer true) +- RØD: Feil – tilkobling til AD mislyktes, eller sletting feilet + +Revisjonslogging: +Alle slettinger (vellykkede og mislykkede) logges som audit-hendelse av typen +"deleteAccount" mot målsystemet "Active Directory", med UH-ID og DN som referanse. + +Mulige feilsituasjoner: +- Kan ikke koble til AD → avbryter og returnerer false +- Bruker ikke funnet i AD → advarselsmelding, returnerer true (idempotent) +- Sletting mislykkes → feilmelding og audit-logg med successful=false, returnerer false + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/PersonProfiling_dokumentasjon.md b/docs/iam/tools-actionsets/PersonProfiling_dokumentasjon.md new file mode 100644 index 000000000..076fb4e2a --- /dev/null +++ b/docs/iam/tools-actionsets/PersonProfiling_dokumentasjon.md @@ -0,0 +1,87 @@ + +# PersonProfiling + + +Kategori: Person Profiling / Query + + +## Formål + +Genererer en fullstendig HTML-brukerprofil basert på UH-ID. Samler data fra +Portal Directory (LDAP), Identity Warehouse (IdW), MetaVault (RIDB) og +EVU-kursdata, og presenterer alt i en Bootstrap-formatert HTML-rapport. + +Rapporten er kumulativ, ny informasjon legges til i samme fil for samme dato, +slik at man kan spore endringer gjennom dagen. + +Brukes til: +- Troubleshooting av brukerkontoer på tvers av alle systemer +- Verifisering av data fra kildesystemer (FS, SAP/DFØ, GREG) +- Debugging av JML-prosesser og provisjonering +- Support-saker med behov for komplett brukeroversikt +- Se hvilke kurs (EVU) en bruker er påmeldt + + +## Hvordan kjøre + +Input-parameter: +- uhid (string): UH-ID + +### Eksempel: +PersonProfiling("3ddf4822-77ed-4c27-909e-7c826ca10423") + + +Resultat + +Genererer HTML-fil: + `/person_profiles/SE_PersonProfile_-.html` + +Filen åpnes i append-modus, så hver kjøring samme dag legger til en ny +tidsstemplet seksjon nederst i rapporten. + +Rapporten henter og viser data fra følgende seksjoner: + +1. PORTAL DIRECTORY (LDAP) + - Alle LDAP-attributter for brukeren (unntatt userPassword) + - Vises i fet skrift per attributt + - Hvis bruker ikke finnes: vises "User not found in PD" + +2. IDENTITY WAREHOUSE (IDW) + - Kaller _QueryIDW med uhid + - Viser identifikatorer og institusjonstilknytning + +3. EVU-KURS + - Kaller TOOL_CourseProfiling med uhid + - Viser alle EVU-kurspåmeldinger for brukeren + +4. MASTER VAULT (RIDB): tabeller basert på affiliasjon + Alltid inkludert: + - master_persons + + Hvis student (id inneholder "/fs/"): + - master_studyrights + - master_studentteacher + - master_studentassessments + - master_roles + - students_load + - studyrights_load + - studentteaching_load + - studentassessments_load + - roles_load + + Hvis ansatt/gjest (id inneholder "/employee/"): + - master_positions + - master_contracts + - employees_load + - positions_load + - contracts_load + + Gjester fra GREG identifiseres via "/grg/" i kildeID-en og inngår + i employee-tabellene. + +Mulige feilsituasjoner: +- Kan ikke koble til RIDB → avbryter og returnerer false +- Kan ikke koble til Portal LDAP → avbryter +- UH-ID finnes ikke i master_persons → loggfeil og avbryter + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/QueryIDW_dokumentasjon.md b/docs/iam/tools-actionsets/QueryIDW_dokumentasjon.md new file mode 100644 index 000000000..a14544808 --- /dev/null +++ b/docs/iam/tools-actionsets/QueryIDW_dokumentasjon.md @@ -0,0 +1,73 @@ + +# _QueryIDW + +Kategori: Query / Identity Warehouse + +## Formål + +Slår opp identifikatorer i Identity Warehouse (IdW) basert på ulike søketyper. +Viser all identitetsinformasjon for en person på tvers av institusjoner, +inkludert UH-ID, brukernavn, personnummer, ansattnummer og andre identifikatorer. + +Brukes til: +- Finne UH-ID basert på personnummer eller brukernavn +- Identifisere alle identifikatorer knyttet til en person +- Verifisere identitetsmatching på tvers av institusjoner +- Troubleshooting av identitetskollisjoner +- Kontrollere hvilke institusjoner som har registrert brukeren +- Avdekke duplikater i master_persons for samme UH-ID + +## Hvordan kjøre + +### Input-parametere: +- type (enum, valgfri): Søketype + * "uhid" – UH-ID + * "brukernavn" – UH brukernavn + * "personnummer (fnr/dnr/snr)" – Fødselsnummer / D-nummer / S-nummer + * "SAP Ansattnummer" – Ansattnummer fra SAP/DFØ + * "FS personløpenummer" – Personløpenummer fra FS + * "Greg ansattnummer" – Ansattnummer fra GREG + * "Passnummer" – Passnummer + +- value (string, valgfri): Verdien som skal søkes etter + +### Eksempler: +* _QueryIDW("uhid", "3ddf4822-77ed-4c27-909e-7c826ca10423") +* _QueryIDW("personnummer (fnr/dnr/snr)", "01019912345") +* _QueryIDW("brukernavn", "laols0070") +* _QueryIDW("SAP Ansattnummer", "12345") + +## Resultat + +Viser informasjon i logger med fargekoding: + +1. INSTITUSJONER (lilla) + Liste over alle institusjoner som har registrert identifikatorer for personen, + kommaseparert på én linje. + +2. IDENTIFIKATORER I IDW (lilla overskrift, grå detaljer) + Alle identifikatorer gruppert per UH-ID (held_by) og institusjon: + - Institusjon vises i mørk rød (f.eks. "**** uib ****") + - Per identifikator vises: tidsstempel, type og verdi + Format: " YYYY-MM-DD HH:MM:SS - `:`" + +3. LEGACY OG UH-OPPRETTEDE NAVN (lilla overskrift, grå detaljer) + Brukernavn i namespace, gruppert per institusjon: + - Institusjon vises i mørk rød + - Per oppføring: tidsstempel, type, kildesystem (hvis ikke "idw") og verdi + Format: " YYYY-MM-DD HH:MM:SS: ` () = `" + +4. MASTER_PERSONS ANALYSE (kun hvis flere records finnes for samme UH-ID) + Hvis det finnes multiple records i master_persons for et UH-ID: + - Viser alle kolonner med verdier på tvers av records + - MØRK RØD: kolonner med like verdier (matching på tvers av records) + - SØLV: kolonner med unike verdier + - Hjelper med å identifisere identitetskollisjoner og duplikater + - Ignorerte kolonner (ikke vist): uhid, source_institution, updated_at, + uhun, soft_match_conflicts, legacy_username, legacy_email, created_at + +Feilsituasjoner: +- API-kall til IdW returnerer ikke HTTP 200 → feilmelding i rød + API-respons +- Ingen UH-ID funnet for oppslag mot master_persons → advarsel i rød + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/QueryMV_dokumentasjon.md b/docs/iam/tools-actionsets/QueryMV_dokumentasjon.md new file mode 100644 index 000000000..116162a01 --- /dev/null +++ b/docs/iam/tools-actionsets/QueryMV_dokumentasjon.md @@ -0,0 +1,62 @@ + +# _QueryMV + +Kategori: Query / Master Vault + + +## Formål + +Spør opp data fra RIDB (Master Vault) tabeller. Gir tilgang til alle master- +tabeller og load-tabeller for ansatte, studenter, organisasjoner og roller. + +Brukes til: +- Rask ad-hoc spørring mot Master Vault uten SQL-klient +- Verifisering av data i master_persons, master_identifiers, master_positions etc. +- Debugging av datainnlasting fra kildesystemer (employees_load, students_load) +- Kontroll av meldingskøer (message_queue_cache, message_queue_errors) +- Eksport av tabelldata til CSV for analyse + + +## Hvordan kjøre + +### Input-parametere: +- table (enum, påkrevd): Tabellnavn fra Master Vault + * Master-tabeller: master_persons, master_identifiers, master_positions, + master_contracts, master_loa, master_orgs, master_studyrights, + master_studentassessments, master_roles, etc. + * Load-tabeller: employees_load, students_load, positions_load, + contracts_load, orgs_load, roles_load, etc. + * Kø-tabeller: message_queue_cache, message_queue_errors, + message_queue_history, message_queue_future_dated + +- limit (string, valgfri): Maks antall records (default: 1000) +- filter (string, valgfri): WHERE clause uten "WHERE" keyword +- distinct (boolean, valgfri): Bruk DISTINCT i SELECT +- write_to_file (boolean, valgfri): Skriv Resultater til CSV-fil + +### Eksempler: +- _QueryMV("master_persons") +- _QueryMV("master_persons", "10") +- _QueryMV("master_persons", "100", "uhid='3ddf4822-77ed-4c27-909e-7c826ca10423'") +- _QueryMV("master_identifiers", "50", "source_institution='uio'") +- _QueryMV("employees_load", "1000", "", false, true) + +## Resultat + +Viser data i logger: +- SQL-spørring som kjøres (brun farge) +- Antall records funnet +- Tabell med Resultater (hvis >1 record) eller enkeltoppføring +- Total record count for tabellen + +Hvis write_to_file=true: +- Skriver CSV-fil til /reports/SE_QueryMV_asTable_`_`.csv +- Filnavn vises i logger +- CSV-format med semikolon (;) som separator +- Inkluderer header med kolonnenavn + +Returnerer: results array (returnsValue=true) + +Uten table-parameter: Viser liste over alle tilgjengelige tabeller i databasen. + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/QueryMergeUserInfo_dokumentasjon.md b/docs/iam/tools-actionsets/QueryMergeUserInfo_dokumentasjon.md new file mode 100644 index 000000000..d7c6b94f9 --- /dev/null +++ b/docs/iam/tools-actionsets/QueryMergeUserInfo_dokumentasjon.md @@ -0,0 +1,56 @@ + +# _QueryMergeUserInfo + +Kategori: Query / Merge Information + + +## Formål + +Samler og viser fullstendig brukerinformasjon fra alle systemer for én eller +flere brukere basert på UH-ID. Kombinerer data fra Identity Warehouse (IdW), +RIDB, Portal LDAP og målsystemer (AD og Feide LDAP). + +Brukes til: +- Verifisere synkronisering av brukerdata på tvers av alle systemer +- Sammenligne identitetsinformasjon før/etter merge-operasjoner +- Troubleshooting av provisjoneringsfeil +- Validere datakonsistens mellom kildesystemer og målsystemer + + +## Hvordan kjøre + +Input-parameter: +- uhids (string, valgfri): Kommaseparert liste med UH-IDer + +### Eksempler: +- _QueryMergeUserInfo("3ddf4822-77ed-4c27-909e-7c826ca10423") +- _QueryMergeUserInfo("3ddf4822-77ed-4c27-909e-7c826ca10423,62d5e2aa-ae46-428f-a8ec-abb7b8d4f4c5") + +Uten parameter kjøres med test-verdier. + + +## Resultat + +Viser strukturert informasjon i logger med fargekoding: + +1. IDENTITY WAREHOUSE (IDW) + - Institusjoner som har registrert brukeren + - Identifikatorer: nin, un, dfo:employee, fs:student, grg:employee, privat:passport + - Namespace: Legacy og UH-opprettede brukernavn + +2. LOCAL MASTER DATA (RIDB) + - master_identifiers: Lokale identifikatorer (uhid, nin, source_institution, source_system) + - master_persons: Komplett brukerinfo (navn, organisasjon, datoer, kildeinformasjon) + +3. PORTAL (Portal LDAP) + - Portal-brukerkontoer matchet på UH-ID + - Alle LDAP-attributter (idAutoId, idautoPersonSystem1ID, etc.) + +4. TARGET SYSTEMS + - Active Directory: Brukere matchet på sAMAccountName + - Feide LDAP: Brukere matchet på uid + +Typisk brukt etter merge-operasjoner for å bekrefte konsistent brukerinformasjon. +Viser dataflyt: IDW → RIDB → Portal → Target Systems. + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/QueryPortal_dokumentasjon.md b/docs/iam/tools-actionsets/QueryPortal_dokumentasjon.md new file mode 100644 index 000000000..a90de23ab --- /dev/null +++ b/docs/iam/tools-actionsets/QueryPortal_dokumentasjon.md @@ -0,0 +1,60 @@ + +# _QueryPortal + +Kategori: Query / Portal + + +## Formål + +Slår opp brukerinformasjon i RI Portal basert på UH-ID eller brukernavn. +Viser brukerdata fra Portal LDAP, gruppemedlemskap og tilgangstildelinger +(entitlements) fra Portal API. + +Brukes til: +- Verifisere brukerens Portal-kontoinnstillinger og attributter +- Kontrollere gruppemedlemskap og rolletildelinger +- Sjekke status på systemtilganger og entitlements +- Troubleshooting av tilgangsproblemer i Portal +- Identifisere GRANTED, REVOKED eller PENDING entitlements + + +## Hvordan kjøre + +Input-parameter: +- key (string, valgfri): UH-ID eller brukernavn + +ActionSet gjenkjenner automatisk om input er: +- UH-ID: 36 tegn søker mot idautoID +- Brukernavn: Søker mot idautoPersonSystem1ID eller idautoPersonSAMAccountName + +### Eksempler: +- _QueryPortal("3ddf4822-77ed-4c27-909e-7c826ca10423") +- _QueryPortal("laols0070") +- _QueryPortal() + +Hvis key ikke oppgis, returneres ingen resultater. +Hvis ingen bruker finnes, søkes det i stedet etter grupper med matchende navn. + + +## Resultat + + +1. BRUKERDATA (Portal LDAP) + - Alle LDAP-attributter for brukeren + - DN, UH-ID, brukernavn, affiliasjoner, organisasjon, etc. + +2. GRUPPEMEDLEMSKAP + - Liste over alle grupper brukeren er medlem av (cn, description) + - Vises i oransje farge + +3. ENTITLEMENTS (fra Portal API) + Gruppert etter klassifikasjon (Active Directory, LDAP, Framework, etc.): + - GRØNN: GRANTED, REVOKE_DENIED, REVOKE_FAILED (aktive tilganger) + - SØLV: REVOKED, DENIED (fjernede eller nektet tilganger) + - RØD: Andre statuser (PENDING, GRANT_FAILED, etc.) + +Hvis ingen bruker funnet: +- Søker etter grupper med matchende cn eller idAutoId +- Viser gruppedetaljer + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/QueryUser_dokumentasjon.md b/docs/iam/tools-actionsets/QueryUser_dokumentasjon.md new file mode 100644 index 000000000..bf193545f --- /dev/null +++ b/docs/iam/tools-actionsets/QueryUser_dokumentasjon.md @@ -0,0 +1,66 @@ + +# _QueryUser + +Kategori: Query / User Lookup + + +## Formål + +Komplett brukeroversikt på tvers av alle systemer. Samler og viser brukerdata +fra Portal, Master Vault, kildesystemer (SAP, FS, GREG) og målsystemer +(AD, Feide LDAP, ServiceNow, Lenel, Alma). + +Brukes til: +- Full troubleshooting av brukerkonto på tvers av hele systemlandskapet +- Verifisere provisjoneringsstatus til alle målsystemer +- Identifisere manglende eller feilaktige kontoer i målsystemer +- Support-saker med behov for komplett systemoversikt +- One-stop lookup for all brukerrelatert informasjon + + +## Hvordan kjøre + +Input-parameter: +- key (string, valgfri): UH-ID eller brukernavn + +ActionSet gjenkjenner automatisk om input er: +- UH-ID: 36 tegn +- Brukernavn: Legacy eller UH-brukernavn + +### Eksempler: +- _QueryUser("3ddf4822-77ed-4c27-909e-7c826ca10423") +- _QueryUser("laols0070") + + +## Resultat + +Viser strukturert informasjon i logger, organisert per kategori: + +1. PORTAL + Kaller _QueryPortal for full Portal-oversikt inkl. entitlements og grupper + +2. META VAULT TABLES (RIDB) + - master_persons: Grunnleggende brukerinfo + - master_identifiers: Alle identifikatorer + - master_positions: Stillinger (hvis ansatt) + - master_studyrights: Studierettigheter (hvis student) + +3. KILDESYSTEMER + - FS: Studentdata (hvis idautoPersonSchoolID finnes) + - DFØ/SAP: Ansattdata (hvis idautoPersonPayrollID finnes) + - GREG: Gjestedata (hvis idautoPersonHRID finnes) + +4. MÅLSYSTEMER + - Active Directory: AD-konto via _QueryAD + - Feide LDAP: LDAP-konto via _QueryFeideLDAP + - ServiceNow: ServiceNow-bruker via _QueryServiceNow + - Lenel: Adgangskontroll (employee og student) via _QueryLenel + - Alma: Biblioteksystem via _QueryAlma + +Hvert system vises med egen seksjon (h2) i logger. +Returnerer: User record array (returnsValue=true) + +MERK: Enkelte målsystemer er deaktivert (Apex, Moodle, Google, MetCim, +MetLDAP, AsureID, OfficePhoneDB, Symmetry) og må aktiveres ved behov. + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/REPORT_DBTableSize_dokumentasjon.md b/docs/iam/tools-actionsets/REPORT_DBTableSize_dokumentasjon.md new file mode 100644 index 000000000..2911c16c8 --- /dev/null +++ b/docs/iam/tools-actionsets/REPORT_DBTableSize_dokumentasjon.md @@ -0,0 +1,79 @@ + +# REPORT_DBTableSize + +Kategori: Report / Database Analytics + + +## Formål + +Henter størrelsesinformasjon for alle tabeller i RIDB (Master Vault) databasen +og rapporterer dataene til Identity Warehouse (IdW) for analyse og overvåking. +Samler metadata om tabellstørrelser, radantall, indexer og diskbruk. + +Brukes til: +- Overvåking av databasevekst over tid +- Identifisere tabeller som vokser raskt +- Kapasitetsplanlegging for database +- Ytelsesanalyse og optimalisering +- Sentralisert innsamling av databasemetrikker til IdW +- Historisk analyse av databasestørrelser + + +## Hvordan kjøre + +ActionSet har ingen input-parametere og kjøres uten argumenter. + +Eksempel: +REPORT_DBTableSize() + +ActionSet kjøres typisk som scheduled job for periodisk rapportering. + + +## Resultat + +Samler og sender følgende informasjon til IdW: + +1. DATABASESPØRRING + Henter data fra sys.dm_db_partition_stats for alle tabeller: + - Schema name: Database schema (f.eks. dbo) + - Table name: Tabellnavn + - Row count: Antall rader i tabellen + - Reserved: Total diskplass reservert (KB) + - Data: Diskplass brukt av data (KB) + - Index size: Diskplass brukt av indekser (KB) + - Unused: Ubrukt reservert diskplass (KB) + +2. DATASTRUKTUR + Bygger JSON-objekt med: + - institution: Global.institution (institusjonskode) + - `: ` for hver tabell + + ### Eksempel: + `{ + "institution": "uib", + "master_persons": 15000, + "master_identifiers": 25000, + "master_positions": 8000, + ... + }` + +3. API-KALL TIL IDW + Sender data til Identity Warehouse: + - Endpoint: Global.idwBaseUrl + "data/db_usage?trace=true" + - Method: HTTP POST + - Auth: Basic Authentication (Global.idwKey:Global.idwSecret) + - Content-Type: application/json + +Viser objekt i logger med lilla farge før sending. +Returnerer: HTTP response object (returnsValue=true) + +FEILHÅNDTERING: +Hvis databasespørring feiler, returneres error-objekt med: +- ERROR_NUMBER +- ERROR_SEVERITY +- ERROR_STATE +- ERROR_MESSAGE + +Data samles inn fra top 1000 tabeller, sortert etter størrelse (reserved space). + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/RenamePDAccount_dokumentasjon.md b/docs/iam/tools-actionsets/RenamePDAccount_dokumentasjon.md new file mode 100644 index 000000000..c22df0d3a --- /dev/null +++ b/docs/iam/tools-actionsets/RenamePDAccount_dokumentasjon.md @@ -0,0 +1,49 @@ + +# RenamePDAccount + +Kategori: Account Management / Provisioning + + +## Formål + +Gir nytt UH-ID (idautoID) til en eksisterende Portal Directory (PD) LDAP-konto. +Actionsettet oppdaterer Distinguished Name (DN) i Portal LDAP slik at kontoen +er knyttet til det nye UH-ID-et i stedet for det gamle. + +Brukes til: +- Korrigering av feil UH-ID på en Portal LDAP-konto +- Overføring av en Portal-konto fra ett UH-ID til et annet ved identitetsendringer +- Retting av feilkobling mellom Portal Directory-post og masteridentitet + + +## Hvordan kjøre + +### Input-parametere: +- from_uhid (string): UH-ID til kontoen som skal omdøpes +- to_uhid (string): UH-ID som kontoen skal få det nye navnet basert på + +### Eksempel: +- RenamePDAccount("3ddf4822-77ed-4c27-909e-7c826ca10423", "a1b2c3d4-1234-5678-abcd-ef0123456789") + +Forutsetninger: +- from_uhid må finnes som én unik konto i Portal LDAP +- to_uhid må IKKE allerede være i bruk i Portal LDAP + + +Resultat + +Etter vellykket kjøring er DN-en til Portal LDAP-kontoen oppdatert: +- Gammelt UH-ID erstattes med nytt UH-ID i kontoens Distinguished Name +- Kontoen eksisterer nå under den nye DN-en med to_uhid som identifikator + +Fargekoding i logger: +- GRØNN: Tilkobling til Portal LDAP opprettet / omdøping vellykket +- RØD: Feil: se detaljer under + +Mulige feilsituasjoner: +- Kan ikke koble til Portal LDAP → avbryter med feilmelding +- to_uhid er allerede i bruk → avbryter for å unngå kollisjon +- from_uhid finnes ikke (eller gir flere treff) → avbryter med feilmelding +- LDAP-omdøpingen mislykkes → feilmelding logges, konto forblir uendret + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/Report_Entitlements_dokumentasjon.md b/docs/iam/tools-actionsets/Report_Entitlements_dokumentasjon.md new file mode 100644 index 000000000..fefc97c68 --- /dev/null +++ b/docs/iam/tools-actionsets/Report_Entitlements_dokumentasjon.md @@ -0,0 +1,58 @@ + +# Report_Entitlements + +Kategori: Rapportering + + +## Formål + +Genererer en interaktiv HTML-rapport med fullstendig oversikt over alle +entitlements i RapidIdentity. Rapporten inkluderer kategorier, workflows, +godkjenningsflyter, ACL-filtre og rollemedlemskap. + +Brukes til: +- Dokumentasjon av aktiv entitlement-konfigurasjon +- Sammenligning med design-dokumenter +- Verifisering av godkjenningsflyter og roller +- Oversikt over hvilke workflows som er koblet til entitlements +- Identifisere hvem som godkjenner ulike tilganger + + +## Hvordan kjøre + +Ingen input-parametere kreves. + +Start ActionSet direkte fra RI Connect. + +ActionSettet henter automatisk data fra Portal REST API: +- Entitlements (resources) +- Workflows (workflowDefinitions) +- Roles/Groups (managedGroups) +- Categories +- Classifications + + +## Resultat + +Genererer HTML-fil: reports/entitlements.html + +Rapporten viser: +- Entitlements organisert i collapsible panels per kategori +- For hver entitlement: + * ID, navn, beskrivelse og ikon + * Binding, category og classification + * ACL filters (LDAP-filter eller group/role-basert med medlemsliste) + * Grant workflow: Navn, godkjenningstrinn med navngitte personer, form updates + * Revoke workflow: Navn, godkjenningstrinn med navngitte personer, form updates + +Godkjenningstyper: +- Group: Viser rollenavn og alle statiske medlemmer +- User: Viser navn på godkjenner +- Expression: Viser expression/formel + +HTML-rapporten er interaktiv med Bootstrap-styling og collapse-funksjonalitet +for enkel navigering mellom kategorier og entitlements. + +I loggen listes alle entitlement-IDer og navn gruppert på category (brun farge). + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/Report_Group_Members_dokumentasjon.md b/docs/iam/tools-actionsets/Report_Group_Members_dokumentasjon.md new file mode 100644 index 000000000..3a4eae3dd --- /dev/null +++ b/docs/iam/tools-actionsets/Report_Group_Members_dokumentasjon.md @@ -0,0 +1,70 @@ + +# Report_Group_Members + +Kategori: Rapportering + + +## Formål + +Genererer en interaktiv HTML-rapport med oversikt over medlemskap i alle +grupper/roller i RapidIdentity. Rapporten viser både statiske og dynamiske +medlemmer, deaktiverte brukere, ekskluderinger samt synkronisering til +målsystemer (AD, Feide LDAP, Portal). + +Brukes til: +- Dokumentasjon av gruppemedlemskap på tvers av institusjonen +- Verifisering av statiske vs dynamiske medlemmer +- Identifisere deaktiverte brukere i grupper +- Kontrollere gruppesynkronisering til målsystemer +- Oversikt over eiere og medeiere av grupper +- Troubleshooting av medlemskap og gruppetilhørighet + + +## Hvordan kjøre + +Ingen input-parametere kreves. + +Start ActionSet direkte fra RI Connect. + +ActionSettet leser konfigurasjonsfil: +- configuration/RapidIdentity/config_report_group_members.json + +Konfigurasjonsfilen definerer: +- Kategorier: Grupperinger basert på gruppenavn (start/end pattern) +- target_attribute: Felt som indikerer synkronisering til målsystemer +- default category: Standardkategori for grupper som ikke matcher filter + +ActionSettet beregner medlemskap on-the-fly basert på: +- Dynamic include/exclude filters (LDAP-filter) +- Static includes/excludes +- Brukers aktiveringsstatus (idAutoDisabled) + + +## Resultat + +Genererer HTML-fil: reports/group_members.html + +Rapporten viser: +- Grupper organisert i collapsible kategorier +- For hver gruppe: + * Antall medlemmer + * Beskrivelse + * Eiere og medeiere (med navn) + * Synkronisering til målsystemer [AD|Feide|Portal] + * Fullstendig medlemsliste med styling: + - Fet skrift: Statiske medlemmer + - Fet + kursiv: Både statisk og dynamisk inkludert + - Overstreket: Statisk ekskludert + - Grå tekst: Deaktiverte brukere + +Systemroller (f.eks. RI Administrator, Portal Administrator) grupperes automatisk. + +HTML-rapporten er interaktiv med Bootstrap-styling og collapse-funksjonalitet. + +I loggen: +- Kategorinavn for hver kategori +- Gruppenavn med ID (brun farge) +- Advarsler for deaktiverte eiere/medeiere (orange farge) +- Feilmeldinger for manglende brukere (rød farge) + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/Report_Healthchecks_dokumentasjon.md b/docs/iam/tools-actionsets/Report_Healthchecks_dokumentasjon.md new file mode 100644 index 000000000..789dea935 --- /dev/null +++ b/docs/iam/tools-actionsets/Report_Healthchecks_dokumentasjon.md @@ -0,0 +1,67 @@ + +# Report_Healthchecks + +Kategori: Rapportering / Monitoring + + +## Formål + +Kjører helsesjekker av alle systemer i Felles IAM-infrastrukturen og genererer +en HTML-rapport med status. Overvåker tilkobling og funksjonalitet til +kildesystemer, RapidIdentity-komponenter og målsystemer. + +Brukes til: +- Automatisk overvåking av systemhelse +- Identifisere tilkoblingsfeil og systemproblemer +- Verifisere at Identity Bridge og bridges fungerer +- Kontrollere at jobs ikke har hengt seg opp +- Historisk loggføring av feil (siste 7 dager) +- Proaktiv varsling ved problemer + + +## Hvordan kjøre + +Ingen input-parametere kreves. + +Start ActionSet direkte fra RI Connect eller schedule som automatisk jobb. + +ActionSettet sjekker følgende systemer: +- Kildesystemer: FS API, SAP API, GREG API +- Identity Bridge: Agents (heartbeat) og Bridges (connectivity) +- RapidIdentity: RIDB (Master Vault), Portal LDAP +- Målsystemer: Active Directory, Feide LDAP +- Jobs: Running processes (status og runtime) + +Feilhistorikk lagres i /data/healthcheck.csv med timestamp, system og +feilmelding. Kun feil fra siste 7 dager beholdes. + + +## Resultat + +Genererer HTML-fil: reports/Healthchecks.html + +Rapporten viser: +- Last updated: Tidsstempel for siste kjøring +- Source Systems: FS, SAP, GREG med status (grønn/rød) +- Identity Bridge: Per agent og bridge med heartbeat-status +- Running jobs: Prosjekt, jobbnavn, status og runtime + * Advarsler: Jobs som har kjørt >2 timer eller er i aborting/aborted status +- RIDB & PortalLDAP: Tilkoblingsstatus +- Target Systems: Active Directory, Feide LDAP tilkobling +- Healthcheck errors: Tabell med registrerte feil fra siste 7 dager + +Fargekoding: +- Grønn rad: System OK +- Rød rad: Feil/ikke tilgjengelig + +Feil logges også til ErrorHandler for integrasjon med Humio/logging-system. + +CSV-fil (/data/healthcheck.csv) inneholder: +- timestamp: Når feilen oppstod +- system: Hvilket system som feilet +- error: Feilmelding + +Rapporten oppdateres hver gang ActionSet kjøres og gir sanntidsoversikt +over infrastrukturens helse. + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/Report_JMLStatsPD_dokumentasjon.md b/docs/iam/tools-actionsets/Report_JMLStatsPD_dokumentasjon.md new file mode 100644 index 000000000..4e97fd07b --- /dev/null +++ b/docs/iam/tools-actionsets/Report_JMLStatsPD_dokumentasjon.md @@ -0,0 +1,80 @@ + +# Report_JMLStatsPD + +Kategori: Rapportering / Analyse + + +## Formål + +Analyserer PortalAnalytics historiefiler og beregner JML-transaksjoner +(Joiner-Mover-Leaver) på tvers av systemer og tid. Genererer statistikk +over provisjoneringsaktivitet fordelt på aktive/inaktive brukere og +system entitlements. + +Brukes til: +- Måle provisjoneringsvolum over tid +- Beregne daglige JML-transaksjoner per målsystem +- Identifisere trender i brukeraktivitet (aktive vs inaktive) +- Rapportering av systembelastning +- Kapasitetsplanlegging basert på historiske data +- Analyse av entitlement-distribusjon + + +## Hvordan kjøre + +Input-parametere (alle valgfrie): + +- log_date (string): Dato for analyse i format yyyy-MM-dd + * Default: Gårsdagens dato + * Eksempel: "2026-01-06" + +- write_to_file (boolean): Skriv resultater til CSV-fil + * Default: false + * Når true: Genererer /reports/JMLStatsPD_YYYYMMDD.csv + +- debug (boolean): Aktiverer debug-logging + * Default: false + * Viser detaljert informasjon under prosessering + +Eksempler: +- Report_JMLStatsPD() +- Report_JMLStatsPD("2026-01-06", true, false) +- Report_JMLStatsPD(undefined, true) + +ActionSettet leser fra /reports/.history/PortalAnalytics og analyserer +HTML-filer med provisjoneringsstatistikk per tidspunkt. + + +## Resultat + +I logger: +- Antall dager analysert (blå farge) +- Total volum per system (blå farge) +- Hvis debug=true: Detaljert prosessering per tidspunkt + +CSV-fil (hvis write_to_file=true): /reports/JMLStatsPD_YYYYMMDD.csv + +CSV-format: +- date: Dato for statistikken +- active: Antall transaksjoner for aktive brukere +- inactive: Antall transaksjoner for inaktive brukere +- [System 1-N]: Antall transaksjoner per system entitlement + +Kolonner per system kan inkludere: +- Active Directory +- Feide LDAP +- Portal LDAP +- Office 365 +- Inspera +- Andre tilkoblede målsystemer + +Beregningslogikk: +- Analyserer differanse mellom datapunkter +- Summerer endringer per system over hele dagen +- Skiller mellom aktive og inaktive brukere +- Aggregerer totaler på tvers av alle tidspunkter + +Resultatet gir innsikt i provisjoneringsaktivitet og kan brukes til +trendanalyse, kapasitetsplanlegging og systemovervåking. + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/Report_MVTableAnalytics_dokumentasjon.md b/docs/iam/tools-actionsets/Report_MVTableAnalytics_dokumentasjon.md new file mode 100644 index 000000000..f4ac367dd --- /dev/null +++ b/docs/iam/tools-actionsets/Report_MVTableAnalytics_dokumentasjon.md @@ -0,0 +1,80 @@ + +# Report_MVTableAnalytics + +Kategori: Rapportering / Database Analyse + + +## Formål + +Genererer HTML-rapport med analysestatistikk for MetaVault-tabeller i +RapidIdentity Database (RIDB). Viser status for prosesseringskøer og +identifiserer stuck records eller forsinkelser i databehandlingen. + +Brukes til: +- Overvåke databasens prosesseringskøer i MetaVault +- Identifisere records som har startet men ikke fullført prosessering +- Troubleshooting av dataintegrasjoner fra kildesystemer (SAP, FS) +- Kapasitetsplanlegging basert på køstørrelse +- Daglig/timebasert overvåking av systemhelse + +For hver tabell vises: +- Total: Totalt antall records i tabellen +- Pending: Records som venter på prosessering (processed_on = null) +- Incomplete: Records med process_id satt men ikke fullført (stuck records) + +Tabellene som analyseres defineres i global variabel: +Global.TableAnalyticsTables (kommaseparert liste) + + +## Hvordan kjøre + +Input-parameter: +- include_message_cache (boolean, valgfri, default: false): Inkluder + message_queue_cache tabell i rapporten + +### Eksempler: +- Report_MVTableAnalytics() # Standard (uten message cache) +- Report_MVTableAnalytics(true) # Inkluder message_queue_cache + +ActionSettet kan kjøres manuelt fra RapidIdentity Connect eller scheduleres +for kontinuerlig overvåking (f.eks. hver 15. minutt). + +Typiske tabeller som analyseres: +- employees_load +- positions_load +- master_positions +- master_persons +- message_queue_cache (kun hvis include_message_cache=true) + + +## Resultat + +HTML-rapport genereres og lagres i: +/reports/MVTableAnalytics_[dd-MM-yyyy].html + +Rapporten oppdateres kontinuerlig gjennom dagen i append-modus, med ny rad +per kjøring. Hver rad viser tidsstempel og status for alle konfigurerte +tabeller. + +Rapportinnhold: +- Auto-refresh hvert 60. sekund +- Bootstrap-formatering for responsivt design +- Tabellheader viser alle analyserte tabeller med kolonner: + * Total: Totalt antall records + * Pending: Records som venter (processed_on/processed_at = null) + * Incomplete: Records med process_id men ikke fullført + +Fargemarkering: +- RØD: Incomplete records > 0 (indikerer problem som må undersøkes) +- SVART: Normal status + +Eksempel output (en rad per kjøring): +Tidsstempel | employees_load (Total/Pending/Incomplete) | positions_load | ... +10:15 | 1523 / 0 / 0 | 892 / 12 / 2 | ... + +Troubleshooting: +- Høyt antall Pending: Prosesseringsjobb kjører ikke eller er overbelastet +- Incomplete records: Stuck records som må frigis eller ryddes manuelt +- message_queue_cache med høye tall: Meldingskø ikke tømt, sjekk processer + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/Report_ManageReportFiles_dokumentasjon.md b/docs/iam/tools-actionsets/Report_ManageReportFiles_dokumentasjon.md new file mode 100644 index 000000000..df7904c1b --- /dev/null +++ b/docs/iam/tools-actionsets/Report_ManageReportFiles_dokumentasjon.md @@ -0,0 +1,67 @@ + +# Report_ManageReportFiles + +Kategori: Filhåndtering / Vedlikehold + + +## Formålmål + +Automatisk arkivering og sletting av gamle rapportfiler basert på alder og +konfigurerbare regler. Holder rapportmappene ryddige ved å flytte gamle +rapporter til .history mappe eller slette dem helt. + +Brukes til: +- Vedlikehold av rapportfiler for å unngå at filsystemet blir fylt opp +- Arkivering av historiske rapporter i .history mappe +- Sletting av svært gamle rapporter som ikke lenger er relevante +- Automatisk opprydding via schedulerte jobber + +Konfigurasjonsfilen definerer: +- Hvilke mapper som skal prosesseres +- Filtre (filnavn-mønstre) for matching +- Operasjon (archive eller delete) +- Alder i dager før filer prosesseres + + +## Hvordan kjøre + +Input-parameter: +- logOnly (boolean, valgfri, default: true): Dry-run modus eller reell kjøring + +Konfigurasjonsfil: +configuration/RapidIdentity/config_report_manage_report_files.json + +### Eksempler: +- Report_ManageReportFiles() # Test-modus (logOnly=true) +- Report_ManageReportFiles(false) # Reell kjøring med faktiske endringer + +ActionSettet kan kjøres manuelt fra RapidIdentity Connect eller scheduleres +for automatisk vedlikehold (f.eks. daglig/ukentlig). + + +## Resultat + +I logg-modus (logOnly=true): +- Lister alle filer som matcher konfigurerte filtre +- Viser operasjon som ville blitt utført (archive/delete) +- Viser filenes alder i dager +- Ingen faktiske endringer gjøres + +I aktiv modus (logOnly=false): +- Arkiverer filer til .history mappe (operation=archive) +- Sletter filer permanent (operation=delete) +- Logger suksess/feil for hver operasjon +- Filer som er nyere enn angitt alder (age) ignoreres + +Fargekodet logg: +- ORANSJE: Planlagt operasjon (med antall dager) +- GRØNN: Vellykket flytting/sletting +- RØD: Feilet operasjon +- GRÅ: Ingen handling (ikke gammel nok) +- SØLV: Ingen match, ignorert + +Eksempel output: +"reports/PortalAnalytics_v3_01-12-2025.html (38 days old) - moving to .history folder" +" Moved: /reports/PortalAnalytics_v3_01-12-2025.html" + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/Report_PortalAnalytics_dokumentasjon.md b/docs/iam/tools-actionsets/Report_PortalAnalytics_dokumentasjon.md new file mode 100644 index 000000000..ab65d4c3e --- /dev/null +++ b/docs/iam/tools-actionsets/Report_PortalAnalytics_dokumentasjon.md @@ -0,0 +1,115 @@ + +# Report_PortalAnalytics + +Kategori: Rapportering / Portal Directory Analyse + + +## Formål + +Genererer omfattende HTML-rapport med detaljert oversikt over brukere og +tilganger i RapidIdentity Portal Directory (MetaDirectory). Viser statistikk +over aktive/inaktive brukere, affiliations, business roles, system entitlements +og provisioning-status mot målsystemer. + +Brukes til: +- Overvåke identitetsdata i Portal Directory +- Identifisere avvik mellom forventet og faktisk provisioning +- Analysere distribusjon av tilganger på tvers av systemer +- Rapportere på brukertyper (ansatte, studenter, gjester) +- Verifisere at birthright access er korrekt provisjonert +- Identifisere requested access (ikke-birthright tilganger) +- Overvåke legacy usernames distribusjon + +Systemene som analyseres defineres i global variabel: +Global.PortalAnalyticsSystems (kommaseparert liste) + + +## Hvordan kjøre + +Input-parameter: +- write_to_report_file (boolean, valgfri): Historisk parameter uten praktisk + effekt + +### Eksempler: +- Report_PortalAnalytics() # Standard kjøring + +ActionSettet kan kjøres manuelt fra RapidIdentity Connect eller scheduleres +for daglig/timebasert rapportering av portal-statistikk. + +Data hentes fra: +- Portal LDAP (MetaDirectory) via getLDAPRecords +- Attributter: idautoDisabled, idautoPersonAffiliation, idautoPersonAppRoles2/5/6/10 + + +## Resultat + +HTML-rapport genereres og lagres i: +/reports/PortalAnalytics_v3_[dd-MM-yyyy].html + +Rapporten oppdateres kontinuerlig gjennom dagen i append-modus, med ny rad +per kjøring. Hver rad viser tidsstempel og komplett status. + +Rapportinnhold: + +1. BRUKERSTATISTIKK + - Active users: Antall aktive brukere (idautoDisabled ikke satt) + - Inactive users: Antall inaktive brukere (idautoDisabled=TRUE) + +2. AFFILIATIONS + - Distribusjon av brukertyper med fargekoding: + * Employee (svart) + * Separated Employee (mørkegrå) + * Student (blå) + * Separated Student (lyseblå) + * Deceased (rød) + * Short-Term Guest / Long Term Guest (oransje) + * External (oransje) + - Totaltall per affiliation type + +3. BUSINESS ROLES (idautoPersonAppRoles10) + - Liste over alle business roles med antall brukere + - Totalt antall brukere med business roles + +4. SYSTEM ENTITLEMENTS (idautoPersonAppRoles2) + - Liste over alle systemer med antall brukere som har tilgang + - Inkluderer både birthright og requested access + - Breakdown på: + * Birthright access: Automatisk tildelt basert på rolle + * Extended birthright: Brukere som har utvidet sine tilganger + * Requested access: Tilganger søkt uten birthright + +5. PROVISIONING-STATUS PER SYSTEM + For hvert system i Global.PortalAnalyticsSystems: + - Forventet antall (idautoPersonAppRoles2): Skal ha tilgang + - Faktisk antall (idautoPersonAppRoles5): Er provisjonert + - Status med fargemarkering: + * GRØNN "OK": Matching mellom forventet og faktisk + * RØD (negativt tall): Pending provisioning (for få provisjonert) + * BLÅ (+tall): Over-provisjonert (for mange provisjonert) + - Detaljert breakdown per system: + * Birthright access: Grunnleggende tilgang + * Extended birthright: Utvidede tilganger + * Requested access: Ikke-birthright søknader + +6. LEGACY USERNAMES + - Distribusjon av legacy usernames (idautoPersonSystem1ID/System2ID) + - Gruppert per affiliation type + - Totaltall per kategori + +Rapportegenskaper: +- Auto-refresh hvert 60. sekund +- Bootstrap-formatering for responsivt design +- Interaktive tabeller med hover-effekt +- Tooltip med detaljert informasjon + +Eksempel output (en rad): +Tidsstempel | Active: 5234 | Inactive: 892 | Affiliations | Business Roles | + | System Entitlements | FS: 3421/3419 (OK) | AD: 5102/5098 (-4) | + +Troubleshooting: +- Negativt tall (rød): Provisioning mangler, sjekk provisjoneringsjobb +- Positivt tall (blå): Over-provisjonert, sjekk deprovisjoneringsregler +- Høyt antall requested access: Mange manuelle søknader, vurder birthright +- Job not started (rød): Provisjoneringsjobb har ikke kjørt for systemet + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/Report_SystemTests_dokumentasjon.md b/docs/iam/tools-actionsets/Report_SystemTests_dokumentasjon.md new file mode 100644 index 000000000..f0b3910d1 --- /dev/null +++ b/docs/iam/tools-actionsets/Report_SystemTests_dokumentasjon.md @@ -0,0 +1,161 @@ + +# Report_SystemTests (Suite) + +Kategori: Rapportering / Datakvalitet og Systemovervåkning +Versjon: v4.0 + +Daglig systemtest-suite som sjekker RapidIdentity for datakvalitetsproblemer, +konfigurasjonsfeil og driftsmessige avvik. Består av 7 sammenkoblede ActionSets. + +KOMPONENTER: +• Report_SystemTests: Hovedmodul som orkestrerer alle tester +• Report_SystemTests_CheckForDoubleAccounts: Duplikatdeteksjon +• Report_SystemTests_CheckLogfiles: Logger warnings/errors +• Report_SystemTests_AddToWhitelist: Whitelist-håndtering +• Report_SystemTests_group_owners: Sjekker gruppeeiere +• Report_SystemTests_SendEmail: HTML-formatering og e-postutsending +• Report_SystemTests_Snippet: Testing/utvikling + + +## Formål + + +Daglig overvåkning av RapidIdentity med følgende kontroller: + +• BRUKERKONTI + - Doble konti i kildesystemer (SAP/FS/Greg) + - Duplikate RI-konti (matching på navn/fødselsdato) + - Ikke-aktiverte konti og nylig aktiverte konti + +• TILGANGER + - Provisioning-avvik (birthright vs faktisk tilgang) + - Mismatch mellom R2/R6 (entitled) og R5/R8 (provisioned) + +• DRIFT + - Logfile errors/warnings fra forrige dag + - Lange kjørejobber (over 2 timer) + - ActionSet-konfigurasjonsfeil + +• ORGANISASJON + - Manglende/inaktive gruppeeiere + - Ugyldige passnumre i SAP-data + +Brukes til: +- Daglig proaktiv overvåkning +- Identifisere datakvalitetsproblemer før de eskalerer +- Sikre korrekt provisioning til målsystemer + + +## Hvordan kjøre + + +### Input-parametere: + +• receivers (enum): E-postadresse for mottaker +• sendMail (boolean): true = send e-post, false = kun HTML-fil +• execute (enum): "fast" / "normal" / "full" + - fast: Hopper over tunge SAP API-kall + - normal: Standard kjøring (anbefalt) + - full: Alle kontroller inkl. SAP source verification + +### Eksempler: + +Standard daglig kjøring +```json +{ +Report_SystemTests( + receivers = "iam-team@sikt.no", + sendMail = true, + execute = "normal" +) +} +``` + +Test uten e-post +- Report_SystemTests(sendMail = false, execute = "fast") + +Scheduleres normalt som nattjobb kl 06:00 etter synkroniseringer. + + +## Resultat + + +HTML-rapport: /reports/daily_issue_report_`[yyyy-MM-dd]`.html + +Rapporten inneholder Bootstrap-formaterte seksjoner med: + +1. SYSTEM-ENTITLEMENTS MISMATCH + - Per system (AD, LDAP, Inspera, etc.) + - Missing (rød) eller Not deprovisioned (oransje) + - Brukerinfo med ActionSet-link for re-sync + +2. LOGFILE ERRORS + - Feil fra forrige dag + - Hierarki: Prosjekt → Logtype → ActionSet + - CSV-rapport: /reports/Failed_synchronizations.csv + +3. DOBLE KONTI + - Kildesystem-duplikater (SAP/FS) + - RI-duplikater (navn/fødselsdato) + - Whitelist-instruksjoner + +4. GRUPPEEIERE + - Status: Disabled / Missing / Not a portal Role Manager + +5. ANDRE KONTROLLER + - Lange kjørejobber (over 2 timer) + - Ugyldige passnumre + - Aktiverte konti (siste 3 dager) + - Ikke-aktiverte konti + +Fargekoding: +- Rød: Kritiske problemer +- Oransje: Advarsler +- Grå: Ingen problemer funnet + +E-post sendes til receivers + system-spesifikke kontakter. +Sensitiv info (fnr, identifikatorer) sensureres i e-post. + + +SUBMODULER: KORT BESKRIVELSE + + +1. CheckForDoubleAccounts + - Matcher brukere på navn/fødselsdato + - Søker i master_persons for fnr-kilder + - Returner: Array med [navn, brukernavn, fødselsdato, identifikatorer] + +2. CheckLogfiles + - Leser checkLogFiles_history.json + - Analyser errors og aggregated_messages (siste 1-2 dager) + - Skriver CSV: /reports/Failed_synchronizations.csv + +3. AddToWhitelist + - Legger brukernavn-par i data/daily_issue_report_whitelist.json + - Format: `{"double_ri_accounts": {"user1, user2": true}}` + - Hindrer false positives i duplikatrapporter + +4. group_owners + - Sjekker alle idautoGroup objekter + - Validerer eiere mot Portal Role/Group Manager + - Flagg: Disabled / Missing / Not a manager + +5. SendEmail + - Formatter issues som Bootstrap HTML + - Sensurerer kolonner (fnr, identifikatorer) + - Sender via FnSendEmail per mottaker + +6. Snippet + - Testmodul for utvikling + - Subset av hovedmodul-kontroller + + +FEILSØKING + + +"History file not found" → Kjør CheckLogFilesForErrors først +Ingen e-post mottatt → Sjekk sendMail=true og receivers +For mange duplikater → Bruk AddToWhitelist +Lange kjøretider → Bruk execute="fast" + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/Report_appRoles10_dokumentasjon.md b/docs/iam/tools-actionsets/Report_appRoles10_dokumentasjon.md new file mode 100644 index 000000000..ac033e107 --- /dev/null +++ b/docs/iam/tools-actionsets/Report_appRoles10_dokumentasjon.md @@ -0,0 +1,70 @@ + +# Report_appRoles10 + +Kategori: Report / Business Roles + + +## Formål + +Genererer en rapport over alle virksomhetsroller (business roles) i +idautoPersonAppRoles10 og viser kombinasjoner av roller som brukere har. +Identifiserer hvilke roller som ofte forekommer sammen. + +Brukes til: +- Få oversikt over alle business roles i bruk +- Identifisere vanlige rollekombinasjon +- Analysere rollestrukturer og mønstre +- Oppdage roller som alltid forekommer sammen (100% overlap) +- Dokumentasjon av rollemodell +- Planlegge rollekonsolidering + + +## Hvordan kjøre + +ActionSet har ingen input-parametere og kjøres uten argumenter. + +### Eksempel: +- Report_appRoles10() + +ActionSet henter alle brukere fra Portal LDAP som har verdier i +idautoPersonAppRoles10-attributtet. + + +## Resultat + +Genererer HTML-fil: /reports/idautoPersonAppRoles10.html + +Rapporten viser: +- Alle business roles sortert alfabetisk +- Antall brukere per rolle (i parentes) +- Kollapsbare paneler med Bootstrap-styling + +For hver rolle: +1. HOVEDINFORMASJON + - Rollenavn + - Antall brukere med denne rollen + +2. ROLLEKOMBINASJON + Liste over andre roller som forekommer hos brukere med denne rollen: + - Andre rollenavn + - Antall brukere med begge roller + - Total antall brukere med den andre rollen + + Format: "rollenavn (X of Y)" + - X = antall brukere som har begge rollene + - Y = totalt antall brukere med den andre rollen + + **Indikerer 100% overlap (X = Y)** + - Betyr at alle brukere med den andre rollen også har hovedrollen + - Potensielt kandidat for rollekonsolidering + +Rapporten er interaktiv med kollapsbare seksjoner for enkel navigering. + +Logger også antall unike roller funnet til konsoll. + +EKSEMPEL: +Hvis "iam:employee" (50 brukere) vises med: +- **iam:adm (10 of 10)**: Alle 10 adm-brukere er også employees (fet skrift) +- iam:manager (15 of 30): 15 av 30 managers er employees (vanlig skrift) + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/TOOL_CountFagpersoner_dokumentasjon.md b/docs/iam/tools-actionsets/TOOL_CountFagpersoner_dokumentasjon.md new file mode 100644 index 000000000..685565c55 --- /dev/null +++ b/docs/iam/tools-actionsets/TOOL_CountFagpersoner_dokumentasjon.md @@ -0,0 +1,63 @@ + +# TOOL_CountFagpersoner + +Kategori: FSActions / People / Reporting + + +## Formål + +Henter og teller fagpersoner fra Felles Studentsystem (FS) via API. +Analyserer status (aktiv/inaktiv), utenlandsk tilhørighet basert på fødselsnummer, +og sjekker om personene eksisterer i Portal LDAP med korrekt rolle. + +Brukes til: +- Rapportering av antall fagpersoner i FS +- Verifisering av datakvalitet og konsistens mellom FS og IAM +- Identifisering av utenlandske fagpersoner og deres e-postregistrering +- Feilsøking av manglende tilganger for fagpersoner + + +## Hvordan kjøre + +### Input-parametere: +- key (string, valgfri): ID for å slå opp en spesifikk person. Hvis tom hentes alle. +- mv_session (object, valgfri): Eksisterende databasekobling (for ytelse). +- debug (boolean, valgfri): Aktiverer utvidet logging. +- write_to_file (boolean, valgfri): Skriver detaljert resultat til CSV-fil. + +### Eksempler: +- TOOL_CountFagpersoner() -- Full rapport til logg +- TOOL_CountFagpersoner(null, null, false, true) -- Full rapport til CSV +- TOOL_CountFagpersoner("12345") -- Sjekk spesifikk person + +Prosessflyt: +1. Kobler til RIDB og Portal LDAP +2. Henter data fra FS API (/personer?fagperson=true) +3. Itererer gjennom alle sider med resultater +4. For hver person: + - Sjekker om fagperson er aktiv eller inaktiv + - Analyserer fødselsnummer for å identifisere utlendinger (D-nummer logikk) + - Sjekker e-postadresser (privat vs. institusjon) + - Slår opp i Portal LDAP på personløpenummer (pln) + - Verifiserer om brukeren har rollen "fs fagperson" i idautoPersonAppRoles2 + + +## Resultat + +Logger oppsummering til konsoll: +- Totalt antall prosesserte +- Antall aktive og inaktive fagpersoner +- Antall utlendinger med privat og institusjonell e-post + +CSV-eksport (hvis write_to_file=true): +- Filbane: /reports/fagpersoner_yyyymmdd.csv +- Format: pln;status;pd_status +- Innhold: Personløpenummer, FS-status (AKTIV/inaktiv), og status i LDAP + (AKTIV, inaktiv, Not eligible, eller (not found)) + +Feilscenarier: +- Tilkoblingsfeil mot database/LDAP -> Stopper kjøring +- 404 fra FS API -> Logger som slettet kilde, fortsetter/avslutter pent +- API-feil -> Prøver igjen opptil 5 ganger før avbrudd + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/TOOL_CourseProfiling_dokumentasjon.md b/docs/iam/tools-actionsets/TOOL_CourseProfiling_dokumentasjon.md new file mode 100644 index 000000000..3000ffb0d --- /dev/null +++ b/docs/iam/tools-actionsets/TOOL_CourseProfiling_dokumentasjon.md @@ -0,0 +1,73 @@ + +# TOOL_CourseProfiling + +Kategori: Tool / EVU / Kurs / Profiling + + +## Formål + +Henter og analyserer kursdeltakelse fra MetaVault (RIDB) for EVU-kurs (etter- og +videreutdanning). Verktøyet sjekker også mot Portal Directory (LDAP) om deltakerne +har fått tildelt forventet virksomhetsrolle (iam:courseattendant), og kan trigge +reprocessing for brukere som ikke er korrekt provisjonert. + +Brukes til: +- Troubleshooting av kursdeltakelse og provisjonering for EVU-studenter +- Verifisere at deltakere på et kurs har fått riktig virksomhetsrolle i Portal +- Identifisere deltakere med feil status (ikke aktive, ikke akseptert, mangler rolle) +- Se alle EVU-kurs en spesifikk bruker er påmeldt +- Trigge reprocessing for uprovisionerte deltakere på et kurs + + +## Hvordan kjøre + +Alle input-parametere er valgfrie, men minst ett av dem bør oppgis. +Ved søk på kurs må både course_code og term oppgis. + +### Input-parametere: +- uhid (string, valgfri): viser alle kurspåmeldinger for én bruker +- course_code (string, valgfri): Kurskode fra FS (f.eks. "INF100") +- term (string, valgfri): Semester/termin (f.eks. "2026H") – må kombineres med course_code +- trigger_reprocessing (boolean, valgfri): Hvis true, trigges reprocessing for alle + deltakere som er markert med feil (rød) i listen + +### Eksempler: +- TOOL_CourseProfiling("3ddf4822-77ed-4c27-909e-7c826ca10423") ← alle kurs for én bruker +- TOOL_CourseProfiling(null, "INF100", "2026H") ← alle deltakere på kurs +- TOOL_CourseProfiling(null, "INF100", "2026H", true) ← vis + trigger reprocessing + + +## Resultat + +Ved søk på course_code + term vises en tabell over deltakere med kolonnene: + Active Accept InPD UHID Navn (FS-kildeID) + +Kolonnebeskrivelse: +- Active: Om kurset er aktivt i master_evucourse (1 = ja) +- Accept: Deltakerens response_status_code fra FS (J = akseptert) +- InPD: Om brukeren har virksomhetsrollen iam:courseattendant i Portal Directory (J = ja) + +Fargekoding per deltaker: +- MØRK GRØNN: Alt OK – aktiv, akseptert og har riktig rolle i Portal +- RØD: Avvik – ikke aktiv, ikke akseptert, eller mangler rolle i Portal + +I tillegg vises oppsummering nederst: +- Provisjonerte deltakere (ok-teller) i mørk grønn +- Deltakere med feil (error-teller) i mørk rød + +Dato-visning (start/slutt): +- Viser studierettsdatoer (period_studyright) som primær kilde hvis konfigurert +- Faller tilbake på varighetsperiode (period_duration) hvis studierettsdato mangler + +Ved søk på uhid vises: +- Fullstendig deltaker- og kursinformasjon for alle EVU-kurs brukeren er påmeldt + +Hvis trigger_reprocessing=true vises: +- Antall brukere satt til reprocessing i mørk grønn + +Mulige feilsituasjoner: +- Kan ikke koble til RIDB eller Portal LDAP → avbryter +- Ingen kursdeltakelse funnet for søket → informasjonsmelding i mørk rød +- Feil ved reprocessing-oppdatering → feilmelding i mørk rød + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/TOOL_DELETE_LDAP_OBJECT_dokumentasjon.md b/docs/iam/tools-actionsets/TOOL_DELETE_LDAP_OBJECT_dokumentasjon.md new file mode 100644 index 000000000..c8f1b46a4 --- /dev/null +++ b/docs/iam/tools-actionsets/TOOL_DELETE_LDAP_OBJECT_dokumentasjon.md @@ -0,0 +1,69 @@ + +# TOOL_DELETE_LDAP_OBJECT + +Kategori: Tools + + +## Formål + + +Sletter LDAP-objekt fra Portal Directory (RI Directory) basert på idautoID. + +Brukes til: +- Slette enkelt LDAP-objekt +- Test-sletting (log_only mode) +- Feilretting av duplikater eller feilaktige objekter + + +## Hvordan kjøre + + +### Input-parametere: + +• idauto_id (string): Unik identifikator for LDAP-objektet som skal slettes +• log_only (boolean): Kun loggføring uten faktisk sletting (test-modus) + +### Eksempler: + +Slett LDAP-objekt +- TOOL_DELETE_LDAP_OBJECT(idauto_id = "12345") + +Test-modus (logger hva som ville blitt slettet) +- TOOL_DELETE_LDAP_OBJECT(idauto_id = "12345", log_only = true) + + +## Resultat + + +Konsoll-output: + +Connection to MD made (vellykket LDAP-tilkobling) +Error making MD Connection (feil ved LDAP-tilkobling) +Error searching for LDAP object to delete (objektet ikke funnet eller flere treff) + +Returverdi: +- false: Feil ved LDAP-tilkobling +- (ingen returverdi): Ved søkefeil eller vellykket sletting + +LDAP-søk: +- Scope: sub (søker rekursivt under Global.baseDN) +- Filter: (idautoID=[verdi]) +- Forventer nøyaktig 1 treff (records.length == 1) + + +FEILSØKING + + +Problem: "Error making Portal LDAP connection" +Løsning: Sjekk Global LDAP-konfigurasjon og nettverkstilgang til Portal Directory + +Problem: "Error searching for LDAP object to delete" +Løsning: Verifiser at idauto_id eksisterer (nøyaktig 1 treff kreves) + +Problem: Finner ikke objektet +Løsning: Bruk debug for å sjekke idautoID-verdi og LDAP-filter + +Problem: Flere objekter funnet +Løsning: idautoID er ikke unik: undersøk datakvalitet i Portal Directory + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/TOOL_DiffBetweenRIAndAD_dokumentasjon.md b/docs/iam/tools-actionsets/TOOL_DiffBetweenRIAndAD_dokumentasjon.md new file mode 100644 index 000000000..daf3c0ce6 --- /dev/null +++ b/docs/iam/tools-actionsets/TOOL_DiffBetweenRIAndAD_dokumentasjon.md @@ -0,0 +1,50 @@ + +# TOOL_DiffBetweenRIAndAD + +Kategori: Tools + + +## Formål + + +Sammenligner brukere mellom Portal Directory (RI) og Active Directory (AD). + +Brukes til: +- Identifisere brukere som eksisterer i AD men ikke i RI +- Finne brukere som vil bli deaktivert i AD av RI (mangler "active directory" entitlement) +- Finne brukere som vil bli opprettet i AD fra RI (har entitlement men mangler i AD) +- Generere CSV-rapporter for analyse og etterbehandling + +### Input-parametere: + +• log_only (boolean): Kun logging uten CSV-generering + +### Eksempler: + +Full analyse med CSV-rapporter +- TOOL_DiffBetweenRIAndAD() + +Kun logging i konsoll (ingen filer) +- TOOL_DiffBetweenRIAndAD(log_only = true) + + +## Resultat + + +Konsoll-output: + +Users existing in AD that doesnt exist in RI Portal: [antall] +[liste med brukernavn eller DN] + +Users existing in AD that will be disabled by RI: [antall] +[liste med sAMAccountName, affiliasjon] + +Users existing in RI that will be created in AD: [antall] +[liste med displayName, idautoID, affiliasjon] + +CSV-filer (hvis log_only=false): +- /reports/ExistsInADAndMissingInPortal_[yyyyMMdd].csv +- /reports/ExistsInADAndWillBeDisabledByRI_[yyyyMMdd].csv +- /reports/WillBeCreatedInAD_[yyyyMMdd].csv + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/TOOL_ExportGAL_dokumentasjon.md b/docs/iam/tools-actionsets/TOOL_ExportGAL_dokumentasjon.md new file mode 100644 index 000000000..dbe8bb372 --- /dev/null +++ b/docs/iam/tools-actionsets/TOOL_ExportGAL_dokumentasjon.md @@ -0,0 +1,49 @@ + +# TOOL_ExportGAL + +Kategori: Tool / Portal / Administrasjon + + +## Formål + +Henter og eksporterer Global Attribute List (GAL) fra RapidIdentity Portal via +REST API. GAL inneholder alle LDAP-attributter som er tilgjengelige i portalen, +med tilhørende lesevennlig navn (friendlyName). + +Brukes til: +- Få oversikt over alle LDAP-attributter som er konfigurert i Portal +- Dokumentere og verifisere attributt-konfigurasjonen i miljøet +- Eksportere attributtlisten til CSV for videre bruk eller analyse + + +## Hvordan kjøre + +Input-parameter: +- log_only (boolean): Styrer om resultatet eksporteres til fil eller kun vises i loggen + * false → eksporterer GAL til CSV-fil og viser innholdet i loggen + * true → viser kun GAL i loggen, ingen fil skrives + +### Eksempler: +- TOOL_ExportGAL(false) ← eksporter til fil +- TOOL_ExportGAL(true) ← vis i logg uten å skrive fil + + +## Resultat + +Resultatet er en liste med én rad per LDAP-attributt i formatet: + LDAP Attribute, FriendlyName + +Ved log_only=false eksporteres listen til: + /reports/GlobalAttributeList.csv (tegnsett: ISO-8859-1) + +Uavhengig av log_only vises alltid hele listen i loggen. + +Fargekoding i logger: +- GRØNN: Filen ble eksportert +- RØD: Feil ved tilkobling til Portal eller henting av GAL-data + +Mulige feilsituasjoner: +- Kan ikke koble til Portal → avbryter uten resultat +- API-kall for GAL-henting feiler → feilmelding logges og actionsettet avbryter + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/TOOL_Fix_Legacy_Username_MasterPersons_dokumentasjon.md b/docs/iam/tools-actionsets/TOOL_Fix_Legacy_Username_MasterPersons_dokumentasjon.md new file mode 100644 index 000000000..1301e15ce --- /dev/null +++ b/docs/iam/tools-actionsets/TOOL_Fix_Legacy_Username_MasterPersons_dokumentasjon.md @@ -0,0 +1,64 @@ + +# TOOL_Fix_Legacy_Username_MasterPersons + +Kategori: Tools + + +## Formål + + +Oppdaterer legacy_username i master_persons-tabellen basert på CSV-fil. + +Brukes til: +- Rette opp feil legacy_username i MetaVault (RIDB) +- Masserette brukernavn fra migrasjon eller datakorrigering +- Nullstille process_id og processed_at for reprocessering + + +## Hvordan kjøre + + +### Input-parametere: + +• log_only (boolean, optional): Kun logging uten å oppdatere databasen + +CSV-fil forventes på: +/data/load_fixes/diffLegacy_30_03_2023.csv + +CSV-format (semikolonseparert, UTF-8): +- uhid: UH-ID +- NEW_legacy_username: Nytt brukernavn som skal settes + +### Eksempler: + +Oppdater database +- OOL_Fix_Legacy_Username_MasterPersons() + +Test-modus (kun logg SQL) +- TOOL_Fix_Legacy_Username_MasterPersons(log_only = true) + + +## Resultat + + +Konsoll-output: + +[filnavn] found (vellykket filopening) +Updated: [antall] (per record i database-modus) +SQL + arrayParams (i log_only-modus) + +SQL som kjøres: +UPDATE master_persons +SET legacy_username = ?, + process_id = null, + processed_at = null +WHERE uhid = ? + +Effekt: +- Setter nytt legacy_username +- Nullstiller process_id og processed_at for å trigge reprocessering i neste sync +- Skipper records hvor uhid mangler + +Returverdi: ingen (eller early return ved feil) + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/TOOL_FutreDatedMessages_Move_dokumentasjon.md b/docs/iam/tools-actionsets/TOOL_FutreDatedMessages_Move_dokumentasjon.md new file mode 100644 index 000000000..4bb2d4cee --- /dev/null +++ b/docs/iam/tools-actionsets/TOOL_FutreDatedMessages_Move_dokumentasjon.md @@ -0,0 +1,63 @@ + +# TOOL_FutreDatedMessages_Move + +Kategori: Tools + + +## Formål + + +Flytter meldinger fra message_queue_future_dated til message_queue_futuredated (tabellkonvertering). + +Brukes til: +- Engangskonvertering mellom gamle og nye tabellstrukturer +- Migrere future-dated meldinger til ny stored procedure-basert løsning +- Rydde opp etter navneendring (future_dated → futuredated) + +MERK: Dette er et engangsverktøy for konvertering (beskrivelse: "1 time run for conversions") + + +## Hvordan kjøre + + +### Input-parametere: Ingen + +### Eksempel: + +Kjør konvertering +- TOOL_FutreDatedMessages_Move() + + +## Resultat + + +Konsoll-output: + +INITIAL STATS +message_queue_future_dated entries: [antall] +message_queue_futuredated entries: [antall] + +Messages to move: [antall] (per batch, maks 250) +Removed from future_dated table: [antall] + +FINAL STATS +message_queue_future_dated entries: 0 +message_queue_futuredated entries: [totalt antall] + +Prosess: +1. Teller meldinger i begge tabeller (initial stats) +2. Henter maks 250 meldinger om gangen fra message_queue_future_dated +3. Parser message-feltet som JSON for å hente message.id +4. Inserterer i message_queue_futuredated via stored procedure (message_queue_futuredated_sp) +5. Sletter vellykkede inserts fra message_queue_future_dated +6. Gjentar til ingen flere meldinger finnes +7. Viser final stats + +Dataflyt: +- UHID, inserted_on, message_id, message, valid_after, ansatte → message_queue_futuredated +- Bruker message_queue_futuredated_type og message_queue_futuredated_sp +- ansatte hentes fra JSON: message.message.id (konvertert til string) + +Returverdi: true ved suksess, false ved DB-tilkoblingsfeil + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/TOOL_GetGalItems_dokumentasjon.md b/docs/iam/tools-actionsets/TOOL_GetGalItems_dokumentasjon.md new file mode 100644 index 000000000..fd5c6d5cf --- /dev/null +++ b/docs/iam/tools-actionsets/TOOL_GetGalItems_dokumentasjon.md @@ -0,0 +1,47 @@ + +# TOOL_GetGalItems + +Kategori: Tools + + +## Formål + + +Henter items fra GAL (Global Address List) eller delegasjoner via RapidIdentity Portal REST API. + +Brukes til: +- Hente GAL-items (globale adresselister) +- Hente profildelegasjoner +- Teste/verifisere Portal REST API-tilgang + + +## Hvordan kjøre + + +### Input-parametere: Ingen + +### Eksempel: + +Hent GAL items eller delegasjoner +- TOOL_GetGalItems() + + +## Resultat + + +Konsoll-output: + +[URL] (purple: viser hvilket endpoint som kalles) +[result] (green: JSON-respons fra API) + +API-endepunkter: +- /api/rest/admin/gal/items (disabled) +- /api/rest/admin/profiles/delegations (active) + +HTTP GET request: +- Authorization: Bearer token (fra sessionPortal) +- Content-Type: application/json + +Returverdi: ingen (returnsValue = false) + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/TOOL_InitializeUsersForARequestableEntitlement_csv_dokumentasjon.md b/docs/iam/tools-actionsets/TOOL_InitializeUsersForARequestableEntitlement_csv_dokumentasjon.md new file mode 100644 index 000000000..084d307df --- /dev/null +++ b/docs/iam/tools-actionsets/TOOL_InitializeUsersForARequestableEntitlement_csv_dokumentasjon.md @@ -0,0 +1,109 @@ + +# TOOL_InitializeUsersForARequestableEntitlement_csv + +Kategori: Tools + + +## Formål + + +Initialiserer brukere til et bestillbart entitlement basert på CSV-fil. + +Brukes til: +- Bulk-tildeling av requestable entitlement til mange brukere +- Automatisk godkjenning av forespørsler (auto-approve) +- Migrering av eksisterende tilganger til nytt entitlement + + +## Hvordan kjøre + + +### Input-parametere: + +• filename (string): CSV-filnavn i /data/-mappen +• fieldSeparator (string, optional): Felt-separator (default: ',') +• entitlement_id (string): ID for requestable entitlement +• log_only (boolean): Test-modus uten å faktisk tildele +• identifier (enum, optional): Identifikatortype i filen (uhid, fnr, username, ansattnr, schoolID) + +CSV-format: +- Fil må ligge i /data/-mappen +- Kolonne med identifikator (uhid, fnr, username, etc.) +- UTF-8 encoding + +### Eksempler: + +Tildel entitlement basert på UHID +```json +{ +TOOL_InitializeUsersForARequestableEntitlement_csv( + filename = "users.csv", + entitlement_id = "abc-123", + log_only = false, + identifier = "uhid" +) +} +``` + +Test-modus med fødselsnummer +```json +{ +TOOL_InitializeUsersForARequestableEntitlement_csv( + filename = "ansatte.csv", + fieldSeparator = ";", + entitlement_id = "xyz-789", + log_only = true, + identifier = "fnr" +) +} +``` + + + +## Resultat + + +Konsoll-output: + +(LOG ONLY) Would request '[entitlement_name]' for [displayName] ([identifier]) +Failed to find these users in LDAP: [liste] +Multiple users found in LDAP with username: [liste] + +```json +{ +-------------------------------- +Total: [antall] +Total Skipped: [antall] +-------------------------------- +Total Add: [antall] +-------------------------------- +Total Add Failed: [antall] + +} +``` + +Prosess: +1. Validerer at CSV-fil finnes +2. Verifiserer at entitlement_id eksisterer via REST API +3. Itererer gjennom CSV-fil +4. Søker i Portal LDAP etter bruker basert på identifier +5. Kaller FnBulkRequestEntitlements for å opprette forespørsel +6. Venter 3 sekunder +7. Kaller FnAutoApproveEntitlements for automatisk godkjenning +8. Logger statistikk og feil + +Identifier-mapping til LDAP-attributter: +- uhid → idautoID +- fnr → idautoPersonNationalID +- username → idautoPersonSystem1ID eller idautoPersonSAMAccountName +- ansattnr → idautoPersonPayrollID +- schoolID → idautoPersonSchoolID + +Skipper records hvis: +- Identifier mangler i CSV +- Bruker ikke funnet i LDAP +- Flere brukere funnet i LDAP (duplikater) + +Returverdi: true ved suksess + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/TOOL_Manually_Update_Workflow_dokumentasjon.md b/docs/iam/tools-actionsets/TOOL_Manually_Update_Workflow_dokumentasjon.md new file mode 100644 index 000000000..ad08fc838 --- /dev/null +++ b/docs/iam/tools-actionsets/TOOL_Manually_Update_Workflow_dokumentasjon.md @@ -0,0 +1,52 @@ + +# TOOL_Manually_Update_Workflow + +Kategori: TOOL / Administrativt verktøy + + +## Formål + +Lar deg liste, hente og oppdatere workflow-definisjoner i RI Portal. +Workflow-JSON hentes ned til fil, kan redigeres manuelt, og lastes opp igjen. + +Brukes til: +- Endre approver-konfigurasjon i workflows +- Feilsøking og inspeksjon av workflow-definisjoner +- Manuell patching av workflows som ikke kan endres via GUI + + +## Hvordan kjøre + +### Input-parametere: +- operation (enum, påkrevd): "list", "get" eller "update" +- workflow_id (string, valgfri): Påkrevd for get og update + +Operasjoner: + +1. list: Lister alle workflow-definisjoner (ID og navn) + TOOL_Manually_Update_Workflow("list") + +2. get: Henter én workflow og lagrer JSON til fil + TOOL_Manually_Update_Workflow("get", "``") + Lagres til: /data/workflow/``.txt + +3. update: Laster opp redigert JSON tilbake til Portal + TOOL_Manually_Update_Workflow("update", "``") + Leser fra: /data/workflow/``.txt + +Typisk arbeidsflyt: list → get → rediger filen → update + + +## Resultat + +- list: Logger alle workflow-IDer og navn i lilla +- get: Lagrer workflow-JSON til /data/workflow/``.txt +- update: Oppdaterer workflow-definisjonen i Portal via REST API (HTTP PUT) + +Feilscenarier: +- Manglende workflow_id ved get/update → logger ERROR, avbryter +- API-feil → logger ERROR med respons +- Ugyldig JSON i fil ved update → logger ERROR, avbryter +- Fil finnes ikke ved update → logger ERROR, avbryter + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/TOOL_OrgProfiling_dokumentasjon.md b/docs/iam/tools-actionsets/TOOL_OrgProfiling_dokumentasjon.md new file mode 100644 index 000000000..01171d586 --- /dev/null +++ b/docs/iam/tools-actionsets/TOOL_OrgProfiling_dokumentasjon.md @@ -0,0 +1,61 @@ + +# TOOL_OrgProfiling + +Kategori: Tool / Organisasjon / Profiling + + +## Formål + +Henter ut en oversikt over brukere tilknyttet en organisasjonsenhet fra +MetaVault (RIDB). Viser ansatte med stillinger, kontraktsinfo, lederinformasjon +og org-hierarki. Kan i tillegg brukes til å tvinge frem rekjøring av IAM-prosessering +for alle brukere på en gitt org-enhet. + +Brukes til: +- Troubleshooting av organisasjonsdata og engasjementer +- Verifisere hvem som er registrert på en bestemt org-enhet +- Kontrollere leder og stedfortreder for en org-enhet +- Se org-hierarkiet (path) for en enhet +- Trigge reprocessing for alle brukere i en org-enhet etter dataendringer + + +## Hvordan kjøre + +Alle input-parametere er valgfrie, men minst ett av de tre første bør oppgis. + +### Input-parametere: +- uhid (string, valgfri): viser org-info for én spesifikk bruker +- org_short_name (string, valgfri): OrgReg-akronym for org-enheten (f.eks. "IT-U-HHS") +- org_id (string, valgfri): DFØ ekstern nøkkel / org-ID +- trigger_reprocessing (boolean, valgfri): Hvis true, nullstilles process_id og + processed_at for alle brukere på org-enheten, slik at de plukkes opp til ny + IAM-prosessering + +### Eksempler: +- TOOL_OrgProfiling(null, "IT-U-HHS") ← alle brukere på org +- TOOL_OrgProfiling("3ddf4822-77ed-4c27-909e-7c826ca10423") ← én bruker +- TOOL_OrgProfiling(null, "IT-U-HHS", null, true) ← vis + trigger reprocessing + + +## Resultat + +For søk på org_short_name eller org_id vises følgende i loggen: +- Org-enhetens SAP-kortnavn og OrgReg-akronym, inkl. source_id og koststed +- Leder (navn + UH-ID) i mørk rød +- Stedfortreder (navn + UH-ID) i mørk oransje +- Nummerert liste over alle ansatte med navn og UH-ID +- Org-hierarki (path fra rot til enhet) i lilla, f.eks. "UHN/FAK-HUM/IT-U-HHS" + +For søk på uhid vises: +- Fullstendig stillingsrad fra master_persons/master_positions med bl.a. + stillingstittel, YRK-kode, kontrakt, org-status og lederinfo + +Hvis trigger_reprocessing=true vises i tillegg: +- Antall brukere som ble satt til reprocessing i mørk grønn + +Mulige feilsituasjoner: +- Kan ikke koble til RIDB → avbryter og returnerer false +- Ingen engasjementer funnet for angitt søk → feilmelding i mørk rød +- Feil ved reprocessing-oppdatering → feilmelding i mørk rød + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/WFM_DeleteIdentifier_dokumentasjon.md b/docs/iam/tools-actionsets/WFM_DeleteIdentifier_dokumentasjon.md new file mode 100644 index 000000000..0ec31f1dd --- /dev/null +++ b/docs/iam/tools-actionsets/WFM_DeleteIdentifier_dokumentasjon.md @@ -0,0 +1,63 @@ + +# WFM_DeleteIdentifier + +Kategori: Workflow Management / Identity Warehouse + + +## Formål + +Sletter en enkelt identifikator knyttet til en person i Identity Warehouse (IdW) +via IdW REST API. Actionsettet kalles typisk fra en arbeidsflyt (workflow) og +brukes når en spesifikk identifikator skal fjernes uten å slette hele identiteten. + +Brukes til: +- Fjerne utdaterte eller feilregistrerte identifikatorer fra IdW +- Håndtere navneendringer (slette gammelt brukernavn, gammel e-post, o.l.) +- Fjerne tilknytning til kildesystem (f.eks. fs:student ved uteksaminering) +- Korrigere persondata som fødselsdato, fornavn eller etternavn i IdW + + +## Hvordan kjøre + +### Input-parametere: +- uhid (string): til personen identifikatoren tilhører +- type (string): Type identifikator som skal slettes. Gyldige verdier: + * "un" – UH brukernavn + * "email" – E-postadresse + * "privat:mobile" – Privat mobilnummer + * "privat:email" – Privat e-postadresse + * "privat:dob" – Privat fødselsdato + * "dfo:employee" – Ansattnummer fra DFØ/SAP + * "grg:employee" – Ansattnummer fra GREG (gjesteregister) + * "fs:student" – Personløpenummer fra FS + * "givenname" – Fornavn + * "sn" – Etternavn +- value (string): Verdien til identifikatoren som skal slettes + +Identifikatoren som slettes bygges opp slik: + `::` (f.eks. "sikt:un:laols0070") + +### Eksempler: +- WFM_DeleteIdentifier("3ddf4822-77ed-4c27-909e-7c826ca10423", "un", "laols0070") +- WFM_DeleteIdentifier("3ddf4822-77ed-4c27-909e-7c826ca10423", "fs:student", "12345678") + + +## Resultat + +Returnerer JSON med felt "response" satt til "true" ved suksess, "false" ved feil. + +Fargekoding i logger: +- GRØNN: Identifikatoren ble slettet i IdW +- LILLA: API-kall sendt / liste over gjenværende identifikatorer vises +- RØD: Feil: ugyldig input, manglende DB-tilkobling, eller API-kall feilet + +Etter vellykket sletting vises alle gjenværende identifikatorer for UH-ID-et i loggen. + +Mulige feilsituasjoner: +- Ugyldig UHID → avbryter og returnerer false +- Ugyldig type (ikke i tillatt liste) → avbryter og returnerer false +- Tom value → feilmelding logges +- Kan ikke koble til RIDB → avbryter og returnerer false +- API-kall til IdW returnerer ikke HTTP 200 → feilmelding og API-respons logges + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/WFM_MergeIdentities_dokumentasjon.md b/docs/iam/tools-actionsets/WFM_MergeIdentities_dokumentasjon.md new file mode 100644 index 000000000..04c42bf42 --- /dev/null +++ b/docs/iam/tools-actionsets/WFM_MergeIdentities_dokumentasjon.md @@ -0,0 +1,52 @@ + +# WFM_MergeIdentities + +Kategori: Workflow / Identitetsadministrasjon + + +## Formål + +Slår sammen to identiteter til én ved å merge kildeidentitet (merge_from) inn i +målidentitet (merge_to). Deaktiverer den gamle identiteten i Portal LDAP, fjerner +tilganger og roller, og oppdaterer RIDB (master_persons og master_identifiers). + +Brukes til: +- Sammenslåing av duplikatkontoer +- Konsolidering etter identitetskollisjoner +- Lokal opprydding etter sentral merge utført av Sikt + + +## Hvordan kjøre + +### Input-parametere: +- merge_from_uhid (string, påkrevd): UH-ID for identiteten som fjernes +- merge_to_uhid (string, påkrevd): UH-ID for identiteten som beholdes +- local_merge_only (boolean, valgfri): true = kun lokal opprydding (IDW-merge + allerede utført). Standard: false (sentral merge via IDW API) +- debug (boolean, valgfri): Ekstra logging av identifikatorer + +### Eksempler: +- WFM_MergeIdentities("aaa-old-uhid", "bbb-target-uhid") +- WFM_MergeIdentities("aaa-old-uhid", "bbb-target-uhid", true) + + +## Resultat + +Returnerer true ved suksess, false ved feil. + +Ved vellykket kjøring: +- Gammel identitet er deaktivert i Portal LDAP (roller og entitlements fjernet) +- master_persons og master_identifiers oppdatert med målidentitetens uhid/uhun +- Reprosessering trigget via nullstilt process_id/processed_at +- Audit-event logget + +Manuelle oppfølgingssteg logges: +1. Kjør PortalLdapSyncMismatchingEntitlements (remove) hvis merge_from er + provisjonert til målsystemer +2. Kjør PDDeleteAccounts for å slette fra AD og Portal LDAP + +Viktige feilscenarier: +- 403 fra IDW: Personen finnes ved flere institusjoner, Sikt må utføre merge +- Lokal merge: Avbryter hvis merge ikke er utført i IDW + +Skrevet med hjelp av AI \ No newline at end of file diff --git a/docs/iam/tools-actionsets/WFM_RenameUser_dokumentasjon.md b/docs/iam/tools-actionsets/WFM_RenameUser_dokumentasjon.md new file mode 100644 index 000000000..61d8024f5 --- /dev/null +++ b/docs/iam/tools-actionsets/WFM_RenameUser_dokumentasjon.md @@ -0,0 +1,67 @@ + +# WFM_RenameUser + +Kategori: Workflow / Brukeradministrasjon + + +## Formål + +Håndterer omdøping av brukernavn (UHUN) for en identitet i Felles IAM. +ActionSettet kalles typisk fra en workflow og utfører følgende: +1. Sender rename-forespørsel til Identity Warehouse (IDW) via API +2. Legger brukerens nåværende brukernavn på svarteliste (blacklisted_words) + slik at det ikke kan gjenbrukes ved fremtidig navnegenerering +3. Oppdaterer master_persons-tabellen med det nye brukernavnet +4. Markerer personen for reprosessering i provisjoneringsmotoren + +Brukes til: +- Navneendringer (f.eks. etter giftemål eller juridisk navneendring) +- Korrigering av feilgenererte brukernavn +- Workflow-drevne rename-operasjoner initiert fra RI Portal + + +## Hvordan kjøre + +### Input-parametere: +- uhid (string, påkrevd): UH-ID for brukeren som skal omdøpes +- new_username (string, valgfri): Ønsket nytt brukernavn. Hvis ikke angitt, + genererer IDW et nytt brukernavn automatisk basert på oppdatert navneinfo. + +### Eksempler: +- WFM_RenameUser("3ddf4822-77ed-4c27-909e-7c826ca10423") +- WFM_RenameUser("3ddf4822-77ed-4c27-909e-7c826ca10423", "olano0012") + +Flyten: +1. Oppretter databasetilkobling til RIDB +2. Bygger autentiseringsheader mot IDW API (Basic Auth) +3. Konstruerer API-URL: `{idwBaseUrl}/V2/rename/{uhid}[?username={new_username}]` +4. Henter brukerens nåværende UHUN fra master_persons +5. Ekstraherer bokstavdelen (5 tegn) fra UHUN og legger til blacklisted_words + via IDW API-endepunkt /V2/add-blacklist-word/ +6. Sender rename-forespørsel (HTTP POST) til IDW +7. Oppdaterer master_persons med nytt brukernavn og nullstiller process_id + og processed_at for reprosessering +8. Lukker databasetilkobling og returnerer resultat + + +## Resultat + +Returnerer: +- true: Omdøpingen var vellykket. Nytt brukernavn logges i grønt. +- false: Omdøpingen feilet. Feilmelding logges i rødt og ErrorHandler kalles. + +Sideeffekter ved vellykket kjøring: +- IDW har registrert det nye brukernavnet +- Gammelt brukernavn (bokstavdelen) er lagt til i blacklisted_words-tabellen +- master_persons.uhun er oppdatert med nytt brukernavn +- master_persons.updated_at er satt til nåværende tidspunkt +- master_persons.process_id og processed_at er nullstilt, som trigger + reprosessering og provisjonering til målsystemer (AD, LDAP, etc.) + +Feilscenarier: +- Databasetilkobling feiler → logger ERROR, returnerer false +- Henting av nåværende UHUN feiler → logger WARN, fortsetter med rename +- Svartelisting av gammelt brukernavn feiler → logger WARN, fortsetter +- Rename API-kall feiler → logger ERROR, kaller ErrorHandler, returnerer false + +Skrevet med hjelp av AI \ No newline at end of file