LPS:IdM/midPoint/Stag

Z HelpDesk

Info

Model v midPointu

MidPoint-Stag.png

Resourcy

Stag číselníky

  • konektor: connector-stagc
  • WSDL: https://stag-demo.zcu.cz/ws/services/soap/ciselniky?wsdl
  • volání (viz kód v connector-stagc.git):
    • getHierarchiePracovist
    • getSeznamPracovist
    • getCiselnik
  • co hlídat:
    • pracoviště bez rodiče
    • neaktivní pracoviště
    • pracoviště bez vazby na Stag (automaticky by už měla být jako neaktivní)
    • ?visící global role?
    • pracoviště bez "GLOBAL" rolí
  • deaktivace:
    • pracoviště: v midPoint zůstávají, jen disabled
    • global role: při zrušení pracoviště mizí hned
kind objectClass intent strom
org pracoviste pracoviste orgType='pracoviste-org-str'
entitlement doktorandGroup global-doktorand-group roleType='stag-global-group-doktorand'
entitlement subjectGroup global-group-subject roleType='stag-global-group-subject'
entitlement studentGroup global-group-student roleType='stag-global-group-student'
org typStudiaGroup global-typ-studia orgType='stag-global-typ-studia'
org formaStudiaGroup global-forma-studia orgType='stag-global-forma-studia'
  • pracoviste:
    • pouze platné, zneplatněné a smazané v midPointu zůstávají
  • global-doktorand-group: pouze katedry
  • global-group-subject: pouze katedry
  • global-group-student: pouze fakulty
  • global-typ-studia: podle číselníku TYP_OBORU
  • global-forma-studia: podle číselníku FORMA_OBORU_NEW

Stag studenti

kind objectClass intent strom
account AccountObjectClass student -
entitlement CustomStudiumObjectClass studium roleType=studium
entitlement CustomPredmetObjectClass predmet roleType=predmet

Propojení

Primární ID u osob: idOsoby (v databázi je to OSOBIDNO)

  • ve IS/Stag může osoba úplně zmizet (merge duplicit, mazání uchazečů, co se dostali až do studentů), ale idOsoby se nerecykluje
  • to se v IS/Stag recyklovat NESMÍ, jinak by došlo k záměně identit

