Cerebrum og ePhorte

UAIT-spesifikt designdokument omhandlende Cerebrum → ePhorte integrasjonen.

1   Intro

ePhorte er elektronisk arkivsystem ved UiO, basert på Noark-standarden. Cerebrum sender data til ePhorte gjennom en egen webservice for ePhorte, som igjen bruker Ephorte Integration Service (EIS).

Integrasjonen har gjennomgått flere utviklingsiterasjoner, i tidsrommet 2007 til 2009. Begge disse versjonene brukte en egen Java-klient for å kommunisere med ePhorte (Formodentlig fordi Python da ikke hadde et godt nok rammeverk.)

I 2015 er det laget en ny versjon av ePhorte web service, og denne kommuniserer med en Python-klient. De delene av ePhorte-syncen som trenger Java er dermed skrevet om.

Figur for dataflyten som er relatert til ePhorte:

systemoversikt.svg

2   Hva overføres?

  • Persondata
    • e-post
    • navn: fornavn, efternavn, fullt navn. Mellomnavn finnes, men overføres ikke
    • mobilnummer
    • jobbtelefon
    • brukernavn: «Initials» har brukernavn, mens «UserId» holder feide-id (med @uio.no tilføyet)
    • gateadresse
  • Roller
    • jobbtittel/rolletittel
    • rolle-id/rolletype
    • organisasjonsenhet
    • arkivdel
    • journalenhet
    • standardrolle? (boolesk)
  • Tilganger
    • tilgangskode
    • organisasjonsenhet
    • tilgang overalt? (boolesk)

Organisasjonsstrukturen overføres ikke, den oppdateres manuelt i ePhorte, da ePhorte ikke støtter dette.

Persondata hentes fra SAP.

2.1   Roller og tilganger

Roller og tilganger styres fra Cerebrum. De styres med egne kommandoer i bofh, samt at en del standardtilganger og -roller settes automatisk av Cerebrum.

3   Datamodeller

Cerebrum trenger mod_ephorte versjon 1.2 for å lagre nødvendige opplysninger. Deretter er konstanter lagret i Cerebrum.modules.no.uio.Ephorte.EphorteConstants.

Med unntak av konstanter inneholder mod_ephorte kun to relasjoner: ephorte_role og ephorte_permission.

3.1   Roller

Roller har i Cerebrum i tillegg til feltene listet opp over: stilling (streng), start_date, end_date og auto_role (boolesk).

Stilling synes ikke å være eksportert til ephorte. Start, og sluttdato brukes til ekspirering (overføres ikke i nytt EIS), og auto_role er satt hvis rollen er automatisk opprettet i Cerebrum, men brukes bare der.

3.2   Tilganger

Tilganger i Cerebrum har feltene requestee_id (account til hvem som har satt tilgang), start_date og end_date. Feltet for tilgang overalt er ikke lagret i Cerebrum, men tilganger knyttet til stedkode 999999 (egen stedkode «Ephorte, egne saker») skal gi tilgang overalt.

3.3   Spreads

Det finnes to spreads definert:

  • str(constants.spread_ephorte_person) = ePhorte_person
  • str(constants.spread_ephorte_ou) = ePhorte_ou

Disse to bestemmer hva som skal finnes i ePhorte. ePhorte_person deles ut automatisk ved tildeling av roller, og slettes når siste rolle blir borte.

3.4   Cereconf

EPHORTE_ADMINS: (str) Gruppenavn, gir superbruker: Default=ephorte-admins EPHORTE_SO_SKO: (list(str)) Stedkoder SO EPHORTE_NIKK_SKO: (list(str)) Stedkoder NIKK EPHORTE_UIO_ROOT_SKO: (str) Stedkode UiO toppnivå EPHORTE_MAIL_TIME: (list(str)) dag for utsendelse EPHORTE_DEFAULT_PERM: (str) Tilgangskode gis til alle personer med ephorte-spread (@Ephorte egne saker) EPHORTE_DEFAULT_OLD_PERM: (str) Gis i utgått form til alle personer med ephorte-spread EPHORTE_EGNE_SAKER_SKO: (str) Stedkode fungerer som en hele-enheten-kode i ephorte (None i ePhorte) EPHORTE_NEW2OLD_PERMISSIONS og EPHORTE_OLD2NEW_PERMISSIONS: (dict) mapper gamle og nye perms.

