School Data Sync im Detail

Auf der Seite School Data Sync (SDS) habe ich schon eine erste theoretische Einordnung dieses Verzeichnisabgleichs für Schulen und EDU-Tenants beschrieben. Nun geht es an die Praxis, die ich als Vorarbeit für eine echte Schule in NRW geleistet habe. Wie könnte man aus dem Schulinformationssystem "SchildNRW" die Stammdaten zu Lehrer und Lehrerinnen (LuL), Schüler und Schülerinnen (SuS) und teilweise auch Zuordnungen zu Klassen und Kursen verwenden, um einen Office 365 Tenant zu befüllen? Einen passenden Connector von Microsoft gibt es dazu leider nicht. Ich habe mir dazu die SDS V1-Dateien und deren Nutzung genauer anschaut.

Da ich in dem Text ganz oft die Begriffe "Lehrer" und "Schüler verwenden müsste und es korrekt ja auch "Schüler und Schülerinnen" und "Lehrer und Lehrerinnen" oder vielleicht auch "Schüler (m/w/d)" und "Lehrer (m/w/d)" schreiben sollte, habe ich die Worte als "SuS" und "LuL" abgekürzt. Diese Schreibweise scheint auch in Schulen verwendet zu werden. Wenn ich hier irre, dann bitte ich um einen Hinweis.

Voraussetzungen

Diese Seite ist nur interessant, wenn ihr Tenant folgende Voraussetzungen erfüllt:

  • Typ: Office 365 for Education
    Die Funktion ist nicht für Enterprise Tenants o.ä. verfügbar sondern nur für Schulen
  • Lizenz für School Data Sync Plan1
    In meinem EDU-Test-Tenant war die Lizenz automatisch frei geschaltet
  • Global Admin
    Nur so haben Sie erforderlichen Rechte

Wer also "nur" Microsoft 365 Business, Enterprise oder Gouvernement hat, kann hier schon aufhören weiter zu lesen. Für kleine Umgebungen ist eine manuelle Pflege möglich und größere Umgebungen werden eher mit ADSync die Identitäten verwalten.

SDS oder PowerShell?

Da die meisten Schulen lokal kein Active Directory für LuL und SuS haben und ein ADSync mit Samba nicht genutzt werden kann, dürften die meisten Office 365 EDU-Tenants ganz ohne ADSync auskommen. Das eröffnet natürlich Wege, direkt per PowerShell die Daten aus der Quelle auszulesen und in Office 365 entsprechend anzulegen. Entsprechende Kenntnisse mit "Verzeichnisabgleichen" habe schon viele Jahrzehnte (CSV2EX und CSVSync - Framework). Meine Überlegung waren:

  • Exportiere die LuL und SuS in eine CSV-Datei
    Ob das nun eine CSV-Datei mit eine "Typ" als Spalte oder mehrere CSV-Dateien sind, lasse ich offen. Bei den SuS könnte auch gleich die Klasse dabei stehen, da dies ja eine N:1 Beziehung ist und man so aus der Liste gleich die Klassen ermitteln könnte
  • Exportiere die Kurse und Klassen
    Die Kurse sind aber nicht mehr eindeutig an Klassen zuzuordnen. So werden Klassenstufen zu unterschiedlichen Religionskursen aufgeteilt und auch Spezialisierungen (Technik, Wirtschaft, Sprachen) müssten abgebildet werden.

Wenn Sie dann die Szenarien noch weiter spinnen, dann gibt es viel mehr Sonderfälle, z.B. Schüler, die Kurse Wechseln, Vertretungslehrer, die natürlich auch Kurse und damit Teams übernehmen sollen etc. Daher habe ich geschaut, was es schon gibt und Microsoft stellt mit School Data Sync (SDS) eine entsprechende Schnittstelle bereit, mit der aus ausgewählten Schulinformationssystemen (SIS) solche Stammdaten importiert werden können. Meine Hoffnung ist, dass diese Schnittstellen eine gewisse Beständigkeit haben und viele Dinge automatisieren, die ich ansonsten erst mühsam mit PowerShell schreiben müsste. SDS unterstützt dabei zwei Schnittstellen.

  • CSV-Dateien
    Das kommt mir doch entgegen, auch wenn SDS hier sogar mehrere Formate versteht
  • API
    Wenn ihr Schulinformationssystem tatsächlich aus dem Internet erreichbar sein sollte, dann könnte Office 365 per HTTPS mit OAuth-Token direkt die Daten selbst beziehen. Ich erwarte erst einmal nicht, dass dies eine Option in Deutschland ist