Korelace u osob: (více matchů vrátí konflikt, viz také #rodCisloOld a RT #308334)

  • ri:idOsoby=idOsoby
  • ri:rodCislo=rodneCislo
  • ri:rodCisloOld=rodneCislo
  • ri:idExterni=employeeNumber

Primární ID u studijních rolí: lokalniId (studijní číslo)

  • bacha, studijní číslo se v IS/Stag recyklovat může - studium se může přepojit mezi osobami (merge duplicit) nebo může jít o jiné studium patřící jiné osobě (pokud je původní studium úplně smazané v IS/Stag)

Korelace u studijních rolí:

  • ri:lokalniId=identifier && subtype="studium"

liveSync

U liveSync je třeba dát pozor - změny ze selectChangedOsoby() a selectChangedRole() se ukazují pouze tam, kde se staly. Např. Stagem vypočítávané atributy u osob se za změnu osoby nepovažují.
==> pro liveSync u osob bereme změny ze studijních rolí i z osob

U studijních rolí je většina změn.

Také pozor na závislosti objektů - při výpočtech u osoby v midPointu je potřeba mít již nachystané role. liveSync je nastaven, aby bral osoby se zpožděním oproti studijním rolím - poslední 1,5 minuty u osob se odkládá na příště.

Poznámky

Atribut rodCisloOld:

  • viz RT #308334
  • bere se z tabulky ROD_CISLO_ZMENY (položka rod_cislo_old, propojení podle rod_cislo_new)
  • v tabulce jsou veškeré změny, vč. změn v tabulce učitelů, kde jsou i externisti s nesmyslnými RČ; bacha, dělá se podle toho propojení! snad to tak moc nevadí: u nových identit to není a u starších identit je pak IdM jen více paranoidní

Aributy usernameExterni, cisloKartyJIS, cisloNaKarteJIS:

  • u neaktivních studentů pokusy o jejich nastavení IS/STAG ignoruje (IdM se to tam snaží tlačit např. u zaměstnanců - drobný bug způsobující zbytečné pokusy o update, k opravení v IdM)

Atribut prijmeni:

  • v agendě je uppercasované, IdM downcasuje (není to úplně správně, ale nenaráží se na žádné potíže)
  • heuristika:
    • kapitalizace prvního pímena po jednotlivých slovech
    • kapitalizace třetího písmene u příjmení začínající "MC"
  • při uppercasování zpět (např. pro JIS) se radějí používá originál z IS/STAG bez převodů (viz např. ostré S [1])


Atribut uchazecBudouciRok:

  • (2023-09: zatím se nepoužívá)
  • RT #378241
  • zda má student podanou přihlášku na další rok
  • účel: pokud student končí, je pravděpodobnost, že bude pokračovat dále

Stag učitelé

Poznámky

  • atribut idc:
    • pokud je vyplněné idc, je záznam považován za automaticky udržovaný a nelze ručně modifikovat správci (modifikace jdou z IdM přes WS Stagu), s prázdným IDC lze učitele modifikovat administrátory ručně
    • využívají některé aplikace (např. REDOP tam potřebuje osobní čísla z Magionu, RT #286249)
  • atribut orionUsername: udržuje se jím tabulka ve Stagu ORION_UCITELE využívaná portálem
  • atributy pracZkr, pracovisteDalsi: podle zařazení uživatele (pracoviště studia v IS/STAG nebo pracovního úvazkuv Magionu)
    1. ze studia: zkratka pracoviště 1:1 podle pracoviště v IS/STAG
    2. z Magionu: prochází se hierarchie pracovišť v HR stromu směrem nahoru až ke kořenu a zkouší se vyhledat stejná zkratka pracoviště kdekoliv ve stromu pro IS/STAG; vrací zkratku z první nalezené shody; pokud nic nenajde, vrací "REK"
  • externisti:
    • záznamy se zamestnanec=N se považují za externisty - WS Stagu je nesmaže při operaci mazání, ani při operaci mazání neresetuje orion login
    • od IdM se očekává, že při založení nastaví počáteční hodnotu zamestnanec=A a pak si hodnoty nevšímá; správci si pak mohou přepnout učitele na externistu
    • externisty si mohou zakládat katedry (nelze brát jako zdroj identit - smyšlená RČ, ...)
  • mazání atributů: v update operaci nastavením na "" (v SOAP zprávě jako prázdný tag), nebo u číselníkových hodnot použití 0

Existence

  • zaměstnanci, doktorandi, další vyjímky přes roli IdM: Teachers (studenti, hostovská konta)
  • musí být přiděleno CRO ID (pro IDC)
  • musí být vyplněna státní příslušnost (povinná položka v IS/STAG, zřejmě kvuli ověřování RČ?)

Mazání

Záznam učitele nelze vždy smazat - mohou být dependence a chráněny jsou záznamy o externistech (zamestnanec=N); Stag WS nastaví platnosti na 'N' a promaže idc a pokud nejde o externistu i orionUsername.

Constrainty

  1. unikátnost (prohledávat lze podle ucitIdno, rodCislo a orionUsername):
    • ucitIdno (při pokusu o modifikaci je změna ignorována)
    • rodCislo
    • idc
    • orionUsername
  2. číselník pracovišť ze Stagu (nutno správně mapovat u zaměstnanců z Magionu):
    • pracZkr
    • pracovisteDalsi
  3. adresy (nevyplňujeme): kombinace město+PSČ+okres podle číselníků
  4. RČ: musí být platné (český formát dělitelný 11, české starší RČ nebo formát pro cizince)
  5. povinné položky:
    • rodCislo
    • statIdnoObcaName
    • ...


kind objectClass intent strom
account AccountObjectClass ucitel -

Development

  • jedná se nativní connectory v Javě
  • používá se knihovna CXF
  • k dispozici jsou unit testy - viz README.md

Učitelé

  • netolerantní atributy nutno udržovat také v cz.zcu.connectors.stagt.Utils.resetAttributes (resetování při počátečním napojování - pokud se vyrábí identita, jejíž záznam již v učitelích existuje)

TODO

Chyby ve WS IS/STAG:

  • rozpoznat výjimku v učitelích:

Generic error in the connector ConnectorInstanceIcfImpl(connector:connector-stagt(ConnId cz.zcu.connectors.stagt.STAGTConnector v1.0.0)). Reason: org.identityconnectors.framework.common.exceptions.ConnectorException(Error during query execution selectUcitele, reason: Failed to obtain JDBC Connection; nested exception is java.sql.SQLTransientConnectionException: ws_STAG - Connection is not available, request timed out after 10000ms.)->javax.xml.ws.soap.SOAPFaultException(Failed to obtain JDBC Connection; nested exception is java.sql.SQLTransientConnectionException: ws_STAG - Connection is not available, request timed out after 10000ms.)->org.apache.cxf.binding.soap.SoapFault(Failed to obtain JDBC Connection; nested exception is java.sql.SQLTransientConnectionException: ws_STAG - Connection is not available, request timed out after 10000ms.)

  • občas vznikají nekonzistence v tabulce IS/STAG INSTALL2.ORION_UCITELE - ucitIdno je smazáno, ale záznam zůstane
  • nedetekuje se pokus o založení duplicity v INSTALL2.ORION_UCITELE

Chyby v IdM:

  • netlačit login a JIS do studentů při neaktivním studiu (nevadí, jen zbytečný pokus o updaty)
  • u studijních rolí je potřeba použít sdružený klíč, např. lokalniId-idOsoby, protože číslo studia se může recyklovat