Bruk av stedkoder i Cerebrum

Dette dokumentet inneholder en oversikt over bruk av stedkoder i Cerebrum og Cerebrum-integrasjoner. Oversikten gir et bilde av hva som blir berørt dersom stedkoder ikke lenger skal brukes for å identifisere OU-er.

1   Bakgrunn

Prosjektet BOTT-ØL innfører nytt system for økonomi og lønn ved BOTT-universitetene. En av endringene ved å gå over til dette systemet er at stedkoden ikke lenger eksisterer i OU-strukturen fra dette systemet.

Universitetet i Oslo benytter i dag SAPUiO som autoritativt kildesystem for OU-hierarki, mens de andre UH-kundene som benytter Cerebrum henter OU-struktur fra FS. Begge disse systemene benytter stedkode som unik identifikator for organisasjonsenhet.

Advarsel

Dette dokumentet er work in progress, oversikten er ikke komplett.

2   Design

I Cerebrum er stedkoder implementert med egne utvidelser av organisasjonsenhet.

mod_stedkode

Stedkode implementeres i en egen tabell i Cerebrum, som fungerer som en utvidelse av ou_info.

I skjema trenger ikke alle OU-er å ha stedkode-data, men i Cerebrum-designet forøvrig forventes dette å være tilfelle.

Tabellen er relativt enkel, og har følgende felter:

  • landkode
  • institusjon
  • fakultet
  • institutt
  • avdeling
Cerebrum.modules.no.Stedkode

I Cerebrum-modulen fungerer stedkode som en utvidelse av OU-objektet. Måten Cerebrum er implementert på medfører at alle OU-objekter også forventes å være Stedkode-objekter.

Stedkode-objekter får satt følgende felt fra tilsvarende tabell:

  • landkode
  • institusjon
  • fakultet
  • institutt
  • avdeling

I tillegg implementerer stedkode et par ekstra metoder:

  • Stedkode.populate(...) overstyrer tilsvarende metode i OU for å kreve stedkode-felter.
  • Stedkode.find(...) overstyrer tilsvarende metode i OU for å kreve at stedkode-data finnes, og at feltene hentes fra database.
  • find_stedkode(...) implementerer oppslag etter OU fra stedkode-feltverdier
  • get_stedkoder(...) implmenterer utlisting og søk etter stedkoder.
  • get_stedkode() implemterer formattering av stedkode-felter for en OU (den kjente, sekssifrede stedkoden, f.eks. "352100")

Ved både oppretting og oppslag vil landkode og institusjon stort sett bruke standardverdier:

  • landkode=0
  • institusjon=cereconf.DEFAULT_INSTITUSJONSNR

3   Bruksområder

Stedkoder blir brukt en rekke steder i Cerebrum, og med ulike formål. En del bruksmønstre går igjen:

3.1   Kildesystem

Stedkode benyttes som felles identifikator for kobling av OU i kildedata til OU i Cerebrum. I mange tilfeller vil dette være å koble personroller til OU og tilknytning i Cerebrum.

3.2   Struktur

En del steder brukes stedkode-formatet til å avlede OU-hierarki. Her ser man på en del av stedkoden, for enkempel anta at stedkode FFIIAA hører til fakultet FF0000.

3.3   Input

En del steder i Cerebrum brukes stedkode som en OU-identifikator i input. Eksempel på dette kan være scripts som skal finne OU fra et kommandolinjeargument, en bofh-kommando hvor bruker skal oppgi en OU, eller scripts som henter OU fra konfigurasjon.

3.4   Output

Stedkode inkluderes gjerne i output - hvor output kan være en rapport, eksport til målsystem, etc..

3.5   indeks

En del steder i Cerebruk brukes stedkode som en identifikator/indeks for å slå opp OU-data. Dette har som regel ingen verdi i seg selv (her ville en intern ou-id gjort samme nytte), men bruken kombineres gjerne med annen bruk av stedkode.

4   Bruk av stedkode

4.1   Rapporter

contrib/statistics/generate_employees_on_student_disks.py (uio)

Rapport over brukerkonto med ansatt-tilknytting (account_type) som ligger på disker merket som student-disk (trait).

  • struktur: brukerkontoer blir gruppert per stedkode
  • output: Stedkoder brukes i rapport
contrib/statistics/generate_manual_affiliations_report.py

Rapport over brukere med manuell tilknytning.

Rapport ikke i bruk pdd., brukt ifm. avvikling av MANUELL-tilknytning på UiO. Er arbeidet helt ferdig?

  • output: Stedkode-tilknytning inkludert i rapport
contrib/statistics/generate_new_persons_report.py (uio)