Also habe ich mir die verschiedenen CSV-Formate von SDS angeschaut. Sie sind sehr ähnlich aber Microsoft hat selbst eine SDS-V1 und SDS-V2 Version beschrieben, wobei die SDSV2 deutlich einfacher aber wohl noch nicht komplett ist.

SDS V1 oder V2

Ob sie nun SDS V1 oder V2 nutzen, bleibt ihnen überlassen. SDS V1 hat getrennte Dateien für Lehrer und Schüler. Wenn ihre Verwaltungssoftware ebenfalle getrennte CSV-Dateien ausgibt, dürfte SDS V1 daher besser geeignet sein.

Wenn Sie aber als Quelle ein Datei erhalten, in der LuL, SuS und noch andere Konten enthalten sind, dann könnte sie mit SDS V2 schneller zum Ziel kommen. Ich beschreibe hier SDS V1.

Muster Dateien

Microsoft beschreibt den Aufbau der Dateien sehr detailliert:

Zum Testen habe ich mir die Definition geschnappt und folgende Musterdateien angelegt.

school_data_sync_details.zip
Meine Musterdateien mit absichtlichen Fehlern und Sonderzeichen

In allen Dateien kommt eine "SIS ID" als eindeutiges Feld zum Einsatz. Dieser Werte muss nicht numerisch sein aber er muss über alle Dateien eindeutig sein. SDS geht davon aus, dass auch mehrere Schulen z.B. eines Bezirks zusammen in einem Tenant arbeiten.

Dateiname Kurzbeschreibung Beschreibung

school.csv

Liste der Schulen

Stammdaten der Schulen. Für jede Schule gibt es eine Zeile. die "SIS ID" muss eindeutig sein. Auf die "SIS ID" wird von anderen CSV-Dateien als "School SIS ID" verwiesen.

Achten Sie darauf, dass der Login-Name nicht mit einem bestehendem Konto kollidiert, welches nicht durch SDS verwaltet wird. Fremde Konten werden nicht überschrieben.

teacher.csv

Liste aller LuL

Die LuL einer Schule werden hier erfasst. Für jeden Lehrer gibt es nur genau eine Zeile. Damit ist auch vorgegeben, dass ein Lehrer nur an genau einer Schule beschäftigt sein kann. Das kann ich mir in einem Bildungsverbund mit mehreren Schulen in einem Tenant als Problem darstellen.

student.csv

Liste aller SuS

Jeder SuS hat hier einen Eintrag mit eindeutiger "SIS ID" und einem Verweis auf eine "School SIS ID"

Wenn Sie die "SDS ID" eines SuS ändern, legt er einen neuen SuS an aber lässt das alte Konto bestehen

Section.csv

Liste der Kurse

Jeder Kurs ist ein Eintrag. Ein Kurs ist z.B. ein Fach einer Klasse in einem Jahrgang. Die Liste wird also länger, wenn sie mehrere Klassen und Jahrgänge haben. Es gibt auch Kurse, die Klassenübergreifend (z.B. Sport/Religion/AGs) organisiert sein können.

Die Kurs "SIS ID" muss eindeutig sein. Wenn Sie zwei Kurse den gleichen Namen geben, dann werden beide angelegt, da es nur der Displayname ist.

Rename und Delete
Wenn Sie die SIS ID eines Kurs ändern, dann legt SDS einen neuen Kurs an aber lässt den alten Kurs weiter bestehen

