Import aus Untis
Untis ist eine Stundenplan-Software. ENBREA kann Daten aus dem Untis-XML-Exportformat sowie aus dem Untis-DIF-Format (GPU012.TXT, GPU013.TXT und GPU014.TXT) einlesen. Diese Dateien müssen zunächst aus Untis heraus exportiert werden. Dies kann in Untis per Kommandozeile automatisiert werden.
Wie funktioniert der Import?¶
Der Workflow besteht grob aus drei Schritten:
-
Zunächst müssen aus Untis heraus die folgenden Exportdateien generiert werden:
untis.xml
: XML-Datei mit Stammdaten und StundenplaninformationenGPU012.TXT
: CSV-Datei mit AbsenzgründenGPU013.TXT
: CSV-Datei mit AbsenzenGPU014.TXT
: CSV-Datei mit Vertretungsinformationen
-
Das ECF Tool for Untis generiert aus diesen vier Ausgangsdateien ECF-Dateien.
-
Das ECF Tool for ENBREA importiert die ECF-Dateien nach ENBREA.
Alle drei Schritte können per PowerShell komplett oder teilweise automatisiert werden:
-
Mit PSUntis haben wir ein PowerShell-Modul entwickelt, mit dem die benötigten Exportdateien aus Untis mit einem einzigen Befehl erzeugt werden können. Alternativ kannst man die Dateien natürlich auch direkt aus Untis heraus generieren.
-
Mit dem PowerShell-Modul PSEnbrea kann man die Schritte 2 und 3 mit einem einzigen Befehl ausführen.
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 man hierfür tun muss, steht im Kapitel Voraussetzungen.
-
Im Windows-Explorer ein neues Verzeichnis
c:\enbrea
anlegen (das Verzeichnis kann natürlich auch anders heißen). -
PowerShell 7 über das Windows-Menü starten:
Start > Windows Powershell > Windows Powershell
-
Mit folgendem Befehl in das soeben angelegte Verzeichnis wechseln:
cd c:\enbrea
-
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,untis
Es werden das ECF Tool for ENBREA und das ECF Tool for Untis 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. |
Alle andere 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 könnte wie folgt aussehen:
{
"Untis" : {
"EcfExport": {
"TargetFolderName": "untis\\ecf-export",
"SourceFolderName": "untis",
"SourceFilesAsUtf8": false,
"SourceFilesQuote": "\"",
"SourceFilesSeperator": ","
}
},
"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¶
Manuell aus Untis exportieren¶
-
Bitte Untis starten und die gewünschte Untis-Datei oder Untis-Datenbank öffnen.
-
Zunächst
Datei > Import/Export > Untis
wählen und dort die SchnittstelleXML-Import/Export
. Ein Dialogfenster öffnet sich. -
Die Registerkarte
Export
wählen und unterExportdatei
den vollständigen Pfad zur Exportdateiuntis.xml
angeben. Die Dateiuntis.xml
muss in dem Ordner abgelegt werden, der in der JSON-Konfigurationsdatei unterUntis.EcfExport.SourceFolderName
definiert ist. In unserer Beispielkonfiguration würde der Pfadc:\enbrea\untis\untis.xml
lauten. -
Auf
Exportieren
klicken und das Dialogfenster schließen. -
Nnun
Datei > Import/Export > Export TXT Datei (CSV, DIF)
wählen und dort nacheinander die SchnittstellenAbsenzgründe
,Absenzen
undVertretungen
. Es öffnet sich jeweils ein Dialogfenster. -
In jedem Dialogfenster auf
OK
klicken und in den Ordner wechseln, der in der JSON-Konfigurationsdatei unterUntis.EcfExport.SourceFolderName
definiert ist. In unserer Beispielkonfiguration würde der Ordnerc:\enbrea\untis
lauten. Der Dateiname ist schon richtig voreingestellt, er muss nicht geändert weden. -
Jeweils auf
Speichern
klicken.
Das Resultat sind die frisch exportieren Untis-Dateien untis.xml
, GPU012.TXT
, GPU013.TXT
und GPU014.TXT
.
Per PowerShell aus Untis exportieren¶
Wer es etwas komfortabler haben möchte, kann unser PowerShell-Modul PSUntis nutzen.
-
PowerShell 7 über das Windows-Menü starten:
Start > Windows Powershell > Windows Powershell
-
Einmalig PSUntis wie folgt installieren:
Install-Module PsUntis
-
Die benötigten Dateien exportieren.
Bei einer Einzelplatzversion von Untis lautet der Befehl (Beispiel):
Start-UntisExport -File beispiel.gpn -OutputFolder c:\enbrea\untis\ -OutputType XML,GPU012,GPU013,GPU014
Beim Einsatz von Untis MultiUser lautet der Befehl (Beispiel):
Start-UntisExport -SchoolNo 12345 -SchoolYear 2020-2021 -User Administrator -Password (ConvertTo-SecureString 'qwertz' -AsPlainText -Force) -Date 2009-07-11 -OutputFolder c:\enbrea\untis\ -OutputType XML,GPU012,GPU013,GPU014
Eine ausführliche Beschreibung der Parameter des Cmdlets
Start-UntisExport
findet man im GitHub-Wiki von PSUntis.
Das Resultat sind die frisch exportieren Untis-Dateien untis.xml
, GPU012.TXT
, GPU013.TXT
und GPU014.TXT
.
Bitte beachten
Beim Export von GPU-Dateien per PowerShell werden die Konfigurationsdaten (z.B. Trennzeichen) aus dem letzten manuellen Export übernommen.
Daten nach ENBREA übertragen¶
-
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 untis enbrea.json
Das soeben erstellten Untis-Dateien untis.xml
, GPU012.TXT
, GPU013.TXT
und GPU014.TXT
werden ins ECF-Format übersetzt und anschließend nach ENBREA übertragen.
Dateien vom Übertrag ausnehmen¶
Sollen einzelne Dateien aus UNTIS nicht mit nach ENBREA übernommen werden, z.B. die GPU013.txt (diese enthält Abwesenheitsgründe und Fehlzeiten der Lehrkräfte) die json Datei wie folgt einrichten:
},
"Untis" : {
"EcfExport": {
"Files": [
{ "Name": "Courses" },
{ "Name": "Departments" },
{ "Name": "LessonGaps" },
{ "Name": "Rooms" },
{ "Name": "ScheduledLessons" },
{ "Name": "SchoolClasses" },
{ "Name": "Students" },
{ "Name": "StudentSchoolClassAttendances" },
{ "Name": "Subjects" },
{ "Name": "SubstituteLessons" },
{ "Name": "Teachers" },
{ "Name": "Timeframes" },
{ "Name": "Vaccations" }
],
"TargetFolderName": "untis\\ecf-export",
"SourceFolderName": "untis"
}
},
Bitte beachten
Der Export im UNTIS - Multiuserbetrieb funkioniert nur wenn auf dem Rechner auf dem das PowerShell Skript ausgeführt wird, keine Anmeldung an der Untis-Datenbank erfolgt ist.
Automation¶
Die Synchronisation zwischen Untis und ENBREA kann natürlich automatisiert werden. Tipps zur Automation per BATCH-Datei oder Windows-Aufgabenplanung findet man im Kapitel Automation.