Rapport over personer som har blitt opprettet i Cerebrum, fra SAP, siste syv dager.

  • struktur: brukerkontoer blir gruppert per fakultet
  • output: Stedkode brukes i rapport
contrib/statistics/generate_ous_without_email_domain_report.py (uio)

Rapport over OU-er som ikke har epost-domene konfigurert opp i mod_email.

  • output: Stedkode brukes i rapport
contrib/statistics/generate_quarantine_report.py (uio)

Rapport over brukere som er og har vært i karantene over tid.

På UiO lages det en rapport over ansatte som har vært i karantene siste 90 dager til app.uio.no/usit/cerebrum/

  • struktur: Brukerkontoer/karantener blir gruppert per fakultet
  • output: Stedkode brukes i rapport.
contrib/statistics/generate_unregistered_report.py

Rapport over brukerkontoer som har mistet tilknytning fra kildesystem.

Rapporten grupperer brukerkonto på OU/stedkode, og kan også filtrere på stedkode/fakultet. Rapporten er ikke i bruk?

  • input: stedkode-filtrering fra kommandolinjeargument
  • indeks: stedkoder brukes for intern organisering av ou-er
  • struktur: gruppering av resultat
  • output: stedkode brukes i rapport
contrib/no/nmh/report-mismatched-users.py (nmh)

Rapport over avvik fra forretningsregler hos NMH.

En av reglene er sjekk av medlemsskap i OU-grupper. Konfigurasjon om hvilke OU-er og grupper dette gjelder benytter oppslag med stedkode.

  • input: stedkode-oppslag fra kommandolinjeargument
  • output: stedkode brukes i rapport
contrib/no/uio/report-missing-fagpersoner.py (uio)

Rapport over FS-fagpersoner som ikke er registrert med tilknytning fra SAP. Genereres både som HTML- og CSV-eksport til app.uio.no/usit/cerebrum/

Stedkode brukes i grupperingslogikk, som id i caching av OU-data, og inkluderes i rapport.

  • struktur: guppering av ou-er
  • indeks: stedkoder brukes for intern organisering av ou-er
  • output: stedkode brukes i rapport
contrib/no/uio/generate_active_accounts_report.py (uio)

Rapport over personer med flere aktive brukerkontoer, også kjent som high score-listen.

contrib/no/uio/generate_old_ephorte_roles_report.py

Ikke i bruk? Rapport over personer med ePhorte-roller, men uten tilknytninger.

Inkluderer stedkode for hver rolle i rapport.

  • output: stedkode brukes i rapport
contrib/no/uio/user_per_sko.py (uio)

Lager statistikk over brukerkonti per OU, gruppert på ulike nivåer (faktultet, institutt, avdeling).

Rapport til rapportering@usit.uio.no

  • struktur: guppering av ou-er
  • indeks: stedkoder brukes for intern organisering av ou-er
  • output: stedkode brukes i rapport

4.2   Importer

contrib/no/hia/import_SAP_OU_id.py (uia, nih, nmh, hiof)

Brukes for å oppdatere OU-er med identifikator fra DFØ-SAP via FS (ou.xml).

contrib/no/hia/import_FS.py (uia)

Bruker stedkode for all mapping av tilknytninger

contrib/no/import_OU.py (hiof, nih, nmh, uia, uio, uit)

Import av OU-er fra en eller flere kildefiler, og ulike filformater. Bruker utelukkende stedkode for å oversette fra kildesystem til Cerebrum-OU.

contrib/no/uio/import_from_FS.py (uio)

Bygger XML-cache for FS, bl.a. (ou.xml). Har eget format på OU-filcache?

contrib/no/uio/import_HR_person.py

Tidligere sap2bas.xml-import av persondata fra SAPUiO. Ikke lenger i bruk, erstattet av consumers/no/uio/consumer_sap.py, men kan fungere som en slags referanseimplementasjon av HR-import?

Merk at OU-import skjer i contrib/no/import_OU.py, og antaes å ha blitt gjort før import av persondata.

contrib/no/uit/process_systemx.py (uit)

Bygger og styrer brukerkonto for personer hentet fra SYSX (gjester?). Stedkode brukes i konfigurasjon (+ noe hardkoding) for å bestemme om gjest skal ha exchange-spread.

Stedkoder inkluderes også i en e-posttekst som køes for å varsle den som er ansvarlig for gjesten om at bruker har blitt bygget eller endret på av automatikken. E-post fra denne logikken sendes aldri ut (mailq)?

contrib/no/uit/import_from_FS.py (uit)
Samme bruk som contrib/no/uio/import_from_FS.py
contrib/no/uit/process_ou_groups.py (uit)