StudentEnrollement.csv

Zuordnung der SuS zu Kursen

Hier werden die SuS zu den Kursen zugeordnet. Für jede Kurs <-> SuS-Paarung gibt es eine Zeile.

Wenn Sie Zuweisungen ändern, werden sowohl Additionen als auch Löschungen umgesetzt!

TeacherRoster.csv

LuL zu Kurs-Zuordnung

Über diese Datei werden den Kursen (Section) die Lehrer zugeordnet. Es ist problemlos möglich auch mehrere Lehrer zu einem Kurs zuzuweisen.

Wenn Sie Zuweisungen ändern, werden sowohl Additionen als auch Löschungen umgesetzt!

Die Beziehungen lassen sich recht gut visualisieren aber zeigen auch, dass die Benennung der Felder nicht immer konsistent ist

In "StudentEnrollment.csv" hätte ich das Feld "SIS ID" besser "Student SIS ID" genannt, damit es deutlicher ist.

Eine eigene Liste nach "Klassen" gibt es bei Microsoft so nicht. Sie können sich natürlich behelfen, indem Sie einen "Kurs" für jede Klasse zusätzlich anlegen. Ein paar Hinweise zu den CSV-Dateien, die in der Microsoft Dokumentation nicht so deutlich sind.

  • UTF-8, UNICODE
    Ich schreibe Dateien immer im UNICODE/UTF-8-Format. Damit bin ich sicher, dass auch deutsche Sonderzeichen korrekt übertragen werden. Excel scheint gerne ASCII oder Win-1252 bei CSV-Dateien zu schreiben, was die Umlaute unbrauchbar macht.
  • Spaltentrenner: Komma
    Das deutsche Excel schreibt standardmäßig immer ein Semikolon. SDS erwartet aber ein "Komma" als Trenner
  • Feld-Zeichen
    Wenn Sie in einer Beschreibung ein "Komma" verwenden wollen, dann müssen Sie das Feld in "Anführungsstichen" einbinden
  • Hinweis zur SIS ID
    Der Wert muss nicht zwingend numerisch sein. Sie sollten aber bei a-z0-9 bleien und Sonderzeichen vermeiden, denn der Wert wird z.B. bei "section.csv" für die Mailadresse des Teams herangezogen.
  • Konflikte mit bestehenden Objekten
    Sie können mehrere Sync-Jobs einrichten aber achten Sie darauf, dass alle Informationen eindeutig und referenzierbar sind. Dies betrifft die "SIS ID" aber auch z.B. Username, aus dem der UPN generiert wird.

Natürlich werden Sie die Dateien nicht von Hand anlegen, sondern aus ihrem Schulinformationssystem oder einer andere Quelle beziehen. Microsoft beschreibt die Bearbeitung mit Excel. Allerdings müssen Sie damit umgehen können, das in der USA das Trennzeichen "Komma" genutzt wird aber ein deutsches Excel das "Semikolon" erwarte. Sie dürfen also jedes mal erst "Text ins Spalten" machen, wenn sie das Trennzeichen nicht umstellen oder danach konvertieren.

Microsoft hosted auf GIT einige Beispieldateien und weitere Skripts, die ihnen das Leben einfacher machen können

https://aka.ms/sdsscripts
https://GitHub.com/OfficeDev/O365-EDU-Tools
https://GitHub.com/OfficeDev/O365-EDU-Tools/tree/master/CSV%20Samples/SDS%20v2

SDS Sync Settings

Ehe Sie im nächsten Schritt ein Sync-Profil anlegen, sollten Sie erst einmal die globalen Einstellung zur Synchronisation kontrollieren. Aus meiner Sicht sind die Standardwerte nicht optimal. Die Funktion, eine "Alle Lehrer"-Gruppe nicht standardmäßig zu aktivieren aber die "Insights" erst einmal aktiv zu stellen würde ich hinterfragen:

