Import av FS-data i Cerebrum

Dette dokumentet kartlegger hvilke FS-data som importeres i Cerebrum.

1   Henting av FS-data

FS-data hentes ved å koble seg opp mot FS-databasen, og hente ut data-utplukk. Disse utplukkene dumpes til XML-filer. For mer informasjon om data som hentes, og format på disse filene, se Bruk av FS-data i Cerebrum. Lenken vil også inneholde en uttømmende liste over scripts som benytter disse filene.

2   Import av FS-data

Import av personinformasjon gjøres med scriptet contrib/no/uio/import_FS.py.

Scriptet benytter XML-filer med studieprogram-data og studieemne-data (studieprogrammer.xml, emner.xml) til å bygge opp en mapping fra ulike studieprogramkoder og emnekoder mot OU-strukturen i Cerebrum. I tillegg benyttes en XML-fil med persondata (merged_persons.xml), som f.eks. personinformasjon, fagpersoner og studentinformasjon.

Modulen Cerebrum.modules.no.uio.AutoStud benyttes for å gå gjennom hver enkelt person-datastruktur i XML-fil med persondata.

2.1   Personopplysninger

Et typisk datastruktur i merged_persons.xml kan se slik ut:

<person fodselsdato="…" personnr="…">
    <opptak … />
    <emnestud …/>
    <fagperson …/>
    <aktiv studentnr_tildelt="…" studieprogramkode="…" emnekode="…"… />
    <eksamen studieprogramkode="…" emnekode="…" … />
    <nettpubl akseptansetypekode="NETTPUBL" status_svar="…" … />
</person>

Enkelte elementer i denne datastrukturen vil typisk inneholde personinformasjon. opptak, emnestud og fagperson er typiske elementer som inneholder personinformasjon. Dette inkluderer studentnummer, adresse og mobilnummer.

Ved import, vil vi hente fødselsnummer fra person-elementet, og videre benytte dette for å matche person med allerede importerte personer i Cerebrum.

I tillegg vil følgende registreres:

Kjønn
Hentes fra fødselsnummer
Fødselsdato
Hentes fra fødselsnummer
Navn

Hentes fra et av elementene:

  • fagperson
  • opptak
  • tilbud
  • evu
  • privatist_emne
  • privatist_studieprogram
  • alumni
  • emnestud
Studentnummer
Hentes fra et vilkårlig element i person-datastrukturen med verdien studentnr_tildelt.
Adresse
Hentes fra ulike element, avhengig av type. En person kan få flere adresser fra FS.
Mobilnummer
Hentes fra et hvilket som helst element med verdien telfonnr_mobil, men lagres kun i Cerebrum dersom samtlige elementer i datastrukturen er lik.

2.2   Tilknytninger

I tillegg til å hente personinformasjon, som navn og kontaktadresse, benyttes FS-importen til å gi personer tilknytning til ulike steder i OU-strukturen i Cerebrum. Disse tilknytningene kan senere benyttes til å finne ut hvilke personer som skal få provisjonert en brukerkonto.

2.2.1   Tilknytning i Cerebrum

En tilknytning i Cerebrum benyttes for å binde en person til en ou, med en gitt rolle/tilknytningstype. En gitt person kan kun ha en tilknytingstype per OU.

Tilgjengelige typer er STUDENT, ANSATT og TILKNYTTET. FS vil kun gi tilknytninger av type STUDENT eller TILKNYTTET.

I tillegg vil hver tilknyting ha informasjon om:

Status
Varianter av tilknytning, f.eks. STUDENT/aktiv, STUDENT/opptak, TILKNYTTET/fagperson.
Opprettelsesdato
Dato for tilknytning. Dette er tidspunktet hvor en person først ble tildelt en tilknytningstype.
Sist sett

Dato for oppdatering av tilknytning. Dette er tidspunktet for når tilknytningen sist ble oppdatert/vedlikeholdt.

Verdien benyttes bl.a. for å gi forsinket sletting av tilknytninger. I stedet for å fjerne tilknytning i samme øyeblikk som kildedata for tilknytning forsvinner, så slettes tilknytninger n dager etter at den sist ble sett i kildedata.