4   Scripts/businesslogikk

4.1   Cerebrum.modules.uio.no.Ephorte

Inneholder klasser

  • EphorteConstants
    • EphorteRole
    • EphorteArkivdel
    • EphorteJournalenhet
    • EphortePermission
  • EphorteRole
  • EphortePermission

4.2   Cerebrum.modules.uio.no.EphorteWS

Definerer rammeverk for å kommunisere med ePhorte.

Funksjonen make_ephorte_client() er mest praktisk å bruke for å sette opp forbindelse.

4.3   contrib/no/uio/populate_ephorte.py

Dette er et script som setter roller og tilganger i Cerebrum. Det eksporterer ikke data til ePhorte, men enhetene i Cerebrum sammenlignes med tilsvarende i ePhorte.

4.3.1   Kjøring

Bruk opsjonen --help og også contrib/no/uio/sync_ephorte_persons.py --config-help.

4.3.2   Rollepopulering

Personer får en automatisk SB-rolle (saksbehandler) for hver OU de har en ansatt-tilknytning til frå SAPUiO, gitt at OU eller foreldre-OU finnes i ePhorte. Rollen har vanligvis arkivdel=``SAK UIO`` og jouralenhet=``J-UIO``, men for FSAT brukes SAK UIO og J-UIO.

Medlemmer i gruppen cereconf.EPHORTE_ADMINS får også en systemansvarligrolle (SY for systemansvarlig) ved cereconf.EPHORTE_UIO_ROOT_SKO (med SAK UIO og J-UIO).

Automatiske saksbehandlerroller slettes også automatisk når personen ikke lenger er tilknyttet enhet.

Dersom ingen rolle er markert som standardrolle, settes én av saksbehandlerrollene som standardrolle. (Men bare hvis personen har en saksbehandlerrolle.)

Alle ansatte gis automatisk ephortespread.

4.3.3   Tilgangspopulering

Alle ansatte gis automatisk cereconf.EPHORTE_DEFAULT_PERM (AR) og en ekspirert cereconf.EPHORTE_DEFAULT_OLD_PERM (UA) ved cereconf.EPHORTE_EGNE_SAKER_SKO av bootstrap_account.

4.4   bofhd

Bofh har egne kommandoer for å sette roller og tilganger i ephorte. Superbruker i Cerebrum og cereconf.EPHORTE_ADMINS har tilgang til disse kommandoene.

Koden finnes i Cerebrum.modules.no.uio.bofhd_ephorte_cmds

4.4.1   ephorte add_role

Brukes for å sette tilganger. Objektet får også implisitt ePhorte_person spread hvis denne ikke har det. Det tillates å tildele rolle til en OU som ikke er i ephorte, men det gis da en advarsel.

4.4.2   ephorte remove_role

Fjerner en rolle. Det tillates ikke å slette en standardrolle hvis det ikke er personens eneste rolle.

4.4.3   ephorte list_roles

Lister en persons roller. Kun admin kan gjøre dette.

4.4.4   ephorte set_standard_role

Gjør en rolle til standardrolle. En person kan bare ha én standardrolle, så denne kommandoen fjerner flagget på andre roller.

4.4.5   ephorte add_perm

Setter en tilgang. Personen må ha ePhorte_person spread. Siden ephorte har endret tilgangskoder, settes også ev. «korresponderende» tilganger når to koder gir samme tilganger basert på (EPHORTE_NEW2OLD_PERMISSIONS og EPHORTE_OLD2NEW_PERMISSIONS i cereconf).

4.4.6   ephorte remove_perm

Fjerner tilgang. Gjør det motsatte av add_perm, og fjerner også korresponderende tilganger.

4.4.7   ephorte list_perm

Lister ut tilganger for angitt person.

4.4.8   ephorte history

Går gjennom change_log etter

  • Fjerning, sletting og endring av roller og tilganger
  • Fjerning, sletting og endring av tilknytninger i Cerebrum

4.4.9   andre