Auch die Benachrichtigung für den Sync würde ich einschalten. Nicht im Bereich von SDS befinden sich die ganzen Richtlinien und Einstellungen bezüglich Teams. Hier sollten Sie auch noch einmal drüber schauen, welche Berechtigungen die Teams-Benutzer bekommen. In einem EDU-Tenant hat Microsoft schon einige Richtlinien angelegt. 

SDS.microsoft.com

Die Konfiguration von SchoolDataSync erfolgt unter der eigenen Url https://sds.microsoft.com/. SDS nutzt so genannte "Sync Profile", die eine Zusammenstellung der Einstellungen eines Import sind. Den Begriff "Sync" sollten sie nicht als automatische Synchronisation falsche verstehen. Es ist ein Import von CSV-Dateien.

SDSDemo
https://www.youtube.com/watch?v=yPzCJ4eqWfM

Deploy SDS Format School Data Sync Deployment SDS Format CSVs
https://www.youtube.com/watch?v=f57_2BY7U1c

Die Konfiguration ist aber geführt und sollte kein großes Problem darstellen

Im nächsten Schritt müssen Sie bei SDS-V1 genau die angegeben Dateien mit dem vorgegebenen Namen hochgeladen. SDS überprüft dabei den Inhalt, bietet Filteroptionen zum ignorieren einzelner Spalten an und erzwingt einige Parameter:

Die Angabe eines "Ende" ist zwingend. Ich verstehe dies so, dass danach die Objekte auch wieder gelöscht werden. Das muss ich aber im Detail noch mal analysieren. Zum Import der Lehrer müssen sie die Domain angeben, optional Felder filtern und sie können hier auch gleich die Lizenz zuweisen. Sie müssen aber selbst darauf achten, dass Sie genug Lizenzen haben.

Der Dialog für Schüler ist vergleichbar:

Achtung: Die Einstellung bezüglich der Lizenzierung kann man später aktuell nicht mehr ändern. Sie müssen dann den SyncJob löschen und neu anlegen.

Zum Abschluss sehen sie noch einmal eine Zusammenfassung:

Die Verarbeitung kann durchaus einige Stunden oder sogar Tage dauern.

Fehler in der Verarbeitung finden sie im Sync-Profil. Hier habe ich absichtlich zwei CSV-Dateien mit fehlenden erforderlichen Spalten importiert.

Aus https://docs.microsoft.com/en-us/schooldatasync/school-data-sync-format-csv-files-for-sds geht ja hervor, dass "First Name" bei Neuanlagen verbindlich ist.

Die Fehler in den Dateien sind wieder lokal zu korrigieren. Sie können die Dateien nicht aus der Cloud wieder herunterladen. Beim Update müssen auch immer alle Dateien komplett hochgeladen werden. Bei einem Fehler in z.B. der Students.csv reicht es nicht nur diese Datei wieder hochzuladen.

Nicht alle Fehler verhindern die weitere Verarbeitung. Ich habe z.B. bei einem SuS auf eine Schule verwiesen, die es nicht gibt. Der Fehler wurde gut erkannt und dokumentiert.

Die restlichen SuS und LuL wurden aber sauber angelegt und auch die Teams konfiguriert.

Daten in SDS

Welche LuL und SuS importiert wurden, können Sie direkt im SDS-Portal sehen.

Sie können sehr schnell nach Lehrer und Schülern unterscheiden und suchen. Allerdings sehen Sie auch nur wirklich die Identitäten, die mit SDS verwaltet wurden. Weitere Benutzer im Tenant sind hier nicht sichtbar.

Im Sep 2020 hat Microsoft eine "Preview" eines neuen Portals vorbereitet, in der "Persons" und "Groups" zusammengefasst sind. Die Bilder könnten demnächst anders aussehen

An der gleichen Stelle können Sie natürlich auch die Gruppen oder Teams einsehen. Auch hier sehen Sie die Folgen einer falschen Codierung der CSV-Dateien hinsichtlich Umlauten:

Speichern Sie die school.csv dann einfach als "UTF-8" und starten Sie einen neuen Import, um die Sonderzeichen zu erlauben.