Bygger grupper på format "ou_group:<stedkode>:<aff-type>" for alle OU-er.

contrib/no/uit/process_paga.py (uit)

Bygger og styrer brukerkonto for personer hentet fra Paga (ansatte). Stedkode brukes i konfigurasjon for å styre exchange-spread.

contrib/no/uit/generate_ou.py (uit)

Henter og sammenstiller OU-data fra flere kilder til en samlet OU-importfil (FS-format, ou.xml).

contrib/no/uit/import_flyt.py

Import av personer fra Feide. Personer knyttes til stedkode fra konfigurasjon ut fra eduPersonPrimaryAffiliation og eduPersonEntitlement.

contrib/no/uit/populate_fronter_groups.py (uit)

Genererer Cerebrum-interne grupper for FS-objekter (undervisningsenheter, kull, osv). Noen av gruppene som genereres er rollegrupper for et gitt FS-objekt, hvor roller for et gitt FS-objekt kan tildeles ut fra rolle ved en OU-en som FS-objektet er knyttet til.

Stedkoder benyttes for å identifisere OU-er i FS, og brukes derfor til det samme her.

contrib/no/uit/process_students.py (uit)
Samme bruk som contrib/no/uio/process_students.py
contrib/no/uit/import_PAGA.py (uit)

Import av persondata fra HR-systemet Paga.

Stedkode benyttes for å knytte ansatte til riktig OU i Cerebrum, og for å finne OU i Cerebrum hvor besøksadresse kan hentes fra.

contrib/no/uit/import_systemx.py (uit)

Import av persondata fra SYSX (gjester?).

Stedkode benyttes for å knytte personer til riktig OU i Cerebrum.

contrib/no/uit/process_flyt.py

Bygger og styrer brukerkonto for personer hentet via Flyt-løsningen. Stedkode brukes i konfigurasjon for å bestemme om gjest skal ha exchange-spread.

contrib/no/uit/generate_paga_persons.py (uit)

Konverterer CSV-fil fra Paga til XML, for videre bruk i Cerebrum. Stedkode benyttes som OU-identifikator i begge filene.

contrib/no/uit/process_uit_email.py

Genererer epost-adresser for (nye) brukere. Filtrerer stedkoder i konfigurasjon for å sikre at svartelistede OU-er ikke får exchange-konto.

contrib/generate_accounts.py (hiof, uia, uio)

Generell brukerkonto-oppretting/automatikk. Stedkode logges dersom stedkode-støtte finnes i Cerebrum.

  • output : stedkode brukes som OU-identifikator i logg
contrib/populate-automatic-groups.py (hiof, uia, uio)

Bygger grupper basert på ou-tilknytning. Grupper navngies/identifiseres med stedkode - stedkode benyttes for å identifisere OU-løse grupper.

4.3   Eksporter

contrib/no/hia/export_xml_fronter.py (uia)

Mye logikk, organisering, gruppering som bruker stedkode og stedkode-logikk (f.eks. fakultet for envher SKO=<f><i><a> er <f>0000)

contrib/no/hia/export_acl.py

Ser ikke ut til å være i bruk. Eksport av OU-tre og tilknytninger på ABCEnterprise-format. For adgangskortsystem?

contrib/no/output-ou-structure.py

Ikke i bruk/debugverktøy. Lager en pretty-print av OU-tre fra importfiler eller Cerebrum-database. Bruker stedkode som OU-identifikator både i logikk og output.

contrib/no/generate-cristin-export.py (nih, hiof)

Genererer XML-eksport for CRISTIN. OU-er identifiseres med stedkode i eksport ("institusjonsnr", "avdnr", "undavdnr", "gruppenr").

  • output_
contrib/no/uio/dump_to_UA.py (uio)

Genererer diff-eksport til UA (Lenel OnGuard). Bruker ansattroller fra sap2bas.xml med stedkode.

TODO: En egen mikrotjeneste oppdaterer OnGuard direkte med SAP-data, vi venter egentlig bare på ack om å skru av denne eksporten.

contrib/no/uio/generate_cristin_export.py (uio)

Genererer XML-eksport for CRISTIN. Skiller seg fra den generelle CRISTIN-eksporten ved at sap2bas.xml brukes som datagrunnlag, og Cerebrum kun benyttes for å supplere med brukerkonto, e-postadresse, o.l.

contrib/no/uio/sync_ephorte_persons.py (uio)