Kommandoer fra spread kan brukes, men det er ingen spesiell sjekk på tilganger til ephorte-admins.

4.5   contrib/no/uio/sync_ephorte_persons.py

Brukes til å synkronisere data mellom Cerebrum og ePhorte:

  • Personer og persondata
  • roller og tilganger

Scriptet kan også lage en rapport over hvilke roller og tilganger som skal endres.

4.5.1   Kjøring

Bruk opsjonene --help og --config-help for detaljer.

4.6   Annet

Script for å hente stedkoder, samt generering av XML-fil med java-klient er slettet.

5   Roller

ePhorte-roller i Cerebrum har følgende data som blir synkronisert:

role_type

Følgende rolletyper er definert i ePhorte:

  • AR1, Arkivansvarlig
  • AR2, Arkivar
  • AR3, eSak
  • LD, Leder/saksfordeler
  • LD LES, Leserolle Leder
  • SY, Systemansvarlig
  • SB, Saksbehandler
  • MAL, Malansvarlig
  • SUB, Superbruker
standard_role
Kan ha to verdier, 'T' og 'F', som står for True og False.
adm_enhet
stedet rollen er knyttet til, gitt som stedkode.
arkivdel

Følgende arkivdeler er definert:

  • SAK UIO, Saksarkiv ved Universitetet i Oslo
  • STUD UIO, Studentarkiv ved Universitetet i Oslo
  • EIEND UIO, Eiendomsarkiv ved Universitetet i Oslo
  • AVTALE UIO, Avtalearkiv ved Universitetet i Oslo
  • SAK SO, Saksarkiv ved Samordna Opptak
  • SAK NIKK, Saksarkiv ved NIKK
  • PERS UIO, Personalarkiv ved Universitetet i Oslo
  • KHM FORN, KHM (Kulturhistorisk museum) - Fornminnneforvaltning
  • SAK FSAT, sakarkivet ved FSAT
  • CRISTIN, Current Research System in Norway
  • FELLESKLAG, Felles klagenemnd
  • FS, Felles studentsystem
  • KHM OBJEKT, Gjenstander og objekter ved Kulturhistorisk museum
  • KLAGE SO, Klager på opptak ved Samordna opptak
  • KLAGENEM, Klagenemnder Samordna opptak
  • NASJONKLAG, Nasjonal klagenemnd
  • NI, Nasjonal institusjon for menneskerettigheter
  • NORDEM, The Norwegian Resource Bank for Democracy and Human Rights
  • OMBUDSTUD, Studentombud
  • ROMANI, Tater- / Romaniutvalget
  • UIO ENERGI, UiO Energi

eSak kan be om å få opprettet nye arkivdeler ved behov.

Fra Cerebrums ståsted er en arkivdel og et arkiv det samme. fra eSAKs ståsted er det en forskjell. Se Arkivverkets arkivterminologi for utfyllende forklaring om begrepene.

journalenhet

Følgende journalenheter er definert:

  • J-NIKK, Journalenhet for NIKK - Nordisk institutt for kvinne- og kjønnsforskning
  • J-SO, Journalenhet for SO - Samordna Opptak
  • J-UIO, Journalenhet for UiO - Universitetet i Oslo
  • J-FSAT, Journalenhet for FSAT
  • J-SMR, Journalenhet Norsk senter for menneskerettigheter
  • J-OMB, Journalenhet for studentombud
rolletittel
brukes ikke, settes til tom streng ("")
stilling
brukes ikke, settes til tom streng

6   Tilgangskoder

ePhorte-tilgangskoder i Cerebrum har følgende data som blir synkronisert:

perm_type

Følgende tilgangskoder er definert i ePhorte. Av disse er noen utgått, men de må fortsatt være registrert i Cerebrum og ePhorte. De gjeldende tilgangskodene er:

  • US, Unntatt etter offentlighetsloven ved SO
  • UN, Unntatt etter offentlighetsloven ved NIKK
  • PR, Rettssaker
  • PV, Personalsaker
  • PD, Disiplinærsaker personal
  • PO, Personers økonomiske forhold
  • AR, Under arbeid
  • OF, Unntatt etter offentlighetsloven
  • SV, Studentsaker
  • SD, Disiplinærsaker studenter
  • FO, Forskningssaker
  • AI, Anskaffelser
  • VS, Varsling studenter
  • VA, Varsling ansatte
  • OS, Studentombud