AzureAD -Daten im Tenant

Zuerst habe ich mit die AzureAD-Konten angeschaut. Hier sehen Sie die Lehrer und Schüler, die auch entsprechend ihres "Username" angelegt wurde. Ich habe absichtlich mal Sonderzeichen verwendet, denn bei CSV-Dateien stellt sich ja immer die Frage nach ANSI/ASCII/UNICODE/UTF-8..

Es ist also auch nicht weiter verwunderlich, dass die Konten mit Get-MSOLUser und Get-AzureADUser genauso angezeigt werden. Mir sind auch keine besonderen Inhalte in den Properties eines LuL oder SuS aufgefallen. Allerdings ist das Feld "LastDirSyncTime" leer, d.h. aus Sicht des Tenants sind die Objekte nicht wie bei ADSync "synchronisiert".

Teams im Tenant

Ich war natürlich neugierig und der erste Blick galt Microsoft Teams. Hier wurde für jede "Section" (=Kurs) ein eigenes Team mit dem Namen angelegt. Die Schüler waren als "Member" enthalten und der Lehrer war "Besitzer":

Die Mailadresse hat das Skript anhand dem Prefix "Section" gefolgt von der "SIS ID" des Kurses erstellt. In der Section.csv gibt es leider kein Feld, mit der man die Mailadresse vorgeben könnte. Hier wäre für Deutschland vermutlich eine Nacharbeit erforderlich. Es gibt auch nur einen Kanal "General" aber später in Teams lautet in meinem Tenant dann noch "Allgemein".

Die Einstellungen unter "Settings sind":

Conversations
   Allow editing of sent messages                              : On
   Allow deleting of sent messages                             : On
Channels
   Team members can add channels or edit existing ones         : Off
   Team members can add, edit or remove tabs                   : Off
   Team members can add, edit or remove connectors             : Off
   Team members can add, edit or remove apps                   : Off
   Team members can add private channels or edit existing ones : Off

Das Team selbst hat schon vorgefertigte Reiter im Kanal.

Mir fällt hier auf, dass der Kanal "Allgemein"  (Deutsch) heißt, obwohl er intern "General" benannt ist. Interessant ist auch die Funktion, dass das Team noch gar nicht "aktiv" ist und der Lehrer das Team erst aktivieren muss:

In Exchange ist das Team als Microsoft 365 Group sichtbar:

Beachten Sie rechts unten den Punkt "Privacy", der auf "Privat" gestellt ist. Das sehen Sie auch mal in den Details, die aber zugleich zeigen, dass auch hier noch Verbesserungspotential hinsichtlich der Sprache besteht.

Kennwort

Sie haben sicher gesehen, dass in der Datei "teachers.csv" und "students.csv" zumindest bei der Erstanlage auch ein Kennwort hinterlegt werden muss. Office 365 generiert hier keine eigenen zufälligen Kennworte. Für die erste Anmeldung ist dies der vermutlich beste Weg. SDS ist aber keine Synchronisation. Sowohl LuL und SuS können ihr Kennwort natürlich selbst ändern und werden bei der ersten Anmeldung sogar gezwungen, es jetzt zu ändern.

Das Kennwort wird anhand der CSV-Datei nur beim Anlegen des Kontos gesetzt.

Wenn Sie daher auch später noch einmal die gleiche CSV-Datei per SDS importieren, dann wird ein schon geändertes Kennwort nicht mehr überschrieben. Das eröffnet natürlich auch den Weg das Kennwort anderweitig setzen zu lassen, z.B. durch eine lokale Software. Viele Schulen haben ja schon heute diverse lokale Dienste (Samba-Server, Windows Desktop Anmeldung, WLAN-Zugang etc.), an denen sich LuL aber auch SuS anmelden

Lifecycle/Deprovisioning

