Tämä dokumentti liitteineen sijoitetaan pilottikorkeakoulun omalle www-palvelimelle, josta CSC siirtää sen liitteineen 31.3.2008 CSC:n palvelimelle osoitteeseen http://www.csc.fi/hallinto/haka/hankkeita/projektit-ja-pilotit
Lähetä dokumentin URL mailina osoitteeseen arto.tuomi@csc.fi viimeistään 8.1.2008. Dokumentin iteroiminen samassa osoitteessa jo etukäteen on sallittua ja hyödyllistä. 


Voyagerin Patron Update ja Extract-pilotin tulokset

http://www.csc.fi/haka/

Versio

Päiväys

Editoija

Keskeiset muutokset

0.1 

7.12.2007 

JS 

 Dokumentin luonti

0.2

28.12.2007

JS

Lisäyksiä

0.3

2.1.2008

JS

Lisäyksiä ja tarkennuksia

0.4

25.4.2008

JS

Lisäyksiä ja tarkennuksia

Sisällys


1. TIIVISTELMÄ

Pilotin tavoiteena oli toteuttaa ohjelmistoratkaisu joka mahdollistaa:

 

1.     uuden LDAP rajapintaan syntyneen henkilön (eduPerson) automaattisen viemisen Voyagerin asiakkaaksi (Patron) ja

2.     uuden Voyageriin syntyneen asiakkaan (Patron) automaattisen viemisen LDAP:n henkilöriviksi (eduPerson).

 

Tavoitteena oli myös toteuttaa ohjelmistoratkaisu, joka mahdollistaa jo olemassaolevien henkilöiden yhteystietojen päivittämisen LDAP:n ja Voyagerin välillä.

 

Tavoitteena oli toteuttaa yhteiselle palvelimelle yhteinen ohjelma, joka käyttää kaikille korkeakouluille yhteisiä rajapintoja (LDAP ja Voyager).

 


2. DOKUMENTAATIO TOTEUTUKSESTA

2.1. Toteutuksen esivaatimukset

Järjestelmän rakentamisen esivaatimukset, ts. mitä samankaltaista järjestelmää havittelevan korkeakoulun kannattaa/tulee tehdä päästäkseen "lähtöviivalle" ja miksi?

2.2. Tekninen totetutus

Pilottia varten Savonia-ammattikorkeakoulun LDAP:iin lisättiin seuraavat attribuutit: svnSwVoyPatron, svnSwVoyPatronUp, svnSwVoyPatronID ja svnSwVoyPatronStatus. Attribuuttien nimeämisessä käytettiin seuraavaa tapaa: savoniaSoftwareVoyagerPatron.

 

Pilotin vaatimat ohjelmat tehtiin Perl-scriptinä Armas-palvelimelle. PatronUpLoad-ohjelma muodostaa LDAP-rajapinnasta sif-tiedostomuotoisen sisäänlukutiedoston Voyageria varten. EduPerson saa korkeakoulun jäsenyyden myötä oikeuden kirjastopalveluihin, jolloin hänelle viedään svnSwVoyPatron-attribuuttiin arvo ”Yes” (=henkilö tulee viedä kirjaston asiakkaaksi). PatronUpLoad-ohjelma tarkastelee svnSwVoyPatron-attribuutin arvoa. Mikäli arvo on ”Yes”, eduPerson viedään Voyager-kantaan. Kun eduPerson on otettu Voyager-viennin kohteeksi, asetetaan attribuutille svnSwVoyPatronUp arvo ”Up”, ettei saman rivin vientiä yritetä turhaan uudelleen.

Uusien eduPersoneiden lisäksi PatronUpLoad poimii myös ne eduPersonit, joiden yhteystiedot ovat muuttuneet.

 

PatronDownLoad-ohjelma lukee Voyager-rajapinnasta tuotetun sif-tiedostomuotoisen tiedoston ja purkaa sen LDAP:n käyttämään muotoon. PatronDownLoad sisältää sekä uudet Patronit että ne Patronit, joiden yhteystiedot ovat muuttuneet.

Kohdistaminen eduPerson- ja Patron rivillä tapahtuu ”sotu”:n tai PatronID:n avulla avulla.

Sif-tiedoston purkaminen:

 

my $base_template="

a10

a10 A25 A10 a1 A10

a10 A25 A10 a1 A10

a10 A25 A10 a1 A10

A10 A10 A10 A10 A10

A10 A30 A11

A3 A3 A3 A3 A3 A3 A3 A3 A3 A3

a1 A30 A20 A20 A10