De utgåtte tilgangskodene er:

  • UO, Unntatt etter offentlighetsloven
  • P , Personalsaker
  • P2, Personers økonomiske forhold
  • P3, Disiplinærsaker personal
  • P4, Rettssaker
  • S , Studentsaker
  • S2, Disiplinærsaker studenter
  • UA, Under arbeid
  • PA, Personalsaker AKAN

Ikke alle disse brukes av arkiv-personalet, men det er ikke vesentlig for synkroniseringen.

adm_enhet
stedet rollen er knyttet til, gitt som stedkode.
requestee
Den som har gitt tilgangskode til personen, angitt ved initials. Per 22.01.2015 blir ikke dette feltet lenger overført.

7   Registrering av ephorte-roller i Cerebrum

Roller i ePhorte kan tildeles på tre måter:

  • Saksbehandler, tildeles automatisk basert på ansatt-tilknytning fra SAP.
  • Systemadministrator, tildeles automatisk på bakgrunn av medlemskap i gruppen 'ephorte-admins' i Cerebrum.
  • Manuell registrering av roller i Cerebrum (alle typer).

7.1   Saksbehandler

Alle personer med en ansatttilknytning ved UiO får automatisk tildelt standard saksbehandlerrolle (SB) i UiOs arkiv i ePhorte, 'SAK UIO'.

På samme måte får alle personer tilknyttet FSAT (stedkode 395000), NIKK (390920) og SO (352520, 2905**) tildelt standard arkivrolle i henholdsvis SAK FSAT, SAK NIKK og SAK SO-arkivene.

Saksbehandlerrollen tildeles for alle stedene som en person har ansattilknytning til dersom stedet kan mappes til et ephorte-sted, se Rollers stedstilknytning.

Når stillingen i SAPUiO som danner grunnlag for tilknytningene registrert i Cerebrum opphører, fjernes saksbehandlerrollen.

7.2   Systemadministrator

Hvis en bruker er meldt inn i gruppen 'ephorte-admins' i Cerebrum vil denne få systemadministratorrolle i ePhorte. Medlemmene i denne gruppen skal ha:

  • rollen "SY"
  • admindel "UIO" (sko 900199)
  • arkivdel "SAK UIO"
  • journalenhet "J-UIO"

Merk at utmelding fra gruppen i Cerebrum ikke fører til at systemadministratorrollen ugyldiggjøres i ePhorte. Rollen må fjernes manuelt i bofh av en systemadministrator for ePhorte. Systemadministratorroller kan også gis i bofh av en som allerede er systemadministrator.

Cerebrum: Merk at medlemmene i ephorte-admins er brukere i Cerebrum, mens det i ePhorte er personer (brukerens eier) som er systemadministator. Det kompliseres ytterligere ved at personer i ePhorte representeres av personens primærbruker fra Cerebrum.

7.3   Oppdatering av person i ePhorte

Hvis en person i dumpen fra Cerebrum ikke finnes i ePhorte fra før, skal det opprettes en ny person i ePhorte. I tillegg lagres navn, adresse, og roller i egne tabeller.

Hvis en person i dumpen fra Cerebrum finnes i ePhorte fra før, og enten navn-, adresseinformasjon eller roller er forskjellig vil disse persondataene bli oppdatert i ePhorte.

7.4   "Sletting" av person i ePhorte

Dette er ikke dette implementert i den nye synkroniseringen.

Hvis en person tidligere har hatt en eller flere roller i ePhorte og disse har blitt fjernet i Cerebrum skal personen registreres som inaktiv i ePhorte ved neste synkronisering. Personen vil da ikke lenger ha tilgang i ePhorte.

8   Synkronisering av roller

Rolledataene for hver person fra Cerebrum sammenlignes med rollene som finnes for den personen i ePhorte fra før. Roller identifieres med følgende tuppel:

(role_type, adm_enhet)

Hvis dette tuplet er likt for to roller, er rollene identiske.