Irgendwann ist auch das schönste Schuljahr vorbei und die Schule muss sich um die Daten ihre Gedanken machen. Was ist hier der richtige Weg. Löschen wir zum Jahreswechsel alle Schüler und Lehrer samt Kurse, damit es im neuen Jahr wieder frisch weiter geht?

Das klingt aus Datenschutzüberlegungen gut. Aber ich habe z.B. keine Export-Funktion gefunden, mit denen die Schüler "ihre Aufzeichnungen" dauerhaft behalten können. Auf der anderen Seite gibt es Kurse, die vielleicht mehrere Jahre mit gleiche Zusammensetzung bestehen bleiben. Da wäre ein "Neustart" nicht erwünscht. Allen wird man es nicht recht machen können und wenn ihnen die Arbeitsweise von SDS nicht gefällt, können Sie ja immer noch ein eigenes System per PowerShell entwickeln. SDS verfährt wie folgt.

Aktion Ergebnis

Löschen eines Kurs in section.csv

Kurs bleibt bestehen!

Löschen eines LuL in teachers.csv

Lehrer bleibt bestehen

Löschen eines SuS in students.csv

Schüler bleibt bestehen

Löschen des SDS Sync Jobs

Komplette Daten bleiben bestehen

Ablauf des SDS Sync Jobs

Komplette Daten bleiben bestehen!

Sync-Job neu einrichten

Die Objekte werden anscheinend anhand der "SID ID" wieder zugeordnet. Bereits gelöschte LuL/SuS werden aber nicht aus "Delete Users" im AzureAD wieder hergestellt.

Sie sehen schon: SDS löscht erst einmal gar nichts automatisch und vermutlich ist das auch die beste Herangehensweise um irrtümlichen Datenverlust zu verhindern. Im Umkehrschluss bedeutet dies aber, dass Sie selbst am Ende des Jahres sich Gedanken über einen Aufräumprozess machen müssen.

Aber auch hier hilft ihnen SDS, da Sie bei jedem Sync-Profil ja ein Verfallsdatum eingeben können. Nach Ablauf dieses Zeitpunkts ändert sich das Aussehen

Sie können das Profil per "Unlock Profile" wieder zur Bearbeitung freischalten oder quasi in das neue Jahr übernehmen. In der Regel werden sie aber zum nächsten Schuljahr erst einmal die alten Teams beseitigen. Dabei hilft ihnen SDS über einen Report, den Sie zum Ende des Jahres oder auch zwischendurch generieren können.

Der Bericht enthält umfangreiche Informationen über ihre Teams um inaktive Teams zu erkennen. Die CSV-Datei hat aber noch eine zweite Funktion: Sie können damit Teams löschen lassen. Löschen Sie also vor dem nächsten Schritt erst alle Zeilen mit den Teams, die sie behalten wollen. Denken Sie auch hier wieder ein "Komma" statt "Semikolon" bei einem deutschen Excel.

Sie müssen aber nichts "Löschen". sondern können die Teams auch "archivieren" und die Anmeldekonten bekommen beim Anzeigename (Displayname) Mailalias (MailNickname) und "SIS ID" ein "Expmmyy_" vorangestellt.

Sie können natürlich auch manuell daran gehen und bestimmte Teams, LuL und SuS manuell als Global Admin löschen. Das geht selbst, wenn der Sync weiter aktiv ist. Die Objekte sind seitens AzureAD nicht gesperrt.

Aktion Ergebnis nach nächstem FullSync

LuL/SuS gelöscht

Durch einen "Reset Sync" werden die gelöschten LuL/SuS wieder neu angelegt und berechtigt. Die gelöschten Konten bleiben in "Deleted Objekts" und können aufgrund des UPN-Konflikts dann nicht mehr wieder ohne Korrektur hergestellt werden.

Teams wird gelöscht

Team wird frisch angelegt. Das vorher gelöschte Team bleibt "gelöscht"

Automatisierung

Je größer eine Schule ist und je mehr Änderungen an den Stammdaten anstehen, desto eher kommt der Wunsch nach einer Automatisierung auf. SDS erlaubt gleich mehrere Verfahren.

