Import aus edoo.sys
edoo.sys ist eine offizielle Schulverwaltungssoftware des Landes Rheinland-pfalz. ENBREA kann Daten direkt aus der Datenbank von edoo.sys importieren. Alternativ können auch Daten mit Hilfe der edoo.sys-Exportschnittstelle importiert werden.
Wie funktioniert der Import?¶
Der Workflow besteht grob aus zwei Schritten:
-
Das ECF Tool for edoo.sys liest direkt aus der PostgreSQL-Datenbank von edoo.sys und generiert ECF-Dateien.
-
Das ECF Tool for ENBREA importiert die ECF-Dateien nach ENBREA.
Mit dem PowerShell-Modul PSEnbrea können beide Schritte mit einem einzigen Befehl ausgeführt werden.
Sollte ein direkter Zugriff auf die PostgreSQL-Datenbank von edoo.sys nicht möglich sein, sieht der Workflow etwas anders aus:
-
Zunächst muss manuell aus edoo.sys heraus eine Exportdatei generiert werden.
-
Das ECF Tool for edoo.sys liest edoo.sys-Exportdatei ein und generiert ECF-Dateien.
-
Das ECF Tool for ENBREA importiert die ECF-Dateien nach ENBREA.
Mit dem PowerShell-Modul PSEnbrea können die Schritte 2 und 3 mit einem einzigen Befehl ausgeführt werden.
Installieren¶
-
Falls noch nicht geschehen, bitte auf dem Computer die .NET Core Laufzeitumgebung, PowerShell 7, das PowerShell-Modul PSEnbrea installieren und einen Zeitraum in ENBREA anlegen. Was genau hierfür zu tun ist, steht im Kapitel Voraussetzungen.
-
Im Windows-Explorer ein neues Verzeichnis
c:\enbrea
anlegen (das Verzeichnis kann natürlich auch anders heißen). -
Bitte PowerShell 7 über das Windows-Menü starten:
Start > Windows Powershell > Windows Powershell
-
Mit folgendem Befehl in das soeben angelegte Verzeichnis wechseln:
cd c:\enbrea
-
Bitte nun folgenden PowerShell-Befehl eintippen:
Initialize-EnbreaImport enbrea.json
Es wird jetzt eine Konfigurationsdatei
enbrea.json
angelegt, die als Vorlage für die weitere Konfiguration dient. -
Bitte folgenden PowerShell-Befehl eintippen:
Install-EcfTools enbrea,edoosys
Es werden das ECF Tool for ENBREA und das ECF Tool for edoo.sys installiert.
Konfigurieren¶
Die gesamte Konfiguration des Imports befindet sich in der Textdatei enbrea.json
. Diese Datei in einem Texteditor öffnen und die gewünschten Eigenschaften überschreiben.
Die folgenden Eigenschaften müssen angepasst werden. Sie konfigurieren den individuellen Zugang zu ENBREA:
Eigenschaft | Bedeutung |
---|---|
Enbrea.EcfImport.IdentityServiceUrl | URL zum ENBREA Identity Service |
Enbrea.EcfImport.IdentityUserName | ENBREA Benutzername |
Enbrea.EcfImport.IdentityPassword | ENBREA Kennwort |
Enbrea.EcfImport.SyncHubUrl | URL zum ENBREA School Service |
Enbrea.EcfImport.SchoolTermId | ID des ENBREA-Zeitraums, in den importiert werden soll. Die ID des Zeitraums ist in der Adressleiste des Browsers sichtbar, während man an der ENBREA-Instanz angemeldet ist. |
Bei einem direkten Zugriff auf die Datenbank edoo.sys müssen folgende Eigenschaften ebenfalls angepasst werden:
Eigenschaft | Bedeutung |
---|---|
Edoosys.EcfExport.SourceProvider | Wert = Postgres |
Edoosys.EcfExport.DatabaseConnection | Connection-String zur PostgreSQL-Datenbank von edoo.sys |
Edoosys.EcfExport.SchoolYearCode | Schuljahr |
Edoosys.EcfExport.SchoolNo | Offizielle Schulnummer der eigenen Schule |
NoSchoolClassGroups | Wert= True Es werden keine Klassengruppen exportiert, stattdessen nur die Klassen (jede Klassengruppe verweist auf genau eine Klasse). Wert = False Es werden Klassengruppen exportiert. Wichtig: Beim Einsatz von edoosys UND DAVINCI hängt die Einstellung davon ab, ob in DAVINCI mit Klassengruppen oder nur mit Klassen geplant wird. Die exportierten Klassendaten aus DAVINCI und edoosys müssen übereinstimmen. |
Bei einer Nutzung der Exportschnittsstelle von edoo.sys müssen folgende Eigenschaften ebenfalls angepasst werden:
Eigenschaft | Bedeutung |
---|---|
Edoosys.EcfExport.SourceProvider | Wert = Csv |
Edoosys.EcfExport.SourceFileName | Dateiname der edoo.sys-Exportdatei |
Edoosys.EcfExport.SchoolYearCode | Schuljahr |
Edoosys.EcfExport.SchoolNo | Ofizielle Schulnummer der eigenen Schule |
NoSchoolClassGroups | Wert= True Es werden keine Klassengruppen exportiert, stattdessen nur die Klassen (jede Klassengruppe verweist auf genau eine Klasse). Wert = False Es werden Klassengruppen exportiert. Wichtig: Beim Einsatz von edoosys UND DAVINCI hängt die Einstellung davon ab, ob in DAVINCI mit Klassengruppen oder nur mit Klassen geplant wird. Die exportierten Klassendaten aus DAVINCI und edoosys müssen übereinstimmen. |
Alle anderen Eigenschaften sind schon vorkonfiguriert, können aber natürlich jederzeit überschrieben werden.
Bitte beachten
Der Backslash (= umgedrehter Schrägstrich) in Dateipfaden muss in einer JSON-Datei stets gedoppelt werden, also \\ statt \.
Das Ergebnis für den direkten Abgleich per edoo.sys-Datenbank könnte wie folgt aussehen:
{
"Edoosys": {
"EcfExport": {
"TargetFolderName": "edoosys\\ecf-export",
"SourceProvider": "Postgres",
"DatabaseConnection": "Server=127.0.0.1;Port=5432;Database=asv;User Id=myUsername;Password=myPassword;",
"SchoolYearCode": "2020/21",
"SchoolNo": "12345",
"NoSchoolClassGroups": true
}
},
"Enbrea" : {
"EcfImport":
{
"IdentityServiceUrl" : "https://enbrea.beispiel.de/identity",
"IdentityUserName" : "importbenutzer",
"IdentityPassword" : "qwertz",
"SchoolServiceUrl" : "https://enbrea.beispiel.de/syncHub",
"SchoolTermId" : "9067eff1-6817-4e59-855c-9ace4e51f139",
"Files" : [
{ "Name" : "CourseCategories", "KeyHeaders":"Code" },
{ "Name" : "CourseFlags", "KeyHeaders":"Code" },
{ "Name" : "CourseTypes", "KeyHeaders":"Code" },
{ "Name" : "EducationalAreas", "KeyHeaders":"Code" },
{ "Name" : "EventTypes", "KeyHeaders":"Code" },
{ "Name" : "ExamTypes", "KeyHeaders":"Code" },
{ "Name" : "FormsOfTeaching", "KeyHeaders":"Code" },
{ "Name" : "LessonProfiles", "KeyHeaders":"Code" },
{ "Name" : "LevelOfQualifications", "KeyHeaders":"Code" },
{ "Name" : "ResourceCategories", "KeyHeaders":"Code" },
{ "Name" : "ResourceFlags", "KeyHeaders":"Code" },
{ "Name" : "RoomAbsenceReasons", "KeyHeaders":"Code" },
{ "Name" : "RoomTypes", "KeyHeaders":"Code" },
{ "Name" : "SchoolClassAbsenceReasons", "KeyHeaders":"Id" },
{ "Name" : "SchoolClassFlags", "KeyHeaders":"Code" },
{ "Name" : "SchoolClassLevels", "KeyHeaders":"Code" },
{ "Name" : "SchoolClassProfils", "KeyHeaders":"Code" },
{ "Name" : "SchoolForms", "KeyHeaders":"Code" },
{ "Name" : "SchoolOrganisations", "KeyHeaders":"Code" },
{ "Name" : "SchoolTypes", "KeyHeaders":"Code" },
{ "Name" : "SubjectFocuses", "KeyHeaders":"Code" },
{ "Name" : "SubjectTypes", "KeyHeaders":"Code" },
{ "Name" : "TeacherAbsenceReasons", "KeyHeaders":"Id" },
{ "Name" : "TeacherAbsenceReasonDifferentiations", "KeyHeaders":"Code" },
{ "Name" : "TeacherTypes", "KeyHeaders":"Code" },
{ "Name" : "TimeAccountEntryReasons", "KeyHeaders":"Code" },
{ "Name" : "TimeAccountEntryReportings", "KeyHeaders":"Code" },
{ "Name" : "TimeAccountEntryTypes", "KeyHeaders":"Code" },
{ "Name" : "VacationTypes", "KeyHeaders":"Code" },
{ "Name" : "VocationalField", "KeyHeaders":"Code" },
{ "Name" : "EducationalPrograms", "KeyHeaders":"Code" },
{ "Name" : "TimeFrames", "KeyHeaders":"Code" },
{ "Name" : "Departments", "KeyHeaders":"Code" },
{ "Name" : "Rooms", "KeyHeaders":"Code" },
{ "Name" : "RoomAbsences", "KeyHeaders":"Id" },
{ "Name" : "Subjects", "KeyHeaders":"Code" },
{ "Name" : "EducationalContents", "KeyHeaders":"Code" },
{ "Name" : "EducationalMaterials", "KeyHeaders":"Code" },
{ "Name" : "SubjectLearningField", "KeyHeaders":"Code" },
{ "Name" : "Teachers", "KeyHeaders":"Code" },
{ "Name" : "TeacherAbsences", "KeyHeaders":"Id" },
{ "Name" : "Students", "KeyHeaders":"LastName;FirstName;Birthdate" },
{ "Name" : "StudentAbsences", "KeyHeaders":"Id" },
{ "Name" : "StudentSubjects", "KeyHeaders":"Id" },
{ "Name" : "SchoolClasses", "KeyHeaders":"Code" },
{ "Name" : "SchoolClassAbsences", "KeyHeaders":"Id" },
{ "Name" : "Courses", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "Announcements", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "ScheduledLessons", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "SubstituteLessons", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "LessonGaps", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "Vacations", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" }
]
}
}
}
Das Ergebnis für den Abgleich über die edoo.sys-Exportschnitstelle könnte wie folgt aussehen:
{
"Edoosys": {
"EcfExport": {
"TargetFolderName": "edoosys\\ecf-export",
"SourceProvider": "Csv",
"SourceFileName": "edoosys\\beispiel.csv"
}
},
"Enbrea" : {
"EcfImport":
{
"IdentityServiceUrl" : "https://enbrea.beispiel.de/identity",
"IdentityUserName" : "importbenutzer",
"IdentityPassword" : "qwertz",
"SchoolServiceUrl" : "https://enbrea.beispiel.de/syncHub",
"SchoolTermId" : "9067eff1-6817-4e59-855c-9ace4e51f139",
"Files" : [
{ "Name" : "CourseCategories", "KeyHeaders":"Code" },
{ "Name" : "CourseFlags", "KeyHeaders":"Code" },
{ "Name" : "CourseTypes", "KeyHeaders":"Code" },
{ "Name" : "EducationalAreas", "KeyHeaders":"Code" },
{ "Name" : "EventTypes", "KeyHeaders":"Code" },
{ "Name" : "ExamTypes", "KeyHeaders":"Code" },
{ "Name" : "FormsOfTeaching", "KeyHeaders":"Code" },
{ "Name" : "LessonProfiles", "KeyHeaders":"Code" },
{ "Name" : "LevelOfQualifications", "KeyHeaders":"Code" },
{ "Name" : "ResourceCategories", "KeyHeaders":"Code" },
{ "Name" : "ResourceFlags", "KeyHeaders":"Code" },
{ "Name" : "RoomAbsenceReasons", "KeyHeaders":"Code" },
{ "Name" : "RoomTypes", "KeyHeaders":"Code" },
{ "Name" : "SchoolClassAbsenceReasons", "KeyHeaders":"Id" },
{ "Name" : "SchoolClassFlags", "KeyHeaders":"Code" },
{ "Name" : "SchoolClassLevels", "KeyHeaders":"Code" },
{ "Name" : "SchoolClassProfils", "KeyHeaders":"Code" },
{ "Name" : "SchoolForms", "KeyHeaders":"Code" },
{ "Name" : "SchoolOrganisations", "KeyHeaders":"Code" },
{ "Name" : "SchoolTypes", "KeyHeaders":"Code" },
{ "Name" : "SubjectFocuses", "KeyHeaders":"Code" },
{ "Name" : "SubjectTypes", "KeyHeaders":"Code" },
{ "Name" : "TeacherAbsenceReasons", "KeyHeaders":"Id" },
{ "Name" : "TeacherAbsenceReasonDifferentiations", "KeyHeaders":"Code" },
{ "Name" : "TeacherTypes", "KeyHeaders":"Code" },
{ "Name" : "TimeAccountEntryReasons", "KeyHeaders":"Code" },
{ "Name" : "TimeAccountEntryReportings", "KeyHeaders":"Code" },
{ "Name" : "TimeAccountEntryTypes", "KeyHeaders":"Code" },
{ "Name" : "VacationTypes", "KeyHeaders":"Code" },
{ "Name" : "VocationalField", "KeyHeaders":"Code" },
{ "Name" : "EducationalPrograms", "KeyHeaders":"Code" },
{ "Name" : "TimeFrames", "KeyHeaders":"Code" },
{ "Name" : "Departments", "KeyHeaders":"Code" },
{ "Name" : "Rooms", "KeyHeaders":"Code" },
{ "Name" : "RoomAbsences", "KeyHeaders":"Id" },
{ "Name" : "Subjects", "KeyHeaders":"Code" },
{ "Name" : "EducationalContents", "KeyHeaders":"Code" },
{ "Name" : "EducationalMaterials", "KeyHeaders":"Code" },
{ "Name" : "SubjectLearningField", "KeyHeaders":"Code" },
{ "Name" : "Teachers", "KeyHeaders":"Code" },
{ "Name" : "TeacherAbsences", "KeyHeaders":"Id" },
{ "Name" : "Students", "KeyHeaders":"LastName;FirstName;Birthdate" },
{ "Name" : "StudentAbsences", "KeyHeaders":"Id" },
{ "Name" : "StudentSubjects", "KeyHeaders":"Id" }
{ "Name" : "SchoolClasses", "KeyHeaders":"Code" },
{ "Name" : "SchoolClassAbsences", "KeyHeaders":"Id" },
{ "Name" : "Courses", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "Announcements", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "ScheduledLessons", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "SubstituteLessons", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "LessonGaps", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" },
{ "Name" : "Vacations", "KeyHeaders":"Id", "DeleteStrategy" : "DeleteRemaining" }
]
}
}
}
Testen¶
Direkter Zugriff auf die edoo.sys-Datenbank¶
Ist ein direkter Zugriff auf die PostgreSQL-Datenbank von edoo.sys möglich bzw. erlaubt, ist nichts weiter zu tun.
Manuell aus edoo.sys exportieren¶
Ist der direkte Zugriff auf die edoo.sys-Datenbank nicht möglich, kann die Exportschnitstelle von edoo.sys genutzt werden. Hierbei wird eine CSV-Datei mit den notwendigen Daten erzeugt. Diese kann dann von ENBREA importiert werden.
-
Bitte edoo.sys starten und anmelden.
-
Bitte
Datei > Verwaltung > Exportformatbibliothek
wählen und dort den BefehlNeuen Datensatz hinzufügen
ausführen. Ein neues Exportformat wird erzeugt. -
Einen Namen für das neue Exportformat eintippen (z.B.
ENBREA-Export
) -
Bitte nun im Anschnitt
Ausgewählte Felder
nacheinander die folgenden Felder definieren:Schüler_Stamm_ID
Vornamen
Familienname
Geburtsdatum
Geschlecht
Klasse / Klassengruppe
Klasse
Alle Lehrkräfte (Kürzel) mit Fach
Hinweis
Klasse
oder Klasse/Klassenguppe
: Das ECF Tool for edoo.sys kann beides einlesen. Es versucht erst die Spalte "Klasse" einzulesen, wenn es die nicht gibt, dann die Spalte "Klasse / Klassengruppe".
- Bitte auf
Neuen/geänderten Datensatz speichern
klicken.
Das neue Exportformat in edoo.sys ist definiert und kann in Zukunft wiederverwendet werden.
Der eigentliche Export funktioniert wie folgt:
-
In der rechten Navigation der aktuellen Ansicht
Exportformate verwalten
den DatenbereichSchüler
auswählen. -
Auf die Schaltfläche
Datensätze für Export auswählen
klicken. Ein Dialgofenster öffnet sich. -
Bitte die gewünschten Klassen bzw. Schüler auswählen.
-
Unter
Exportziel
die OptionDatei
auswählen und als Dateinamen jenen angeben, der in der JSON-Konfigurationsdatei unterEdoosys.EcfExport.SourceFile
definiert ist. In unserer Beispielkonfiguration würde der Dateinamec:\enbrea\edoosys\beispiel.csv
lauten. -
Nun auf
Exportieren
klicken.
Das Resultat ist eine frisch aus edoo.sys exportierte CSV-Datei.
Daten nach ENBREA übertragen¶
-
Bitte PowerShell 7 über das Windows-Menü starten:
Start > Windows Powershell > Windows Powershell
-
Mit folgendem Befehl in unser ENBREA-Verzeichnis wechseln:
cd c:\enbrea
-
Folgenden PowerShell-Befehl eintippen:
Start-EnbreaImport edoosys enbrea.json
Die Daten aus edoo.sys werden ins ECF-Format übersetzt und anschließend nach ENBREA übertragen.
Automation¶
Die Synchronisation zwischen edoo.sys und ENBREA kann natürlich automatisiert werden. Tipps zur Automation per BATCH-Datei oder Windows-Aufgabenplanung sind im Kapitel Automation zu finden.