ePhorte-integrasjon - kommuniserer med ePhorte/evry sin SOAP-WS for å levere informasjon om personer, brukerkonti, roller. Stedkode bruker som identifikator i API-et, og all kommunikasjon av OU-relaterte data bruker stedkoder.

contrib/no/uio/faculty-employee-listing.py (uio)

Sammenstiller data om ansatte fra sap2bas.xml og Cerebrum, per fakultet. Eksporten inkluderer bl.a. tilknytning til stedkode, og intern logikk i scriptet bruker stedkode for å knytte OU-data fra sap2bas.xml til OU i Cerebrum.

contrib/no/uio/populate_ephorte.py (uio)
ePhorte fullsync? Mer eller mindre samme bruk av stedkoder som contrib/no/uio/sync_ephorte_persons.py.
contrib/no/uit/export_oid.py (uit)

Eksport til webportal (paga?) med informasjon om ansatte og ansatt-tilknytninger.

contrib/no/uit/generate_sysx_ouoptions.py (uit)

Konverterer OU-tre fra Paga til et format som kan benyttes i SYSX. Stedkode brukes som OU-identifikator. Cerebrum-database er ikke involvert - dette er en ren konvertering.

contrib/no/uit/export_ad.py (uit)

Stedkode brukes for å koble data fra Paga (ansettelsesforhold) til Cerebrum-tilknytning. Alle ansettelsesroller blir med i AD-eksporten, med stedkode for identifisering av OU.

contrib/no/uit/export_safecom.py (uit)

XML-eksport til Safecom - inkluderer tilknytning per bruker, hvor OU representeres som en kommaseparert liste med OU og parents. Hver ou identifiseres med akronym.

Stedkode hentes ut og passeres rundt i scriptet, men det ser ikke ut til å faktisk brukes til noe som helst.

contrib/no/uit/generate_temp_employee_xml.py (uit)

Eksport av midlertidig vitenskapelig ansatte. Bruker stedkode for å koble OU i Paga-data til Cerebrum-OU. Inkluderer stedkode for OU i eksport, og bruker stedkode-logikk for å identifisere fakultetstilhørighet for OU.

contrib/no/uit/export_cristin.py (uit)

Genererer XML-eksport for CRISTIN. Skiller seg fra den generelle CRISTIN-eksporten ved at importfiler brukes som datagrunnlag, og Cerebrum kun benyttes for å supplere med data.

I denne eksporten brukes derfor stedkode både som OU-identifikator i eksportfil og i intern logikk.

contrib/no/uit/ad_export_autogroups_undervisning.py (uit)

Genererer eksport av emnegrupper for studenter i AD.

Eksporterer FS-grupper (populate_fronter_groups.py) under egne navn til AD. Gruppene kobles tilbake til FS-data og stedkode - som igjen benyttes for å koble gruppen opp mot Cerebrum-OU for å hente ut fakultetsnavn, instituttnavn, avdelingsnavn.

contrib/no/uit/export_securimaster.py (uit)

Eksport av person, brukerkonto, tilknytning. OU identifiseres med stedkode i eksportfil.

contrib/no/export_abc.py (hiof, nih, nmh, uia)

ABCEnterprise-eksport for UH. Henter FS-objekter direkte fra FS, og eksporterer disse med OU-tilhørighet (stedkode). Eksporterer alle relevante tilknytninger, hvor OU identifiseres med stedkode.

4.4   Moduler

Cerebrum.modules.OrgLDIF (alle UH, ofk)

Konfigurasjon, mapping av Affiliation -> diverse.

Parsing av aff/status@sko -> aff code, status code, ou_id - brukes (potensielt) av generate_org_ldif.py, UiO sin mixin til generate_posix_ldif.py.

Ser ut som denne typen konfigurasjon kun er i bruk for randsone-eksport (DNVA, NKVTS)

Cerebrum.modules.ou_disk_mapping.bofhd_cmds (uio)

(Ny) konfigurasjon av disk for hjemmeområde - for bruk i ansattautomatikk. Stedkode brukes for å finne OU fra brukerinput, og for å kommunisere OU tilbake til bruker.

  • indeks: input fra bofh-klient
  • output: output til bofh-klient
Cerebrum.modules.no.hia.cim_datasource (uia)

Stedkode benyttes for å skille mellom campus?

  • struktur: siste to siffer i stedkode -> campus?
Cerebrum.modules.no.uio.PostmasterCommands (uio)

Postmaster webservice, brukes for oppslag på stedkoder.

Cerebrum.modules.no.access_FS (alle UH)

OU identifiseres med stedkode i FS

Cerebrum.modules.no.uio.OrgLDIF (uio)

