Innhold
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).
- 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.
- 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/
- 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?
- 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.
- 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.
- 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
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)
- input: konfigurasjon av affiliation@ou
- 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.
- 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.