Schritte des Universal-Sync
Dieses Kapitel beschreibt die Ablaufphasen, Verzweigungen und Entscheidungen eines Syncs am Beispiel des Universal Sync – von der Anstoßung über die Verarbeitung je Datensatz bis zum Abschluss der Ausführung.
Kurzüberblick
- Start über Warteschlangeneintrag (Ausführungsart + Parameter)
- Preflight-Prüfungen von Quelle/Ziel je Konnektor
- Sonderfall Wiederherstellung (Rollback aus Backup, ohne Quelldaten)
- Lesen der Quelldaten (Grenzwerte/Flags/Einzelübertragung)
- Verarbeitungspipeline: Transformation → 2. Filter → Einzelverarbeitung
- Einzelverarbeitung: Sperren, Abbildungen, Suche/Vorbedingung, Konflikte, Backup, Schreiben, Erfolgsbedingung, Zurückschreiben
- Abschluss: Ergebnislisten, Status, neuer Grenzwert, Planung nächster Lauf
1. Anstoßung & Preflight
Warteschlangeneintrag: Legt Ausführungsart (z. B. Geplant, Manuell, Einzelübertragung, Nachfolger, Wiederholung, Ablauf) fest und kann Parameter (IDs, Filter, Flags) enthalten.
Preflight-Checks (konnektorspezifisch):
- Erreichbarkeit/Authentifizierung von Quell- und Zielsystem
- ggf. Schema-/Version-/Rechte-Checks
- Abbruch bei Fehlern, um Folgeschritte zu vermeiden
Sonderfall – Wiederherstellung
Vorab prüfen, ob Ausführungsart = Wiederherstellen:
- Ja → Ziel wird aus Backup aktualisiert (ohne Quelldatenzugriff) und die Ausführung verzweigt direkt in die Einzelverarbeitung am Ziel.
- Nein → Normaler Ablauf.
2. Lesen der Quelldaten
2.1 Grenzwert & Flags
Existiert eine letzte Änderungsinformation (Grenzwert) am Sync (»Zusätzliche Information«)?
- Ja → Manuelle/Geplante Läufe lesen nur Änderungen ab Grenzwert.
- Nein → Alle Quelldaten lesen.
Spezial-Flags:
- Immer alle Datensätze aus Quelle abfragen
Ignoriert Grenzwerte (z. B. für regelmäßige Umsatz-Refreshs). - Initial-Synchronisierung von Datensatzänderungen
Einmalige Wiederaufnahme nach längerer Pause: alle Datensätze lesen, aber Übertragung entscheidet die Datensatz-Abbildung (nicht jeder Datensatz wird geschrieben). Flag wird nach Erfolg deaktiviert. - Initial-Synchronisierung von Konfigurationsänderungen
Nach Änderungen an Feldzuordnungen/Transformationen: Übertragung unabhängig von Grenzwerten.
2.2 Ausführungsarten & Quellenumfang
- Einzelübertragung
Liest gezielte Datensätze gemäß Warteschlangen-Parametern (auch aus historischem Eintrag möglich). - Manuell/Geplant
Liest alle oder nur geänderte Datensätze plus:- geplante Datensätze (aus Fehlerbehandlung mit Zeitsteuerung, beliebig oft wiederholbar)
- Wiederholungen (aus Vorbedingung/Übereinstimmung/Sperren)
- Wiederholung (direkt)
Liest betroffene Datensätze aus der Historie des vorherigen Eintrags. - Nachfolger
Nutzt IDs aus Vorgänger; wird nur eingeplant, wenn der Vorgänger erfolgreich war. (Für zusammenhängende Fehlerbehandlung sind Abläufe flexibler.) - Ablauf
Eintrag wird vom Ablauf erzeugt; dient Orchestrierung und Protokollierung.
Wiederholungsgrenze: Die Anzahl unmittelbarer Wiederholungen steuert „Maximale Anzahl an fortlaufenden Wiederholungen“ (z. B. bei fehlender Eltern-Entität).
3. Verarbeitung der Quelldaten
3.1 Paketierung & geplante Liste
Quell-Systeme liefern Daten paketweise (Batch). Ein Paket wird vollständig verarbeitet, bevor das nächste folgt.
Alle gelesenen Datensätze werden in die Liste geplanter Datensätze am Warteschlangen-Eintrag aufgenommen.
3.2 Pipeline: Transformation → 2. Filter → Fehlerbehandlung
- Transformation (sequenziell, schrittweise):
Felder transformieren/anreichern, Parameter/Flags erzeugen. - Zweiter Filter (nach Transformation):
Ausgefilterte Datensätze werden vollständig ignoriert (kein Schreiben). - Fehlerbehandlung auf Batch-Ebene:
Fehlgeschlagene Datensätze → Wiederholung/Planung gemäß Konfiguration.
3.3 Einzelverarbeitung (pro Datensatz)
a) Sperre Quelle
- Prüfen/Setzen einer Datensatzsperre für die Quelle.
- Bei Sperre durch anderen Sync → Datensatz am Ende des Laufs erneut prüfen; wenn weiterhin gesperrt → Wiederholung in nächstem Lauf.
- Aufgehobene Sperren werden temporär aufbewahrt (inkl. letzter Änderungsinfo), damit nachträglich erkannt werden kann, ob Daten noch aktuell sind.
b) Datensatz-Abbildungen (Mappings) ermitteln
- Zuerst eigene Abbildung, dann parallele/komplementäre (gleiche Systeme/Objekte, gleicher Mandant).
- Gefunden & Ziel existiert nicht → Eigene Abbildung als gelöscht markieren, Datensatz beenden (Folgeläufe erkennen dies).
- Nicht gefunden → Suche per Übereinstimmungsregel; kein Treffer → Regel anwenden (überspringen oder Neuanlage); Treffer → Abbildung herstellen.
c) Vorbedingung für Neuanlage
- Vor Neuanlage prüfen (z. B. Firma muss existieren); andernfalls wiederholen.
d) Sperre Ziel (bei Aktualisierung)
- Prüfen/Setzen analog zur Quelle.
e) Konfliktprüfung (bei Aktualisierung)
Nicht ausgeführt bei Einzelübertragung, Immer alle Datensätze… und Initial-Sync der Konfigurationsänderungen.
- Quelle (Loop-Schutz):
Ist Quellen-Änderungsinfo == in Abbildung gespeicherte letzte Syncler-Änderung? → Überspringen. - Ziel (Konflikt):
Ziel-Änderungsinfo neuer als in Abbildung? → externe Änderung → Konfliktverhalten des Syncs anwenden (Quelle gewinnt/Ziel gewinnt/nur Quelländerungen/feldbasiert …).
Nach erfolgreicher Verarbeitung werden eigene und andere Abbildungen aktualisiert (Cross-Sync-Konsistenz).
f) Backup (vor Schreiben)
- Bei vorhandener Abbildung: Backup des Ziel-Datensatzes anlegen.
- Backups werden alterbasiert gelöscht; erstes/letztes Backup sind geschützt.
g) Feldzuordnung & DQM
- Zuordnung anwenden; Konfliktstrategie kann Teil-Mappings erlauben.
- Optional DQM-Workflow ausführen.
h) Schreiben & Erfolgsbedingung
- Ziel schreiben; Ziel kann No-Op durchführen (keine Änderungen/leerer Datensatz).
- Erfolgsbedingung prüfen:
- Erfüllt → Abbildungen aktualisieren (ChangeInfos Quelle/Ziel).
- Nicht erfüllt → Abbruch mit Fehler; Abbildungen nicht aktualisieren.
i) Zurückschreiben (Write-Back)
- Optional Felder aus Quelle/Transformation/Ziel/Konstanten in Quelle zurückschreiben.
- Wird in Sperre berücksichtigt, nicht in Abbildung.
- Auch bei Fehlern/Überspringen kann ein begrenztes Zurückschreiben erfolgen (z. B. Status/Diagnose).
Hinweis: Abbildungen werden nur genutzt, wenn Quelle und Ziel über definierte ID-Werte verfügen.
Nachfolger ohne IDs: Ist ein Nachfolger konfiguriert, der aktuelle Datensatz hat aber keine IDs, wird der Datensatz-Speicher zur Übergabe verwendet.
4. Abschluss der Ausführung
4.1 Ergebnislisten & Status
- Am Warteschlangen-Eintrag werden ID-Listen je Ergebnistyp aufgebaut (Erfolg, Fehler, Übersprungen, …).
- Die geplante Liste wird bereinigt: Einträge mit Ergebnis oder gefilterte werden entfernt.
- Bleiben Reste zurück, gelten diese als fehlgeschlagen.
- Laufstatus: Erfolgreich oder Fehlgeschlagen (bei Einzelfehlern oder globalem Fehler).
4.2 Neuer Grenzwert (max. Änderungsinfo aus dem Lauf)
Grenzwert wird gespeichert, wenn:
- Ausführung erfolgreich und manuell/geplant/Ablauf
- Geplante Ausführung und Fehlerbehandlung verlangt keine komplette Wiederholung
- Manuell und „Fehler ignorieren“
Grenzwert wird nicht gespeichert, wenn:
- Lesen aus Quelle nicht abgeschlossen
- In allen anderen Fällen
Wird der Grenzwert nicht gespeichert, fragt der nächste Lauf erneut ab diesem Grenzwert an.
4.3 Planung der nächsten Ausführung
- Nicht geplant → keine nächste Ausführung
- Fehlerhaft + Abbruch → keine nächste Ausführung
- Fehlerhaft + komplette Wiederholung → Wiederholen in 3 Minuten
- Ablaufdatum (Zeitsteuerung) erreicht → keine nächste Ausführung
- Normalfall → Nächste Ausführung gemäß Zeitsteuerung
- Bei „Mit nächster Ausführung wiederholen“: Liste geplanter Datensätze anfügen
- Teilweise Fehlerwiederholung: zusätzlicher Eintrag „Wiederholen“ in 3 Minuten
Ausnahme: Ende des Tagesintervalls erreicht → Planung auf nächsten Tag
Mit dem Abschluss ist der Warteschlangeneintrag finalisiert.
Ablaufdiagramm
flowchart TD
A[Warteschlange: Eintrag] --> B{Preflight Quelle/Ziel ok?}
B -- Nein --> X[Abbruch mit Fehler]
B -- Ja --> C{Ausführungsart = Wiederherstellen?}
C -- Ja --> WR[Backup lesen & Ziel aktualisieren] --> Z
C -- Nein --> D[Grenzwert/Flags bestimmen]
D --> E[Quelldaten lesen inkl. Geplant/Wiederholung]
E --> F[Transformation]
F --> G{2. Filter}
G -- Gefiltert --> R[Überspringen]
G -- OK --> H[Einzelverarbeitung]
H --> H1[Quelle sperren]
H1 --> H2{Abbildung vorhanden?}
H2 -- Ja --> H3{Ziel existiert?}
H3 -- Nein --> H4[Abbildung löschen & Ende]
H3 -- Ja --> H5[Ziel sperren]
H2 -- Nein --> H6[Suche via Übereinstimmungsregel / Neuanlage/Skip]
H5 --> H7{Konfliktprüfung}
H7 -- Konflikt --> H8[Konfliktverhalten anwenden]
H7 -- Kein Konflikt --> H9[Backup anlegen falls vorhanden]
H8 --> H9
H9 --> H10[Feldzuordnung / DQM]
H10 --> H11[Ziel schreiben]
H11 --> H12{Erfolgsbedingung erfüllt?}
H12 -- Nein --> R
H12 -- Ja --> H13[Abbildungen aktualisieren]
H13 --> H14[Zurückschreiben optional]
H14 --> Z[Ende Einzelverarbeitung]
Z --> K[Abschluss: Ergebnislisten, Status, Grenzwert, Planung]