Hvis en rolle fra Cerebrum ikke finnes i ePhorte skal denne opprettes. Hvis det for en person finnes en rolle i ePhorte som ikke er med i dumpen fra Cerebrum skal denne rollen slettes i ePhorte. En rolle markeres som slettet ved at dens tildato blir satt.

I den gamle integrasjonen mot ePhorte, ble roller definert med tuppelet:

(role_type, adm_enhet, arkivdel, journalenhet)

8.1   Rollers stedstilknytning

Fra SAPUiO får Cerebrum informasjon om i overkant av 600 steder (heretter kalt "uio-steder"). Stedene er ordnet i et hierarki, hvor UiO er øverste node, med fakulteter, Institutter, osv nedover i hierkiet.

I ePhorte er det definert ca 200 steder i universitetets stedstruktur som er relevante i ePhorte-sammenheng (heretter kalt "ephorte-steder"). Dette er et subsett av uio-steder og vedlikeholdes av SAPUiO i samarbeid med eSak. Disse er merket i SAPUiO med stedtype=Arkivsted.

Det er inntil videre ingen synkronisering av steder fra Cerebrum til ephorte. Dette skyldes at denne informasjonen ikke kan oppdateres vie ephortes web-service. Dermed vedlikeholdes stedene manuelt i ePhorte. Internt i ePhorte er det lagret i tabellen ADMINDEL. Synkroniseringen sjekker at det ikke er avvik mellom stedene registrert i ephorte og SAPUiO.

En rolle skal knyttes til et sted i ephorte-steder, basert på stedet personen har ansatttilknytning til. Dersom stedet personen er knyttet til ikke finnes i ephorte-steder, forsøker man å tildele rollen ved overordnet enhet i uio-steder. Hvis heller ikke dette stedet er med i ephorte-steder skal det logges en feilmelding. Feil av denne typen skal regelmessig sendes e-post-listen 'esak-hjelp@admin.uio.no'.

9   Synkronisering av tilgangskoder

Tilgangskodedataene for hver person fra Cerebrum sammenlignes med tilgangskodene som finnes for den personen i ePhorte fra før. Tilgangskoder identifieres med følgende tuppel:

(perm_type, adm_enhet)

Hvis dette tuplet er likt for to tilgangskoder, er tilgangskodene identiske.

Hvis en tilgangskode fra Cerebrum ikke finnes i ePhorte skal denne opprettes. Hvis det for en person finnes en tilgangskode i ePhorte som ikke er med i dumpen fra Cerebrum skal denne tilgangskoden slettes i ePhorte. En tilgangskode markeres som slettet ved at dens tildato blir satt.

9.1   Tilgangskoders stedstilknytning

Tilgangskoder er knyttet til steder. I motsetning til rollers stedtilknytning må tilgangskoder være knyttet direkte til et ephorte-sted.

Merk at det er opprettet to "falske" stedkoder i Cerebrum. Disse skal brukes kun i forbindelse med populering av stedkoder i ePhorte. Stedkode 999990, 'Ephorte, ufordelte saker' brukes som sted for ufordelte saker. Stedkode 999999, 'Ephorte, egne saker' brukes for å angi at en tilgangskode kun gjelder for egne saker.

10   Tilgang til ePhorte

Tilgang til bruk av ePhorte er begrenset. Det er to kriterier som må tilfredsstilles for at en person kan benytte ePhorte:

  • Personen må ha FEIDE-tilgang
  • Personen må minst en ephorte-rolle registrert i Cerebrum.

11   Oppsett av utviklingsmiljø

De delene som krever tilgang til eksterne ePhorte-systemer trenger en egen config-fil, samt passord for tilgang til tjenesten:

12   Tilganger

Ved utvikling er man helt avhengig av å kunne se på data i Cerebrum, selve ePhorte-applikasjonen og ePhortes database. Kjennskap til deler av ePhortes interne DB-skjema er nødvendig.

I cerebrum kan man se på data v.h.a. bofh-kommandoene eller se å databasen. I ePhorte-applikasjonen er man nødt til å ha rollen systemadministrator for å kunne få de nødvendige tilganger. Dette får man ved å melde seg inn i gruppen ephorte-admins.