a10 a5 a5 a5 a5 a5 a5 a5 a5 a5 a5 a5 a1 a*";

       

 

open (SIF,  "sif.pxtr.20071219.1023");

while ($line = <SIF>) {

 

my ($pid, $bc1id, $bc1, $pg1, $bs1, $bm1,

 $bc2id, $bc2, $pg2, $bs2, $bm2,

 $bc3id, $bc3, $pg3, $bs3, $bm3,

 $reg, $exp, $purge, $vdate, $vupdated,

 $cloc, $iid, $ssn,

 $st1, $st2, $st3, $st4, $st5, $st6, $st7, $st8, $st9, $st10,

 $nametype, $surname, $firstname, $middlename, $title,

 $histc, $claimsr, $shelved, $lostitems, $latemedia,

 $histb, $cancelb, $unclaimb, $histcs, $histd, $histsl,

 $unclaimsl, $acount, $loput)= unpack($base_template, $line);

 

 

Purettujen tietojen kirjoittaminen LDAP:iin (uusi eduPerson):

 

 

if (!$entry){

$dn = "cn=". $surname. ", ou=voypeople, ou=Test1, dc=ky, dc=local";

$entry = new Net::LDAP::Entry();

$entry->dn($dn);

$entry->add("cn", $cn);

$entry->add("funetEduPersonIdentityCode", $iid);

$entry->add("svnVoyPatronID", $pid);

$entry->add("sn", $surname);

$entry->add("givenname", $firstname);

.

.  

$entry->add("objectclass", [ "top", "inetOrgPerson" ]);

$conn->add($entry);

 

 

2.3. Toteutuksen työmäärä ja tarvittu osaaminen

Pilotin perusidea toteutui arvioidussa työmäärässä.

 

Asia

Työmäärä 
pilotissa

Arvio työmäärästä, kun apuna on
tässä pilotissa tuotettu dokumentaatio

Tarvittavien yhteyksien luominen Armas-palvelimelle

1 htvrk

1 htvrk.

Perl-scriptien tekeminen

 40 htvrk

5 htvrk

Pilotissa tarvittavien attribuuttien luominen LDAP:iin

1 htvrk

1 htvrk.

 

3. DOKUMENTAATIO PILOTOINNISTA

3.1. Kokemuksia pilotista

Patron Upload-osassa skandimerkkien muunnoksissa sai olla tarkkana, sillä väärä merkistö vaikutti kenttien pituuksiin. Myös LDAP:n homePostalAddress-attribuutin arvon jakaminen Voyagerin vaatimiin osiin oli melkoista laskemista.

 

4. ARVIO PILOTIN ONNISTUMISESTA

Pilotille asetetut tavoitteet saavutettiin. LDAP:n ja Voyagerin välinen tietojen päivittäminen onnistui tavoitteiden mukaisesti.

 

Käytettävissä oli Michael Doranin Texasin yliopistolle tekemä Patron Load-esimerkki sekä LDAP-kirjallisuutta, joista saatiin pohjaa toteutukselle. Esimerkeistä huolimatta LDAP yhteyden saaminen ja kirjoituksen onnistuminen vei aikaa.

5. KORKEAKOULUN JATKOSUUNNITELMAT

Patron-tietojen synkronointia LDAP:in ja MIIS:n välillä ei tässä vaiheessa testattu. Savonia-ammattikorkeakoulu aikoo kesän aikana korvata MIIS:n ILM:lla (Identity Lifecycle Manager), joten synkronoinnin testaus oli järkevää jättää samaan yhteyteen muiden ILM:n testausten kanssa.

 

Savonia-ammattikorkeakoulu ehdottaa otettavaksi käyttöön uusia kansallisia attribuutteja eduPerson ja Patron –tietojen viemiseksi automaattisesti LDAP:n ja Voyagerin välillä. Attribuutit olisivat: funetSwVoyPatron, funetSwVoyPatronUp, funetSwVoyPatronID ja funetSwVoyPatronStatus.

 

Savonia-ammattikorkeakoulu viimeistelee parametritiedostot, jolloin ohjelmat voidaan antaa myös toisten korkeakoulujen käytettäviksi.


ABSTRACT

The aim of this pilot was to execute a program, which

 

1.     transfers a new person (eduPerson) from LDAP into Voyager (Patron) automatically

2.     transfers a new person (Patron) from Voyager into LDAP (eduPerson) automatically

 

Also we had aim to execute a program, which updates existing data between LDAP and Voyager.

 

We had aim to execute a cooperative program, which uses cooperative interfaces and it is situated in cooperative server.