Zum Inhalt

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:

  1. Das ECF Tool for edoo.sys liest direkt aus der PostgreSQL-Datenbank von edoo.sys und generiert ECF-Dateien.

  2. 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:

  1. Zunächst muss manuell aus edoo.sys heraus eine Exportdatei generiert werden.

  2. Das ECF Tool for edoo.sys liest edoo.sys-Exportdatei ein und generiert ECF-Dateien.

  3. 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

  1. 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.

  2. Im Windows-Explorer ein neues Verzeichnis c:\enbrea anlegen (das Verzeichnis kann natürlich auch anders heißen).

  3. Bitte PowerShell 7 über das Windows-Menü starten: Start > Windows Powershell > Windows Powershell

  4. Mit folgendem Befehl in das soeben angelegte Verzeichnis wechseln:

    cd c:\enbrea
    
  5. 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.

  6. 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.SchoolServiceUrl 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 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.

Bei einer Nutuzng 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/school",
            "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/school",
            "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.

  1. Bitte edoo.sys starten und anmelden.

  2. Bitte Datei > Verwaltung > Exportformatbibliothek wählen und dort den Befehl Neuen Datensatz hinzufügen ausführen. Ein neues Exportformat wird erzeugt.

  3. Einen Namen für das neue Exportformat eintippen (z.B. ENBREA-Export)

  4. 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".

  1. 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:

  1. In der rechten Navigation der aktuellen Ansicht Exportformate verwalten den Datenbereich Schüler auswählen.

  2. Auf die Schaltfläche Datensätze für Export auswählen klicken. Ein Dialgofenster öffnet sich.

  3. Bitte die gewünschten Klassen bzw. Schüler auswählen.

  4. Unter Exportziel die Option Datei auswählen und als Dateinamen jenen angeben, der in der JSON-Konfigurationsdatei unter Edoosys.EcfExport.SourceFile definiert ist. In unserer Beispielkonfiguration würde der Dateiname c:\enbrea\edoosys\beispiel.csv lauten.

  5. Nun auf Exportierenklicken.

Das Resultat ist eine frisch aus edoo.sys exportierte CSV-Datei.

Daten nach ENBREA übertragen

  1. Bitte PowerShell 7 über das Windows-Menü starten: Start > Windows Powershell > Windows Powershell

  2. Mit folgendem Befehl in unser ENBREA-Verzeichnis wechseln:

    cd c:\enbrea
    
  3. 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.