Ich erwarte nicht, dass Schulen im ersten Schritt eine Automatisierung umsetzen. Der Aufwand lohnt vielleicht nur für deutlich größere Schulen oder Verbundschulen, bei denen eine Zentral-IT die Plattform betreibt.

Verfahren Beschreibung

RESTAPI

Die Daten für SDS können manuell per WebPortal als "Global Admin" hochgeladen werden. Sie können aber auch einen Automatismus einrichten. Dazu könnte ihre eigene Datenplattform eine API bereitstellen, die SDS aus der Cloud heraus per HTTP (REST-API) aufrufen kann. Technisch könnten Sie also die CSV-Dateien in einem Bereich ihrer Schulwebseite bei Veränderungen hochladen und SDS sich die Daten von dort holen.

Ich denke nicht, dass dieses Verfahren in Deutschland eine große Verbreitung findet. Dazu müssten Schild, Sokrates und andere Programme eine entsprechende REST-API über das Internet bereitstellen. Das kann man schon "sicher" machen aber ich warte mal auf jemand, der diese Lösung auch beschreibt.

CSV-Upload mit PowerAutomate

Der zweite Weg ist ein automatisierter Upload der CSV-Dateien. Microsoft bedient sich dabei Flow mit einem Connector, um lokal bereitgestellte CSV-Dateien automatisiert zu SDS zu übertragen.

Der Weg automatisiert einfach den Upload der CSV-Dateien über PowerAutomate. Dazu muss aber auch ein lokaler Agent (Connector) z.B. auf dem PC der Schule installiert sein, über den Flow dann auf das Verzeichnis mit den vom SIS exportierten CSV-Dateien zugreifen kann.

Das bedeutet natürlich, dass Sie auch eine passende Lizenz für Flow haben müssen.

Zuerst müsste ihr SIS überhaupt CSV-Dateien im passenden Format exportieren damit dann ein Flow diese automatisch importiert. Irgendwie hätte ich mir einen Weg gewünscht die CSV-Dateien einfach in das OneDrive des GlobalAdmin zu laden. Mit Flow erscheint mir die Hürde sehr hoch.

SDS Toolkit

Microsoft hat auch ein SDS Toolkit bereitgestellt, welche lokal installiert wird. Allerdings stand hier schon im Sep 2020 folgender Hinweis.

This toolkit will be deprecated soon. We suggest you upload your CSV files using the SDS Flow Connector
https://docs.microsoft.com/en-us/schooldatasync/install-the-school-data-sync-toolkit

Insofern würde ich hier keine Zeit mehr Investieren.

Schade, dass dieser semiautomatische Weg nicht weiter verfolgt wird. Hätte doch damit ein SIS die Daten auf einen Rutsch exportieren und hochladen können.

Eigenes Provisioning

Eine vierte Option hat Microsoft gar nicht aufgelistet, aber kann durchaus interessant sein. Alle Aktionen, die SDS tut, können Sie per PowerShell auch selbst automatisieren.

  • AzureAD Powershell
    Anlegen und Verwalten von LuL und SuS mitsamt der Gruppen und Lizenzen
  • Exchange Online PowerShell
    Verwaltung von Exchange Postfacheigenschaften und Office 365 Gruppen
  • Teams PowerShell
    Anlegen und Verwalten von Teams

Diese Lösung könnte die ein oder anderen Limitierungen von SDS sogar lösen, z.B. die direkte Behandlung von Lehrern und Schülern die nicht mehr auf der Schule sind.

Diese "Lösung" hätte den Charme, dass sie volle Flexibilität und Automatisierung nutzen könnten. Allerdings müssten Sie schon recht viele Dinge selbst schreiben. Mal so eben schreiben Sie so einen "DirSync" nicht selbst, der mit allen Sonderfällen u.a. umgehen kann. Interessant wäre das natürlich fpr einen SIS-Entwickler der einen "Connector" zu Office 365 so anbieten könnte.