UiO-mixin som legger på en multivalued uioPersonScopedAffiliation per objekt i person-treet. LDAP-scripts genererer opp en uioPersonScopedAffiliation1 per uioPersonScopedAffiliation ut fra org-treet.

Cerebrum.modules.no.uio.bofhd_uio_cmds (alle UH, ofk, tsd)

Mange bofhd-kommandoer, som også benyttes utover uio. All kommunikasjon med sluttbruker som omhandler OU benytter stedkode

Cerebrum.modules.no.uio.EphorteWS (uio)

Klientbibliotek for ePhorte-kommunikasjon, brukes i contrib/no/uio/sync_ephorte_persons.py, contrib/no/uio/populate_ephorte.py.

Cerebrum.modules.no.uio.access_LT

Ikke lenger i bruk.

Cerebrum.modules.no.uio.voip.voipAddress (uio)

Henter ut stedkode for eier av en voip-telefon (voipSKO).

Informasjonen ender opp i voip-treet i ldap (contrib/no/uio/generate_voip_ldif.py)

Cerebrum.modules.no.uio.voip.bofhd_voip_cmds (uio)

Vedlikehold av voip-konfigurasjon, oppslag i voip-konfigurasjon.

Cerebrum.modules.no.uio.bofhd_ephorte_cmds (uio)

Vedlikehold av ephorte-konfigurasjon (roller)

Cerebrum.modules.no.uio.PosixLDIF (uio)

UiO-mixin som legger på uioAffiliation og uioPrimaryAffiliation for alle relevante brukere i users-treet.

Noe lik funksjonalitet som i OrgLDIF-mixin for UiO, men:

  • Kun affiliations knyttet til bruker er inkludert (account_type)
  • primary aff har et eget attributt i stedet for å kodes inn i verdi
  • primary aff styres av prioritering i account_type
Cerebrum.modules.no.uio.AutoStud (alle UH)

Konfigurasjonsfilformatet til studentautomatikken bruker stedkode for å tildele "studentprofiler" til personer fra FS.

Dette gir konfigurasjon av regler for ulike studier på ulike OU-er, f.eks. masterstudent på hf vil havne i gruppe for masterstudenter på hf, få unike spreads, havne på egne disker, osv...

Cerebrum.modules.no.uit.OU (uit)
UiT-mixin for å gi alternativ oppførsel i OU-objekt. Hos UiT har ikke alle OU-er stedkode (SITO) - overstyring av OU.find() gjør det mulig å slå opp disse. UiT har også støtte for å gi expire_date til OU-er, selv om denne funksjonaliteten ikke lenger er i utstrakt bruk.,
Cerebrum.modules.no.uit.bofhd_uit_cmds (uit)
UiT sine overstyringer av Cerebrum.modules.no.uio.bofhd_uio_cmds
Cerebrum.modules.no.hiof.ADMappingRules (hiof)

Oversetting av tilknytning til OU til AD-attributter. Brukes av contrib/no/hiof/process_ad_spread.py. Stedkode-konfigurasjon er hardkodet i kode.

Cerebrum.modules.ad2.ConfigUtils (nih, nmh, ofk)

Implementerer filtrering av brukerkonti på OU fra konfigurasjon. Alle som benytter seg av Cerebrum.modules.ad2-synk har indirekte mulighet for å konfigurere opp bruk av funksjonaliteten - kun nih, nmh og ofk bruker dette i sin konfigurasjon. Kun nmh filterer på stedkode.

Cerebrum.modules.xmlutils (Alle uh)

Objekter som representerer kildedata fra XML-filer (sap-/fs-cache). Bruk er dokumentert i importer/eksporter, tagget med kildesystem.

Cerebrum.modules.bofhd.bofhd_email (uio, uia, uit, hiof)

Konfigurasjon av epost-domener for ulike tilknytninger.

Cerebrum.modules.bofhd.bofhd_core (alle-ish)

Implementasjon av oppslag på OU, inkludert stedkode, fra brukerinput. De fleste bofh-kommandoer som slår opp OU fra brukerinput går gjennom denne implementasjonen eller bofhdutil.

Cerebrum.modules.bofhd.utils (alle-ish)

Implementasjon av oppslag på OU, inkludert stedkode, fra brukerinput. De fleste bofh-kommandoer som slår opp OU fra brukerinput går gjennom denne implementasjonen eller bofhd_core.

Cerebrum.modules.bofhd.bofhd_access (alle-ish)

Oppslag på bofh-tilganger (access ou)

  • input
Cerebrum.rest.api.v1.ou

Stedkode inkluderes i output fra OU-endepunkt i API-et.

Av fhl
Publisert 29. apr. 2020 14:40