Slettet

Når man mister en tilknytning, så fjernes den ikke fullstendig - den blir markert med en dato for sletting.

Dersom personen får tildelt samme tilknytningstype senere, så tømmes dette feltet. Personer blir med andre ord ikke tildelt en ny tilknytning, men får gjenopplivet sin gamle. Dette har relevans for opprettelsesdatoen, som da ikke blir oppdatert.

2.2.2   Tilknytning fra FS-data

De ulike elementene i person-datatstukturen har ulik betydning. Noen vil kun inneholde personinformasjon, mens noen benyttes for å finne ut hvilke tilknytninger personen skal ha i Cerebrum.

Følgende elementer kan gi tilknytning, i prioritert rekkefølge:

aktiv
Gir ikke umiddelbart tilknytning. ou(aktiv.studieprogramkode) benyttes som et filter for andre elementer - Dersom en person-datastruktur kun har opptak, kan dette gi en annen tilknytning enn en person med både opptak og aktiv.
fagperson
Første element i datastrukturen gir umiddelbart TILKNYTTET/fagperson. Dersom stukturen skulle ha flere elementer, vil kun det første gi tilknytning.
opptak

En datastruktur kan ha flere opptak-element. Hvert element vil gi første match av:

STUDENT/aktiv
Tildeles dersom datastrukturen også har et aktiv-element, hvor ou(opptak.studieprogramkode) = ou(aktiv.studieprogramkode).
STUDENT/evu
Tildeles dersom opptak.studierettstatkode = EVU.
STUDENT/alumni
Tildeles dersom opptak.studierettstatkode = FULLFØRT.
STUDENT/drgrad
Tildeles dersom opptak.studienivakode >= 900
STUDENT/opptak
Tildeles dersom ingen andre tilknytninger passer.
emnestud

Hvert emnestud-element kan gi tilknytning:

STUDENT/aktiv
Tildeles dersom person-struktur også har et aktiv-element, hvor ou(emnestud.emnekode) = ou(aktiv.studieprogramkode)
STUDENT/emnestud
Tildeles så lenge ou(emnestud.emnekode) er kjent (fra emner.xml)
privatist_studieprogram
Første element i strukturen gir umiddelbart STUDENT/privatist til ou(privatist_studieprogram.studieprogramkode)
privatist_emne
Første element gir umiddelbart STUDENT/privatist til ou(privatist_emne.emnekode).
perm
Første element gir umiddelbart STUDENT/aktiv til ou(perm.studieprogramkode)
tilbud
Hvert element gir STUDENT/tilbud til ou(tilbud.studieprogramkode)
evu
Første element gir umiddelbart STUDENT/evu til ou(evu.studieprogramkode)

En person kan kun ha en tilknytningstype (STUDENT eller TILKNYTTET) til en gitt OU.

Dersom man blir tildelt flere tilknytninger til en OU, vil enkelte filtreres bort:

  1. Tilknytningene vektes:
    • STUDENT/drgrad
    • STUDENT/aktiv
    • STUDENT/emnestud
    • STUDENT/evu
    • STUDENT/privatist
    • STUDENT/opptak
    • STUDENT/alumni (blir ikke tildelt ved import)
    • STUDENT/soker (blir ikke tildelt ved import)
  2. Og filtreres:
    • Ved flere tilknytninger til samme OU, droppes alle med lavere vekting.
    • Ved STUDENT/aktiv, STUDENT/drgrad eller STUDENT/evu, droppes alle STUDENT/emnestud.

3   Prosessering

Etter import av persondata, samt tilbakeføring til FS, kjøres studentautomatikk.

Dette gjøres med contrib/no/uio/process_students.py. Scriptet benytter også studieprogrammer.xml, emner.xml og merged_persons.xml, samt en egen konfigurasjonsfil med profiler for brukerkonto.

3.1   Profiler

Studentautomatikken benytter en konfigurasjonsfil, hvor man kan tilpasse provisjonering av brukerkonto.