Ohne Automatisierung bleibt es wieder beim "Handbetrieb" durch das Vorzimmer oder dem LuL, der das SIS bedient.

Zwischenstand

Mein Eindruck von SDS ist durchwachsen. Auf der einen Seite ist es eine einfache und schnelle Möglichkeit auf eine große Anzahl von LuL und SuS anzulegen und dazu passende Teams zu erzeugen. Auf der anderen Seite fehlt mit ein ausführliches Logging, was SDS im Hintergrund aus meiner CSV-Datei genau macht. Die Fehlerberichte zeigen ja nur das Ergebnis an. Nicht umsonst habe ich einige Tests gemacht und das Verhalten hier dokumentiert, z.B. Umbenennungen, Löschungen, Konflikte.

SDS tut, was es soll, aber kein Stück mehr und es gibt keine API um das Verhalten zu erweitern. Wer eigene Anpassungen und Erweiterungen plant, muss doch wieder mit der PowerShell gegen AzureAD, Teams und Graph programmieren. Dann könnte man auch gleich das Verwalten der Benutzer quasi "realtime" machen.

Allerdings dürften die meisten Schulen und deren Administratoren mit einer selbst verwalteten Lösung überfordert sein. CSV-Dateien irgendwo exportieren und dann wieder zu importieren, ist da der einfachere Weg

SchildNRW und andere

Mit dem vertieften Wissen um die Funktion von SDS und dem Format der CSV-Dateien sollte es nun sehr einfach sein, aus bestehenden Stammdaten die Informationen in der gewünschten Detailtiefe entsprechend zu exportieren. Ich habe mich zuerst am CSV V1-Format orientiert, da es eine klare Trennung von Lehrer, Schülern und Kursen hat. Aber letztlich sind sie frei in der Wahl, welche CSV-Dateien Sie aus ihrem System erstellen.

Wenn ich mir mal das Wiki von SchildNRW anschaue, dann gibt es hier sehr wohl schon Export-Funktionen die eine gute Basis für eine halbautomatische Verarbeitung sein können

Soweit ich Schild bislang kennen gelernt habe, gibt es mehrere Exportschnittstellen:

  • "DAT-Dateien"
    Hierbei werden für jeden angewählten Punkte einfache CSV-Dateien geschrieben:

    Etwas ungewöhnlich ist nicht nur die Erweiterung ".DAT" sondern auch dass der Spaltentrenner ein "|"  (Senkrechter Strich/Pipe) ist
  • Logineo-Export (XML) u.a.
    Schild ist durch zusätzliche Module einfach erweiterbar. Interessant ist in NRW z.B. auch der Export zu Logineo, den Sie in den Optionen aktivieren können

    Dann haben Sie im Menü auch die Option, eine passende XML-Datei zu exportieren, deren Daten Sie dann ebenfalls weiter verarbeiten können

Alle Dateiexporte haben aber die Herausforderung, dass Sie einen Konverter zu SDS schreiben müssen. Vielleiht gibt es irgendwann ja mal einen Connector zu School Data Sync

Für die DAT-Dateien habe ich exemplarisch ein PowerShell-Script geschrieben, welches mehrere DAT-Dateien (Zusatzdaten.dat, LehrerinnenundLehrer.dat und Leistungsdaten.dat) einliest und passende CSV-Dateien im SDSv1-Format erstellt. Allerdings kam das Skript nie in den produktiven Einsatz und Bedarf sicher noch einiger Korrekturen.

Das Skript samt Konfigurationsdatei stelle ich hier noch nicht zum Download bereit. Es hat nur den Status eines POC und das Risiko, dass durch falsche CSV-Dateien sogar Daten im Tenant gelöscht werden, ist mir einfach zu hoch.

Es gibt schon erste Schulen, die SDS auch in Europa einsetzen und ihre Lösung veröffentlichen.

Wenn jemand seine Lösung zum Erstellen von CSV-Dateien beschrieben hat, dann addiere ich hier gerne einen Link.

Weitere Links