PageSourceSearch

https://schulconnex.de/assets/js/608e2166.fafe9178.js

js schulconnex.de collected 2026-10-04 13:32:17 UTC 25,484 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkschulconnex=globalThis.webpackChunkschulconnex||[]).push([[5427],{28453(e,n,s){s.d(n,{R:()=>l,x:()=>d});var i=s(96540);const r={},t=i.createContext(r);function l(e){const n=i.useContext(t);return i.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:l(e.components),i.createElement(t.Provider,{value:n},e.children)}},73104(e,n,s){s.r(n),s.d(n,{assets:()=>u,contentTitle:()=>d,default:()=>a,frontMatter:()=>l,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"praxisleitfaden/ablauf-synchronisation","title":"Synchronisation Quellsystem","description":"Diese Sektion beschreibt den vorgeschlagenen grunds\xe4tzlichen Ablauf der Synchronisation","source":"@site/docs/praxisleitfaden/ablauf-synchronisation.md","sourceDirName":"praxisleitfaden","slug":"/praxisleitfaden/ablauf-synchronisation","permalink":"/docs/praxisleitfaden/ablauf-synchronisation","draft":false,"unlisted":false,"tags":[{"inline":true,"label":"Informativ","permalink":"/docs/tags/informativ"}],"version":"current","frontMatter":{"title":"Synchronisation Quellsystem","tags":["Informativ"]},"sidebar":"spezQuellsystemeSidebar","previous":{"title":"Praxisleitfaden","permalink":"/docs/praxisleitfaden/"},"next":{"title":"Ablauf Schuljahrwechsel","permalink":"/docs/praxisleitfaden/ablauf-schuljahrwechsel"}}');var r=s(74848),t=s(28453);const l={title:"Synchronisation Quellsystem",tags:["Informativ"]},d="Ablaufbeschreibung: Synchronisation mit dem prim\xe4ren Quellsystem",u={},c=[{value:"Konfiguration",id:"konfiguration",level:2},{value:"Synchronisation",id:"synchronisation",level:2},{value:"Schritt 1: Ausl\xf6sen des Synchronisationsvorgangs",id:"schritt-1-ausl\xf6sen-des-synchronisationsvorgangs",level:3},{value:"Schritt 2: Auswahl der zu synchronisierenden Gruppen",id:"schritt-2-auswahl-der-zu-synchronisierenden-gruppen",level:3},{value:"Schritt 3: Abruf der Personen des Mandanten des Quellsystems aus dem Schulconnex-Service",id:"schritt-3-abruf-der-personen-des-mandanten-des-quellsystems-aus-dem-schulconnex-service",level:3},{value:"Schritt 4: Abgleich der Datens\xe4tze",id:"schritt-4-abgleich-der-datens\xe4tze",level:3},{value:"Schritt 5: Aktualisieren und Anlegen der Datens\xe4tze",id:"schritt-5-aktualisieren-und-anlegen-der-datens\xe4tze",level:3},{value:"Schritt 6: Importieren best\xe4tigter Datens\xe4tze in das Quellsystem",id:"schritt-6-importieren-best\xe4tigter-datens\xe4tze-in-das-quellsystem",level:3},{value:"Schritt 7: Abruf der Gruppen des Mandanten des Quellsystems aus dem Schulconnex-Service",id:"schritt-7-abruf-der-gruppen-des-mandanten-des-quellsystems-aus-dem-schulconnex-service",level:3},{value:"Schritt 8: Abgleich der Datens\xe4tze (Gruppen und Gruppenzugeh\xf6rigkeiten)",id:"schritt-8-abgleich-der-datens\xe4tze-gruppen-und-gruppenzugeh\xf6rigkeiten",level:3},{value:"Schritt 9: Aktualisieren und Anlegen der Datens\xe4tze (Gruppen und Gruppenzugeh\xf6rigkeiten)",id:"schritt-9-aktualisieren-und-anlegen-der-datens\xe4tze-gruppen-und-gruppenzugeh\xf6rigkeiten",level:3},{value:"Schritt 10: Importieren best\xe4tigter Datens\xe4tze (Gruppen und Gruppenzugeh\xf6rigkeiten) in das Quellsystem",id:"schritt-10-importieren-best\xe4tigter-datens\xe4tze-gruppen-und-gruppenzugeh\xf6rigkeiten-in-das-quellsystem",level:3},{value:"Schritt 11: R\xfcckmeldung an den Benutzer oder die Benutzerin",id:"schritt-11-r\xfcckmeldung-an-den-benutzer-oder-die-benutzerin",level:3}];function h(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"ablaufbeschreibung-synchronisation-mit-dem-prim\xe4ren-quellsystem",children:"Ablaufbeschreibung: Synchronisation mit dem prim\xe4ren Quellsystem"})}),"\n",(0,r.jsx)(n.p,{children:"Diese Sektion beschreibt den vorgeschlagenen grunds\xe4tzlichen Ablauf der Synchronisation\nzwischen einem prim\xe4ren Quellsystem (Stammdatenverwaltung des Schulverwaltungssystems) und\neinem Schulconnex-Service. Aus dem Vorschlag lassen sich die notwendigen Teile der\nSchnittstellenimplementierung auf Seiten des Quellsystems ableiten."}),"\n",(0,r.jsx)(n.h2,{id:"konfiguration",children:"Konfiguration"}),"\n",(0,r.jsx)(n.p,{children:"Das Quellsystem muss sich f\xfcr die Nutzung der REST-API des Schulconnex-Services authentifizieren.\nBei Verwendung des OAuth2-Flows wird daf\xfcr der Password Credentials Grant verwendet. Das Quellsystem\nerh\xe4lt durch die Authentifizierung einen Access Token, mit dem die Endpunkte der REST-API\naufgerufen werden k\xf6nnen."}),"\n",(0,r.jsx)(n.p,{children:"Das Quellsystem muss die Zugangsdaten (Kennung, Passwort, ggf. noch URLs) sicher speichern k\xf6nnen.\nEine lokale Speicherung oder Zwischenspeicherung (z.B. in einer Datei) ist nicht zul\xe4ssig. Es muss sichergestellt\nsein, dass nur berechtigte Nutzende Zugriff auf das Client Secret haben bzw. Funktionen aufrufen k\xf6nnen,\ndie das Client Secret verwenden. Falls die Funktion von einem lokalen Rechner ausgel\xf6st wird, ist\nsicherzustellen, dass das Client Secret nicht von Unberechtigten ausgelesen werden kann."}),"\n",(0,r.jsx)(n.p,{children:"Meistens haben Schulverwaltungssysteme ein Rechte- und Rollensystem zur Steuerung des Zugriffs auf\neinzelne Funktionalit\xe4ten. Auch das Recht, den Synchronisationsvorgang auszul\xf6sen, sollte an eine\nRolle oder Benutzende gebunden sein. Diese Entscheidung liegt jedoch beim Betreiber oder\nHersteller des Schulverwaltungssystems."}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsx)(n.p,{children:"Anforderungen an das Quellsystem"}),"\n"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Implementierung eines Unterpunkts im Konfigurationsmen\xfc zur Eingabe und zum Abspeichern\nder Zugangsdaten"}),"\n",(0,r.jsx)(n.li,{children:"Implementierung eines Rechts \u201eSynchronisation mit Schulconnex-Service\u201c und der M\xf6glichkeit,\ndieses Recht an Rollen oder Benutzer oder Benutzerinnen zu vergeben."}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"synchronisation",children:"Synchronisation"}),"\n",(0,r.jsx)(n.p,{children:"Der Synchronisationsvorgang besteht aus mehreren Schritten."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Schritt 1: Ausl\xf6sen des Synchronisationsvorgangs"}),"\n",(0,r.jsx)(n.li,{children:"Schritt 2: Auswahl der zu synchronisierenden Gruppen"}),"\n",(0,r.jsx)(n.li,{children:"Schritt 3: Abruf der Personen des Mandanten des Quellsystems aus dem Schulconnex-Service"}),"\n",(0,r.jsx)(n.li,{children:"Schritt 4: Abgleich der Datens\xe4tze"}),"\n",(0,r.jsx)(n.li,{children:"Schritt 5: Aktualisieren oder Anlegen der jeweiligen Datens\xe4tze"}),"\n",(0,r.jsx)(n.li,{children:"Schritt 6: Importieren best\xe4tigter Datens\xe4tze in das Quellsystem"}),"\n",(0,r.jsx)(n.li,{children:"Schritt 7: Abruf der Gruppen des Mandanten des Quellsystems aus dem Schulconnex-Service"}),"\n",(0,r.jsx)(n.li,{children:"Schritt 8: Abgleich der Datens\xe4tze (Gruppen und Gruppenzugeh\xf6rigkeiten)"}),"\n",(0,r.jsx)(n.li,{children:"Schritt 9: Aktualisieren und Anlegen der Datens\xe4tze (Gruppen und Gruppenzugeh\xf6rigkeiten)"}),"\n",(0,r.jsx)(n.li,{children:"Schritt 10: Importieren best\xe4tigter Datens\xe4tze (Gruppen und Gruppenzugeh\xf6rigkeiten) in das Quellsystem"}),"\n",(0,r.jsx)(n.li,{children:"Schritt 11: R\xfcckmeldung an den Be
1nutzer oder die Benutzerin"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Diese Schritte, sowie teilweise die daraus resultierenden Anforderungen an ein Quellsystem,\nwerden in den folgenden Abschnitten genauer beschrieben."}),"\n",(0,r.jsx)(n.h3,{id:"schritt-1-ausl\xf6sen-des-synchronisationsvorgangs",children:"Schritt 1: Ausl\xf6sen des Synchronisationsvorgangs"}),"\n",(0,r.jsx)(n.p,{children:"Benutzer oder Benutzerinnen mit entsprechenden Rechten k\xf6nnen diese Funktion, beispielsweise\n\xfcber eine Schaltfl\xe4che oder einen Men\xfceintrag, ausl\xf6sen."}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsx)(n.p,{children:"Anforderungen an das Quellsystem"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Implementierung eines UI-Elements zum Ausl\xf6sen des Synchronisationsvorgangs, wie einen Button\noder eine Men\xfc-Funktion."}),"\n",(0,r.jsx)(n.h3,{id:"schritt-2-auswahl-der-zu-synchronisierenden-gruppen",children:"Schritt 2: Auswahl der zu synchronisierenden Gruppen"}),"\n",(0,r.jsx)(n.p,{children:"Meistens ist es nicht sinnvoll, s\xe4mtliche Personeneintr\xe4ge der Datenbank des Quellsystems\nohne Vorauswahl zu synchronisieren. Daher sollte im zweiten Schritt die M\xf6glichkeit bestehen,\ndie zu synchronisierenden Gruppen auszuw\xe4hlen. Es bietet sich ein modaler Dialog an, mit\nder M\xf6glichkeit Schulklassen oder andere einschl\xe4gige Personengruppen, wie Lehrkr\xe4fte,\nauszuw\xe4hlen."}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsx)(n.p,{children:"Anforderungen an das Quellsystem"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Implementierung eines Dialogs zur Auswahl von Klassen sowie der Gruppe der Lehrkr\xe4fte."}),"\n",(0,r.jsx)(n.h3,{id:"schritt-3-abruf-der-personen-des-mandanten-des-quellsystems-aus-dem-schulconnex-service",children:"Schritt 3: Abruf der Personen des Mandanten des Quellsystems aus dem Schulconnex-Service"}),"\n",(0,r.jsxs)(n.p,{children:["Das Quellsystem sollte vor dem Erstellen des Synchronisationsdatensatzes \xfcber den\nEndpunkt ",(0,r.jsx)(n.code,{children:"/personen"})," (oder alternativ \xfcber ",(0,r.jsx)(n.code,{children:"/personenkontexte"}),") der REST-API zun\xe4chst den\nvollst\xe4ndigen Datensatz an Personen und Personenkontexten des Mandanten abrufen. Die Definition\nder Schnittstellen und ihre R\xfcckgabewerte mit Beispielen sind aus der Schnittstellenspezifikation\nf\xfcr Quellsysteme ersichtlich."]}),"\n",(0,r.jsx)(n.admonition,{title:"Hinweis",type:"note",children:(0,r.jsx)(n.p,{children:"Eine Person kann in mehreren Rollen im landesweiten Schulsystem vertreten sein, beispielsweise\ngleichzeitig als Lehrkraft und Erziehungsberechtigte oder als Schulleitung und Lehrkraft.\nDaher k\xf6nnen zu einer Person mehrere Personenkontexte geh\xf6ren, wobei der Regelfall jedoch ein\nPersonenkontext pro Person ist."})}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsx)(n.p,{children:"Anforderungen an das Quellsystem"}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Implementierung der Abruffunktion des REST-Endpunkts ",(0,r.jsx)(n.code,{children:"/personen"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"schritt-4-abgleich-der-datens\xe4tze",children:"Schritt 4: Abgleich der Datens\xe4tze"}),"\n",(0,r.jsx)(n.p,{children:"Der Abgleich der Datens\xe4tze erfolgt anhand der Schl\xfcssel. Hier kann die UUID des Schulconnex-Services\nverwendet werden. In diesem Fall muss das Quellsystem die UUID aus dem Schulconnex-Service als\nFremdschl\xfcssel selbst speichern. Alternativ kann das Quellsystem seinen eigenen Schl\xfcssel als\nFremdschl\xfcssel (\u201ereferrer\u201c) im Schulconnex-Service ablegen und den Abgleich dar\xfcber durchf\xfchren."}),"\n",(0,r.jsx)(n.p,{children:"Falls beide M\xf6glichkeiten genutzt werden, sollte das Quellsystem eine Strategie festlegen, wie bei\nSchl\xfcsselkonflikten verfahren wird. Der Schulconnex-Service verwendet immer den eigenen Schl\xfcssel.\nDas Quellsystem muss eine Strategie festlegen, wie mit den Schl\xfcsseln umgegangen wird, weil das\nQuellsystem seinen eigenen Schl\xfcssel hat und die UUID des Schulconnex-Services."}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Fall"}),(0,r.jsx)(n.th,{children:"Beschreibung"}),(0,r.jsx)(n.th,{children:"Aktion"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"1"}),(0,r.jsx)(n.td,{children:"Der Datensatz im Schulconnex-Service kann einem Datensatz im Quellsystem \xfcber einen der beiden Schl\xfcssel eindeutig zugeordnet werden."}),(0,r.jsx)(n.td,{children:"Vormerken f\xfcr automatische Aktualisierung"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"2"}),(0,r.jsx)(n.td,{children:"Sowohl im Datensatz im Schulconnex-Service als auch im Datensatz des Quellsystems sind s\xe4mtliche Personenattribute (Familienname, Vorname, Geburt: Datum, Ort) vorhanden. Die Attributwerte stimmen s\xe4mtlich \xfcberein und eine Zuordnung ist daher auch ohne Schl\xfcssel eindeutig m\xf6glich."}),(0,r.jsx)(n.td,{children:"Vormerken f\xfcr automatische Aktualisierung"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"3"}),(0,r.jsx)(n.td,{children:"Im Datensatz Schulconnex-Service oder im Datensatz Quellsystem sind nur ein Teil der Personenattribute (Familienname, Vorname, Geburt: Datum, Ort) vorhanden. Die Attributwerte stimmen \xfcberein, aber die Zuordnung ist m\xf6glicherweise nicht eindeutig."}),(0,r.jsx)(n.td,{children:"Vormerken f\xfcr Aktualisierung nach Zuordnungs-Best\xe4tigung"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"4"}),(0,r.jsx)(n.td,{children:"Der Datensatz im Schulconnex-Service hat einen Fremdschl\xfcssel (referrer) des Quellsystems, ist aber anhand des Schl\xfcssels im Quellsystem nicht auffindbar. (Dieser Fall kann auftreten, wenn im Quellsystem ein Backup wiedereingespielt wurde, nachdem das Quellsystem bereits neue Personen im Schulconnex-Service hat.)"}),(0,r.jsx)(n.td,{children:"Vormerken f\xfcr Import nach Import-Best\xe4tigung"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"5"}),(0,r.jsx)(n.td,{children:"Der Datensatz im Schulconnex-Service kann einem Datensatz im Quellsystem nicht zugeordnet werden."}),(0,r.jsx)(n.td,{children:"Vormerken f\xfcr Import nach Import-Best\xe4tigung"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"6"}),(0,r.jsx)(n.td,{children:"Nach Abgleichen der F\xe4lle 1, 2, 3 und 4 kann ein Datensatz im Quellsystem nicht einem Datensatz im Schulconnex-Service zugeordnet werden."}),(0,r.jsx)(n.td,{children:"Vormerken zum automatischen Anlegen eines neuen Datensatzes im Schulconnex-Service"})]})]})]}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsx)(n.p,{children:"Anforderungen an das Quellsystem"}),"\n"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Implementierung der Gesch\xe4ftslogik zum Abgleichen der Datens\xe4tze"}),"\n",(0,r.jsx)(n.li,{children:"Implementierung eines Dialogs zum Ausw\xe4hlen (Best\xe4tigen) im Fall 3"}),"\n",(0,r.jsx)(n.li,{children:"Implementierung eines Dialogs zum Ausw\xe4hlen (Best\xe4tigen) in de
1n F\xe4llen 4 und 5 (Import)"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.em,{children:"Die M\xf6glichkeit, unbekannte Datens\xe4tze aus dem Schulconnex-Service in das Quellsystem\nzu importieren (F\xe4lle 4 und 5) kann auch f\xfcr eine sp\xe4tere Ausbaustufe zur\xfcckgestellt werden."})}),"\n",(0,r.jsx)(n.h3,{id:"schritt-5-aktualisieren-und-anlegen-der-datens\xe4tze",children:"Schritt 5: Aktualisieren und Anlegen der Datens\xe4tze"}),"\n",(0,r.jsx)(n.p,{children:"Das Quellsystem hat nach Abgleich der Datens\xe4tze und eventuell notwendigen Best\xe4tigungen (F\xe4lle 3, 4 und 5)\nje eine Liste von Datens\xe4tzen zum Aktualisieren und zum Anlegen. Das Aktualisieren und Anlegen von Personen\nund Personenkontexten geschieht \xfcber getrennte Endpunkte."}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Aktion"}),(0,r.jsx)(n.th,{children:"Endpunkte"}),(0,r.jsx)(n.th,{children:"Hinweis"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Aktualisieren"}),(0,r.jsx)(n.td,{children:(0,r.jsxs)("ul",{children:[(0,r.jsxs)("li",{children:["PUT ",(0,r.jsx)(n.code,{children:"/personen/{id}"})]}),(0,r.jsxs)("li",{children:["PUT ",(0,r.jsx)(n.code,{children:"/personenkontexte/{id}"})]})]})}),(0,r.jsx)(n.td,{children:"Die Revision muss als Attribut mitgegeben werden."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Anlegen"}),(0,r.jsx)(n.td,{children:(0,r.jsxs)("ul",{children:[(0,r.jsxs)("li",{children:["POST ",(0,r.jsx)(n.code,{children:"/personen/"})]}),(0,r.jsxs)("li",{children:["POST ",(0,r.jsx)(n.code,{children:"/personen/{id}/personenkontexte/"})]})]})}),(0,r.jsx)(n.td,{})]})]})]}),"\n",(0,r.jsx)(n.p,{children:"Beim Aktualisieren \xfcber PUT muss der gesamte Datensatz\nmitgegeben werden. Es ist darauf zu achten, dass das Quellsystem dabei nicht unbeabsichtigt Daten l\xf6scht."}),"\n",(0,r.jsx)(n.p,{children:"Beim Modifizieren \xfcber PATCH ist es ausreichend, nur die ge\xe4nderten Attribute zu \xfcbermitteln."}),"\n",(0,r.jsx)(n.h3,{id:"schritt-6-importieren-best\xe4tigter-datens\xe4tze-in-das-quellsystem",children:"Schritt 6: Importieren best\xe4tigter Datens\xe4tze in das Quellsystem"}),"\n",(0,r.jsx)(n.p,{children:"Wenn (in den F\xe4llen 4 und 5) dem Import zugestimmt wurde und die Attribute im Schulconnex-Service\nzum Anlegen eines neuen Datensatzes im Quellsystem ausreichen, kann der Import durchgef\xfchrt werden."}),"\n",(0,r.jsx)(n.p,{children:"Die M\xf6glichkeit, unbekannte Datens\xe4tze in das Quellsystem zu importieren (F\xe4lle 4 und 5), kann auch\nf\xfcr eine sp\xe4tere Ausbaustufe zur\xfcckgestellt werden."}),"\n",(0,r.jsx)(n.h3,{id:"schritt-7-abruf-der-gruppen-des-mandanten-des-quellsystems-aus-dem-schulconnex-service",children:"Schritt 7: Abruf der Gruppen des Mandanten des Quellsystems aus dem Schulconnex-Service"}),"\n",(0,r.jsxs)(n.p,{children:["Das Quellsystem sollte vor dem Erstellen des Synchronisationsdatensatzes \xfcber den Endpunkt ",(0,r.jsx)(n.code,{children:"/gruppen"}),"\nder REST-API zun\xe4chst den vollst\xe4ndigen Datensatz an Gruppen und Gruppenzugeh\xf6rigkeiten des Mandanten\naus dem Schulconnex-Service abrufen. Die Definition der Schnittstellen und ihre R\xfcckgabewerte mit\nBeispielen sind aus der Schnittstellenspezifikation f\xfcr Quellsysteme ersichtlich."]}),"\n",(0,r.jsx)(n.h3,{id:"schritt-8-abgleich-der-datens\xe4tze-gruppen-und-gruppenzugeh\xf6rigkeiten",children:"Schritt 8: Abgleich der Datens\xe4tze (Gruppen und Gruppenzugeh\xf6rigkeiten)"}),"\n",(0,r.jsx)(n.p,{children:"Der Abgleich der Datens\xe4tze f\xfcr Gruppen und Gruppenzugeh\xf6rigkeiten sollte analog zum Abgleich\nder Datens\xe4tze f\xfcr Personen und Personenkontexte in (4) erfolgen. Dieser Import ist optional."}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Fall"}),(0,r.jsx)(n.th,{children:"Beschreibung"}),(0,r.jsx)(n.th,{children:"Aktion"}),(0,r.jsx)(n.th,{children:"Hinweis"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"1"}),(0,r.jsx)(n.td,{children:"Der Datensatz aus dem Schulconnex-Service kann einem Datensatz im Quellsystem \xfcber einen der beiden Schl\xfcssel eindeutig zugeordnet werden."}),(0,r.jsx)(n.td,{children:"Vormerken f\xfcr automatische Aktualisierung"}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"2"}),(0,r.jsx)(n.td,{children:"Der Datensatz aus dem Schulconnex-Service hat einen Fremdschl\xfcssel (referrer) des Quellsystems, ist aber anhand des Schl\xfcssels im Quellsystem nicht auffindbar."}),(0,r.jsx)(n.td,{children:"Vormerken f\xfcr Import nach Import-Best\xe4tigung"}),(0,r.jsx)(n.td,{children:"Dieser Fall kann z. B. auftreten, wenn im Quellsystem ein Backup wiedereingespielt wurde, nachdem das Quellsystem bereits neue Gruppen im Schulconnex-Service angelegt hat."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"3"}),(0,r.jsx)(n.td,{children:"Der Datensatz aus dem Schulconnex-Service kann einem Datensatz im Quellsystem nicht zugeordnet werden."}),(0,r.jsx)(n.td,{children:"Vormerken f\xfcr Import nach Import-Best\xe4tigung"}),(0,r.jsx)(n.td,{children:"Dieser Fall tritt auf, wenn Gruppen in der Administrationsoberfl\xe4che des Schulconnex-Services manuell oder durch Synchronisation mit einem sekund\xe4ren Quellsystem angelegt wurden. Ersteres kann bei Arbeitsgruppen/Teams oder \xe4hnlichen F\xe4llen gegeben sein, letzteres, wenn die Unterrichte zu Klassen von einer Stundenplanverwaltung oder einer Oberstufenverwaltung angelegt wurden (sekund\xe4re Quellsysteme). Der R\xfcckimport dieser Gruppen (Unterrichte) in das prim\xe4re Quellsystem sollte nicht automatisch passieren, sondern nur nach R\xfcckfrage bzw. entsprechend konfigurierbarer Parameter (z. B. nur Unterrichte und mit bekannten Referenzgruppen)."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"4"}),(0,r.jsx)(n.td,{children:"Nach Abgleichen der F\xe4lle 1, 2 und 3 kann ein Datensatz im Quellsystem nicht einem Datensatz aus dem Schulconnex-Service zugeordnet werden."}),(0,r.jsx)(n.td,{children:"Vormerken zum automatischen Anlegen eines neuen Gruppen-Datensatzes im Schulconnex-Service"}),(0,r.jsx)(n.td,{})]})]})]}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsx)(n.p,{children:"Anforderungen an das Quellsystem"}),"\n"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Implementierung der Gesch\xe4ftslogik zum Abgleichen der Datens\xe4tze"}),"\n",(0,r.jsx)(n.li,{children:"Implementierung eines Dialogs zum Ausw\xe4hlen (Best\xe4tigen) im Fall 2 und 3"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Die M\xf6glichkeit, unbekannte Datens\xe4tze in das Quellsystem zu importieren (F\xe4lle 2 und 3), ist optional."}
1),"\n",(0,r.jsx)(n.h3,{id:"schritt-9-aktualisieren-und-anlegen-der-datens\xe4tze-gruppen-und-gruppenzugeh\xf6rigkeiten",children:"Schritt 9: Aktualisieren und Anlegen der Datens\xe4tze (Gruppen und Gruppenzugeh\xf6rigkeiten)"}),"\n",(0,r.jsx)(n.p,{children:"Das Quellsystem hat nach Abgleich der Datens\xe4tze und ggf. notwendigen Best\xe4tigungen (F\xe4lle 2 und 3)\nje eine Liste von Datens\xe4tzen zum Aktualisieren und zum Anlegen von Gruppen. Das Aktualisieren\nund Anlegen von Gruppen und Gruppenzugeh\xf6rigkeiten geschieht \xfcber getrennte Endpunkte."}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Aktion"}),(0,r.jsx)(n.th,{children:"Endpunkte"}),(0,r.jsx)(n.th,{children:"Hinweis"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Aktualisieren"}),(0,r.jsx)(n.td,{children:(0,r.jsxs)("ul",{children:[(0,r.jsxs)("li",{children:["PUT ",(0,r.jsx)(n.code,{children:"/gruppen/{uuid}"})]}),(0,r.jsxs)("li",{children:["PUT ",(0,r.jsx)(n.code,{children:"/gruppenzugehoerigkeiten/{uuid}"})]})]})}),(0,r.jsx)(n.td,{children:"Die Revision muss als Attribut mitgegeben werden."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Anlegen"}),(0,r.jsx)(n.td,{children:(0,r.jsxs)("ul",{children:[(0,r.jsxs)("li",{children:["POST ",(0,r.jsx)(n.code,{children:"/gruppen/"})]}),(0,r.jsxs)("li",{children:["POST ",(0,r.jsx)(n.code,{children:"/gruppen/{uuid}/gruppenzugehoerigkeiten/"})]})]})}),(0,r.jsx)(n.td,{children:"Jede Gruppenzugeh\xf6rigkeit muss einzeln angelegt werden."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"L\xf6schen"}),(0,r.jsx)(n.td,{children:(0,r.jsxs)("ul",{children:[(0,r.jsxs)("li",{children:["DELETE ",(0,r.jsx)(n.code,{children:"/gruppen/"})]}),(0,r.jsxs)("li",{children:["DELETE ",(0,r.jsx)(n.code,{children:"/gruppenzugehoerigkeiten/{uuid}"})]})]})}),(0,r.jsx)(n.td,{children:"Jede Gruppenzugeh\xf6rigkeit muss einzeln gel\xf6scht werden."})]})]})]}),"\n",(0,r.jsx)(n.p,{children:"Beim Aktualisieren \xfcber PUT muss der gesamte Datensatz\nmitgegeben werden. Es ist darauf zu achten, dass das Quellsystem dabei nicht unbeabsichtigt Daten\nl\xf6scht, insbesondere d\xfcrfen nicht Daten gel\xf6scht werden, die von anderen Quellsystemen der Organisation\nben\xf6tigt oder verwaltet werden."}),"\n",(0,r.jsx)(n.p,{children:"Beim Modifizieren \xfcber PATCH ist es ausreichend, nur die ge\xe4nderten Attribute zu \xfcbermitteln."}),"\n",(0,r.jsxs)(n.p,{children:["Falls die Synchronisation im Zusammenhang oder direkt nach einem Schuljahres- oder\nSchulhalbjahreswechsel stattfindet, m\xfcssen Anforderungen ber\xfccksichtigt werden, die in\n",(0,r.jsx)(n.a,{href:"/docs/praxisleitfaden/ablauf-schuljahrwechsel",children:"Ablauf des Schuljahreswechsels f\xfcr Quellsysteme beschrieben sind"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"schritt-10-importieren-best\xe4tigter-datens\xe4tze-gruppen-und-gruppenzugeh\xf6rigkeiten-in-das-quellsystem",children:"Schritt 10: Importieren best\xe4tigter Datens\xe4tze (Gruppen und Gruppenzugeh\xf6rigkeiten) in das Quellsystem"}),"\n",(0,r.jsx)(n.p,{children:"Wenn (in den F\xe4llen 2 und 3) der oder die Nutzende dem Import zugestimmt hat und die Attribute\nim Schulconnex-Service zum Anlegen eines neuen Datensatzes im Quellsystem ausreichen, kann\nder Import durchgef\xfchrt werden. Dieser Import ist optional."}),"\n",(0,r.jsx)(n.h3,{id:"schritt-11-r\xfcckmeldung-an-den-benutzer-oder-die-benutzerin",children:"Schritt 11: R\xfcckmeldung an den Benutzer oder die Benutzerin"}),"\n",(0,r.jsx)(n.p,{children:"Zum Abschluss der Synchronisation sollte eine R\xfcckmeldung \xfcber Erfolg oder Misserfolg erfolgen,\nbeispielsweise als Dialog oder Statusmeldung."}),"\n",(0,r.jsx)(n.p,{children:"Idealerweise sollte hier auch die Anzahl der aktualisierten und angelegten Datens\xe4tze angezeigt werden."})]})}function a(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.