Hi Sucher,
Also nochmal zum Thema „Source of Truth“. Ja – im Prinzip geht das alles auf dem v7-Server aber eben nur im Prinzip:
Die Zugehörigkeit von Schülern zu Klassen ist implementiert; nicht aber die gesamte Obestufenstruktur (die natürlich ungleich komplizierter ist, da hier ja individuell gewählt wird). Es sind bei uns also in jedem Schuljahr ca 300 Oberstufenkurse vorhanden, die im Prinzip genauso wie Klassen aus einem Kurslehrer und den dazugehörigen Schülern bestehen. Natürlich könnte man das alles als Projekte anlegen lassen aber so ist es imho nicht gedacht. Wir gehen bei uns daher im Moment den Umweg, dass diese ganzen Kurse über CSV-Import bei moodle importiert werden. Das ist immer enorm aufwändig.
Daher wäre es natürlich elegant, wenn im keycloak auch die Kursstruktur der Oberstufen mit abgebildet werden könnte. Also mit zusätzlichen Attributen pro Schüler wie z.B.:
Wie auch schon im Parallelthread festgestellt, gilt jedoch leider:
Es gibt Plugins für Moodle, die OIDC oder SAML mit Keycloak integrieren. Einige können zusätzliche Claims wie Gruppen auslesen, aber eine vollständige automatische Kursverwaltung anhand von Keycloak-Gruppen gehört nicht zum Moodle-Standard. Häufig sind dafür Anpassungen oder zusätzliche Plugins nötig. (das war eine KI-Antwort!)
Interessanterweise schlägt die KI dann weiter vor:
Was ich für eine Schule empfehlen würde
Wenn du ohnehin Keycloak als zentrale Benutzerverwaltung aufbaust, würde ich Keycloak als „Single Source of Truth“ für Benutzer und Gruppenzugehörigkeiten nutzen.
Dann könnte ein kleines Synchronisationsprogramm:
die Gruppenstruktur aus Keycloak lesen,
fehlende Moodle-Kurse anlegen,
Schüler automatisch einschreiben,
Moodle-Gruppen aktualisieren,
und dasselbe für Nextcloud, Matrix oder andere Systeme erledigen.
Der Vorteil ist, dass jede Anwendung ihre eigene interne Struktur behält, aber alle aus derselben Quelle synchronisiert werden. Das ist deutlich robuster, als sich darauf zu verlassen, dass jede Anwendung OIDC-Gruppen identisch interpretiert.
ja.. klar.. oberstufenkurse…
also ob du die jetzin keycloak einpgflegst oder ins AD ist ja gleich viel Abreit.. solange die Arbeit einmalig stattfindet, an einer stelle…
keycloak holt sich die gruppen ja vom lmn, also ist es sinnvoll dass die auch da reinkommen…
leider, und ich glaub das ist das grundproblem gibt es keine saubere datenstruktur fuer die oberstufe oder ueberhaupt jeglicher unterricht der nicht im klassenverband stattfindet…
und aus dem grund gibt es wohl auch keine skripte wie man das am besten macht…
bei uns ist es an der schule so dass die kollegen die zugehorigkeit der schueler im Elektronischen Tagebuch einpflegen muessen. Da sich die Kurszugehörigkeit selbst 2 wochen nach sjbeginn noch aendern kann… und das quasi fast nur die unterrichtende lehrkraft weiss wer da aufschlaegt und von wem die anwesenheit zu pruefen ist… ist das etb ein sinnvoller ort das zu pflegen…
Nur ist webuntis (das nutzen wird) relativ kacke wenn es um daten export geht… weil die daten auf midnestens 2 dateien verstreut verteilt sind wie die kurse heissen und welcher schueler welchem kurs zugeordnet ist… vielleicht ist das bessser wenn man ne andere loesung fuer das etb ist… das weiss ich nicht…
was die ki vorschlaegt haengt ein bissle davon ab was du zuvor gefragt hast… ich halte es nicht für sinnvoll keycloak als source of truth zu nehmen wenn du das ldap backend ja schon hast… und wenn du den login in keycloak per ldap machst hast du zwangsweise ldap da dranhaengen… und am pc ueber oidc einloggen ist mir nict bekannt dass das ginge…
Genau – das ist das Grundproblem … wir haben auch WebUntis und die Kollegen verstehen „natürlich nicht“, dass sie die Schüler bei WebUntis nochmal selbst in ihre Kurse holen müssen, während das auf den anderen Plattformen halbwegs automatisch läuft.
Im Laufe der Zeit habe ich mir ein paar Scripte gebastelt, die mir hier viel Arbeit abnehmen, da passende CSV-Files erzeugt werden. Diese müssen aber dann doch wieder manuell weiterverarbeitet werden. Richtig elegant ist das nicht – aber es funktioniert.
Hier nochmal der Querverweis zu der alten Lösung von @thoschi über die moodle-REST-API und hier nochmal die Diskussion zum Thema, die vor längerer Zeit hier schon mal lief…
da wir da inzwischen wieder einiges weiter sind, ein wenig Input von meiner Seite:
lml7 als „source of truth“ funktioniert für uns aus verschiedenen Gründen schon länger nicht mehr. Wir sind da einfach bei der Hierarchisierung weiter und ich stimme Michael zu, dass zu vieles nicht abzubilden ist in linuxmuster (und ich fürchte, das liegt eben auch an den technischen Grundlagen, die zwar durch die API etwas handhabbarer werden, aber dennoch aus unserer Sicht zu viel Struktur festzurren, die nicht zur flexiblen Nutzung unserer Ideen passt (z.B. Listenlogik bei sophomorix!)
wir haben eine Menge Grips hinein gesteckt, was wir am flexibelsten füttern können. Und das ist ganz klar Keycloak. Kein Element unseres Systems bietet so viel Flexibilität für die strukturierte und produktunabhängige Informationssspeicherung. Klassen, Kurse, Jahrgangsstufen, Rollen, … wir haben inzwischen ALLES in Keycloak. Es stört keine App, die das nicht unterstützt. Und wir nutzen es einheitlich überall dort, WO etwas davon unterstützt wird.
Konkret haben wir unsere Skripte weiter entwickelt und das Ganze ist in eine Flask-Web-App gemündet, die inzwischen ungefähr folgendes macht:
Einlesen von CSVs, Transformieren von Inhalten (z.B. Ändern von Kursnamen, Ignorieren einzelner Kurse), abschließendes Schreiben in den Keycloak. Das ist so ungefähr das, was Sophomorix früher mal für unsere Schule war. CSV → strukturierte Daten in Keycloak
per Python gelangt man über eine einheitliche Zugriffsklasse an die Informationen in Keylcoak: man bekommt z.B. mit einem Python-Befehl „alle Lehrer des Schülers xyz“
ebenfalls in der App werden alle weiteren Dienste (Moodle, Nextcloud, …) per REST mit diesen Keycloak-Daten synchronisiert. Das läuft dieses Jahr vermutlich das erste Mal weitgehend produktiv
über eine Web-Schnittstelle können wir die Daten jeweils auch bearbeiten, z.B. Schüler in andere Kurse verschieben, Erstpassworte über eine eigene hemmelig-Instanz verschicken, uvm. Mit wenigen Knopfdrücken kann man das dann auch direkt in die Plattformen replizieren (idealerweise gelingt das irgendwann auch ohne IT-Admins)
technisch gibt es noch einen redis-Server als Zwischeninstanz, der das Arbeiten auf Keycloak und den anderen Plattformen repliziert und deutlich beschleunigt (1600 SuS in Moodle-Kurse zu packen, dauert; die Vorschau dazu oder andere Lesezugriffe bekommt man jetzt aber nach wenigen Sekunden)
Wir werden zweifefllos versuchen, auch den Zugriff auf Linuxmuster über die API in dieses System zu integrieren. Auch nutzt unser Keycloak derzeit noch die LDAP-Föderation (aus Keycloak-Sicht ist es ja egal, woher ein Nutzer kommt). Dennoch sehe ich kaum noch, wie und vor allem warum diese Komplexität in Linuxmuster als Quelle abgebildet werden sollte. Ich möchte an Linuxmuster (und Moodle und Nextcloud) so wenig wie möglich herumbasteln. In Keycloak Nutzer in Gruppen zu verschieben, tut erstmal niemandem weh, bis man dann synchronisiert.
Ich wünschte mir inzwischen, linuxmuster wäre strukturell etwas „offener“ - das heißt, es gäbe einfach einen Befehl, um einen Nutzer oder Rechner anzulegen, zu ändern oder zu löschen. Denn DAS brauchen wir oft und ist dann immer ein Schuss von hinten durch die Brust ins Auge.
Vor allem aber sehe ich die Bedeutung von LDAP und AD im Vergleich zu Webdiensten immer mehr schwinden. Mit Python/REST stehen uns hingegen alle Türen offen, die es so gibt. WENN es denn Türen gibt.
Damit auch abschließend zu WebUntis: es mag noch so sehr „Standard“ im Bereich Schule sein, aber was Schnittstellen angeht, ist es unverändert eine Vollkatastrophe. Und ich bezweifele, dass das „Zufall“ ist. Wir haben inzwischen Selenium-Wrapper geschrieben, die bestimmte Dinge bei Webuntis erledigen, weil es wirklich NUR einzeln mühsam zusammengeklickt werden darf (Bsp: Eltern-Schüler-Zuordnung bei bestehenden Schüleraccounts). Der Hersteller hat uns Besserung versprochen - warten wir es ab.
Randnotiz: in den Doks oder einem Foreneintrag von webuntis fand ich mal, dass spezielle Schulen für Testzwecke Zugang zu API-Schnittstellen bekommen. Wisst ihr was davon bzw. hat das mal jemand probieren können?
Ich glaube da nicht wirklich dran, dass das eine saubere Sache wäre.
Ich (immernoch und vermutlich für immer alleine mit den Fragen an meiner Schule) habe bisher an der Abbildung in lmn7 festgehalten und die Oberstufenstruktur mit Projekten abgebildet. Hab ich ja mal irgendwo erzählt. Somit ist bei mir die LMN die source of truth.
Aber ich bin auch erst dabei einen keycloak aufzustellen. Eltern sollen in die LMN7.3/LMN7.4 gewandert sein. Mein Take ist, dass ich das nicht weiterentwickle bevor WebUntis nicht den Dachschaden mit dem manuellen Eintragen von Schülern in Kurse behoben hat oder eben die Zuordnung von Schüler:innen und Eltern.
Ich würde @thoschi Skripte und Verfahren sofort auch nutzen, so ist es nicht. Ich vermute weiterhin, dass eine Anpassung an andere Schulen aber Zeit braucht. (Wir haben keine Mails für Schüler z.b…)
P.S. schön von euch zu lesen / hören. Geht jemand von euch nach Esslingen? (@thoschi, du solltest mal als Dozent eingeladen werden (@AnGry ? @toheine ?) Sind dort noch Plätze frei?
Hallo @Tobias.
Ich habe auch schon daran gedacht, es so zu machen. Die entsprechenden Scripte, die aus den Untis-Dateien die Projekte erzeugen können, sind auch alle vorhanden und funktionieren. Dennoch ist der Weg vom Projekt zum Moodle Kurs ja nochmal ein etwas anderer. Daher mache ich das weiterhin über CSV Dateien, um die globalen Gruppen in die Kurse einzuschreiben .
Das existiert bei mir durch python.
Grundlage sind alte lmlmoodle-skripte von Thomas.
Ein, zwei Jahre habe ich weiterentwickelt. Jetzt hoffe ich einfach, dass es noch so klappt.
Die Motivation schwand als klar war, dass bw.schule - Moodle kommt und die REST-API von Moodle dann nicht verwendet werden kann. (Kann sie? Ich vermute nicht. Wo käme das Land BW hin, wenn das ginge?)
Wir haben noch unser eigenes Moodle mit aus dem Grund - weil ich das Moodle mit meinen Skripten am Anfang des Schuljahres aus unserer LML mit DAten füttere.
Es ist ganz nützlich, wenn man solche Skripte hat, weil man dann auch mal spontan etwas generieren kann, wenn jemand „für jede TEilklasse alle Namen + Usernamen + generiertes einmaliges Passwort“ oder so ein Quatsch anfordert…
Die Entwicklung geht gerade in dieser Richtung, um ein System offener, flexibler und einfacher zu handeln, selbst wenn es noch viele Arbeit gibt.
@Tobias : falls du von Ende Oktober sprichst, werde ich auch dabei in Esslingen sein.
Ich würde mir auch wünschen, dass wir uns (auch mit @thoschi und alle die rund um LMN skripten) treffen um eure Erfahrungen zu sammeln