ePhorte-applikasjonen får man logget inn ved å gå til https://ephorte2test.uninett.no/uio/ eller https://ephorte2.uninett.no/uio/ for test- og prod-miljøet. Merk at ePhorte kun virker i IE, slik at man må logge inn på en Windows-terminal e.l.

Database-aksess må man be om av trofast-drift. Hvis du har en TROFAST-bruker og passord kan du logge deg inn på test-miljøet på følgende måte:

rdesktop ephorte2test.uninett.no

Det er innstallert Oracle SQL Developer, som ligger på skrivebordet.

For prod-miljøet må du gjøre følgende:

rdesktop eph-prod1.trofast.uio.no

Der er det installert en db-klient under C:binTOratora.exe. For begge ligger passord til db under cerebrum-uio:/cerebrum/etc/passwords/ephorte-conn-(test|prod).props

13   Bugs, mangler og ting som burde fikses

  • populering av ephorte-spread og roller må kikkes på. Det ser ut til at det ikke spread alltid fjernes når det burde, noe som resulterer i at litt flere personer enn det som er riktig eksporteres til ephorte.

  • Sletting av roller foregår ved å slette rollen i bofh med kommandoen "ephorte remove_role". Rollen blir da slettet i Cerebrum og ved neste synk så vil rollen slettes i ePhorte. Måten vi sletter på i ePhorte styres av vår ePhorte-modul som kobler seg til ePhortes web-service.

    Tidligere ble sletting av roller utført ved å slette databaseoppføringen rått og brutalt. I ePhorte ser man dette ved at rollen forsvinner fra listen over roller en person har. En ulempe med denne metoden er at vi ikke har noen historikk (som vi kjenner til) over hvilke roller en gitt person har hatt.

    For å kunne beholde noe historikk bestemte vi oss for å slette roller på en annen måte, nemlig ved å sette en tildato, slik at en slettet rolle er synlig i ePhorte ved at man har en periode (startdato og tildato) som denne rollen gjaldt.

    Desverre har det vist seg at denne metoden har noen uheldige konsekvenser:

    • Hvis man har slettet en rolle for en person og man senere forsøker å opprette samme rolle (samme person, rolletype og sted) så vil ikke det fungere siden ePhorte mener rollen finnes fra før.

      Dette kan fikses ved å sette tom verdi i tildato-feltet. Går det an å gjøre via syncen?

    • Hvis en person har flere roller, og den av de som er standardrolle blir slettet, så vil ikke personen kunne logge inn i ePhorte. Det er fordi standardrollen må være et gyldig valg ved innloggingen, noe den ikke er når tildato er i fortiden.

      Dette problemet kan løses ved å legge til en sperre i bofh slik at det ikke går an å slette en rolle som er standardrolle.

    • Det kan også være andre ting vi ikke har oppdaget.

  • Fornavn kan ikke være lengre enn 30 tegn i ePhorte. Dette må vi klage på.

  • Skal vi vise slettede roller (med tildato) i ephorte_list_roles?

  • Det viser seg at det for mange personer er flere uavhengige brukere i ephorte. Finn hvor mange, hvordan dette har skjedd, og hva som kan gjøres med dette.

    ~@cerebellum > /cerebrum/bin/sync_ephorte.sh /tmp/ -p /cerebrum/etc/passwords/ephorte-conn-prod.props -d person -t Person | cut -d ";" -f 4 | grep "@UIO.NO" > /tmp/ephorte_prod_person_dump.dat ~@cerebellum > python src/uiocerebrum/hacks/find_ephorte_person_duplicates.py /tmp/ephorte_prod_person_dump.dat Fant 12147 brukere 69 personer har to eller flere brukere i ephorte: p_id 131509, brukere: ['margit', 'annmarn'] p_id 754562, brukere: ['mehwiss', 'mehwissi'] p_id 197568, brukere: ['torebul', 'torekb'] ...

  • Det er mange personer med ephorte-spread som ikke (lenger) har ansatt-aff. Kan vi få til en automatisk opprydding av dette? Bruk cerebrum/contrib/no/uio/list_ephorte_info.py for å sjekke dette.

Av jsama
Publisert 27. apr. 2015 12:12