Man kan lage ulike profiler for ulike fagmiljøer (f.eks. alle realfagsstudenter), og man kan ha ulike profiler på ulike studentgrupper (f.eks. alle doktorgradsstudenter, alle enkeltemnestudenter på HF).

En profil består av:

Utplukk
Matching av personer fra FS-data og Cerberum-data, hvilke personer gjelder profilen for?
Vekting
Hvordan skal profilen prioriteres dersom en person matcher flere brukerprofiler?
Byggekriterier
  • Skal det lages brukerkonto?
  • Skal brukerkonto ha hjemmeområder?
Karantener
Skal brukeren settes i karantene?
Spreads
  • Hvilke systemer skal brukeren være synlig i?
  • Hvilke systemer skal persondata være synlig i?
Grupper
Skal brukeren meldes inn i noen grupper?
Annet
  • Hvilken disk skal hjemmeområde plasseres på?
  • Hvor mye diskplass skal brukeren kunne benytte?
  • Hvor mye diskplass skal brukeren disponere til e-post?
  • Hvilken brevmal skal benyttes for passordbrev?

3.2   Prosessering av FS-data

Scriptet benytter Cerebrum.modules.no.uio.AutoStud for å gå gjennom samtlige personer i merged_persons.xml.

For hver person i importfil gjøres følgende vurdering:

  1. avbryt prosessering hvis person ikke finnes i Cerebrum (ikke importert i import_FS.py)

  2. avbryt prosessering hvis person alt har blitt prosessert (for å forhindre dobbel-prosessering av personer som finnes i både FS og Cerebrum).

  3. finn profil fra konfigurasjon (studconfig.xml), avbryt hvis ingen profil finnes for person.

  4. Finn brukere for person, og finn passende handling:

    • Kjør oppdatering av konto hvis personen allerede har en studentkonto (inkludert reservert konto og deaktivert konto)
    • Kjør oppretting av konto hvis personen ikke har konto.
    • Avbryt hvis personen har brukerkonto, men som ikke lar seg benytte som studentbrukerkonto.

3.3   Prosessering av Cerebrum-data

Vi vil også forsøke å gjøre vedlikehold av brukerkonti for personer som ikke er med i utplukket fra FS. Scriptet benytter Cerebrum.modules.no.uio.AutoStud for å gå gjennom samtlige personer i Cerebrum som har blitt tildelt et fødselsnummer fra FS.

For hver person gjøres følgende vurdering:

  1. Avbryt prosessering dersom person ikke har en studentbrukerkonto
  2. Kjør samme rutine som prosessering av FS-data

3.4   Oppretting av konto

Studentbrukerkonto opprettes ved å:

  1. Lage brukerkonto
  2. Generere passord
  3. Merke brukerkonto med trait trait_student_new

I tillegg kjøres oppdatering av konto.

3.5   Oppdatering av konto

Brukerkonto som oppdateres får følgende endringer:

  1. Gjør konto om til posix-konto, dersom profil angir posix-spread
  2. Sett standard filgruppe, dersom profil angir posix-spread, og bruker ikke alt har standard filgruppe.
  3. Legg til spreads angitt i profil.
  4. Sørg for at brukerkonto er medlem av standard filgruppe, dersom posix-bruker
  5. Forsøk å tildele hjemmeområde, dersom profil angir at brukerkonto skal ha et disk spread og bruker ikke alt har hjemmeområde for dette.
  6. Fjern karantene auto_inaktiv og auto_emailonly
  7. Hvis brukerkonto var deaktivert:
    1. Fjern gamle hjemmeområder?
    2. Merk brukerkonto med trait trait_student_new
    3. Generer nytt passord
  8. Oppdater ac_type slik at studentbrukerkonto har STUDENT-tilknytning fra person. Dette benyttes bl.a. til å skille studentbrukerkonto fra andre brukerkontoer.
  9. Legg på karantener fra profil (unntatt karantener med scope=student_disk og brukerkonto ikke har hjemmeområde)
  10. Hvis bruker har hjemmeområder, oppdater kvote.
  11. Oppdater studentgrupper med gruppemedlemsskap fra profil.
Av fhl
Publisert 21. des. 2016 15:29 - Sist endret 2. des. 2022 10:57