Synchronisation

Einzelzeilen-Sync

Wählen Sie eine Zeile im Diff-Grid und verwenden Sie:

  • Kontextmenu > Nach Outlook übertragen — DB-Werte in den Outlook-Kontakt
  • Kontextmenu > In Datenbank übertragen — Outlook-Werte in die DB

Beide Aktionen sind auch über das Menu Synchronisation erreichbar.


Massen-Sync (Auswahl)

Die Sync-Aktionen arbeiten mit der Checkbox-Auswahl im Grid:

  • Wenn Zeilen gecheckt sind: Nur die ausgewählten Zeilen werden synchronisiert
  • Wenn keine Zeile gecheckt ist: Nur die aktuell fokussierte Zeile
Menu-Eintrag Aktion
Auswahl nach Outlook Gecheckte Zeilen → Outlook
Auswahl in Datenbank Gecheckte Zeilen → DB
Bidirektional abgleichen Composite-Sync (siehe unten)

Alle Massen-Aktionen zeigen einen Bestätigungsdialog vor der Ausführung. Die Statusleiste zeigt nach der Aktion die Anzahl übertragener Zeilen.


Bidirektional abgleichen

Der bidirektionale Sync verwendet einen Composite-Algorithmus mit per-Relation Timestamp-Vergleich:

  1. Für jeden Kontakt wird jede Relation separat verglichen (Root, STAdr, STTK…)
  2. Wenn eine Seite klar neuer ist (>2s Differenz): Neuere Seite gewinnt
  3. Wenn unklar (<2s oder kein Timestamp): „Leer verliert“ — nicht-leere Felder füllen leere Felder auf
  4. Wenn beide nicht-leer und unterschiedlich: Feld wird übersprungen, Meldung im Protokoll

Voraussetzung: TimestampColumn muss in der Mapping-Konfiguration für jede Relation gesetzt sein, damit der Timestamp-Vergleich funktioniert.


FK-Resolver-Dialog

Beim INSERT neuer Kontakte in die Datenbank müssen Fremdschlüssel-Werte (z.B. Firmen-ID für CompanyName) aufgelöst werden.

Ablauf

  1. Die Engine versucht zunächst eine automatische Auflösung (exakte Suche nach Firmenname in der Parent-Tabelle).
  2. Bei Mehrdeutigkeit oder keinem Treffer erscheint der FK-Resolver-Dialog:
    • Suchfeld mit Live-Filter
    • Grid mit Parent-Records (nur relevante Spalten, PK versteckt)
    • Doppelklick oder „Übernehmen“ wählt den korrekten Wert

Bulk-Optionen

Button Wirkung
Übernehmen Wert für diesen Kontakt verwenden
Für alle übernehmen Gleichen Wert für alle Kontakte mit demselben Hinweis-Wert cachen
Überspringen Diesen Kontakt ohne FK-Zuordnung überspringen
Alle überspringen Alle verbleibenden unaufgelösten FK überspringen
Abbrechen Gesamten Sync-Lauf abbrechen

Die Info-Zeile zeigt: „… (12 weitere ohne Zuordnung)“ damit Sie die Gesamtmenge einschätzen können.


PK-Retrieval und Fill-Back

Nach jedem INSERT (egal welche Richtung) geschieht automatisch:

  1. PK-Retrieval: Das INSERT-Statement verwendet OUTPUT INSERTED.[PK], um den generierten Primärschlüssel zurückzuerhalten.
  2. Fill-Back: Alle leeren Felder werden von der Gegenseite aufgefüllt:
    • INSERT in DB → Outlook bekommt alle DB-Werte (inkl. FK-Display-Werte)
    • CREATE in Outlook → DB bekommt alle Outlook-Werte

Ergebnis: Beim nächsten Diff sind beide Seiten identisch — keine Endlosschleifen oder Phantom-Diffs mehr.


Denormalisierte Spalten (CopyColumns)

Manche Datenbank-Schemata enthalten denormalisierte NOT-NULL-Spalten in Child-Tabellen — z.B. trägt STTK (Telekommunikation) sowohl den Kontakt-FK (IDSTAP) als auch einen Gruppen-FK (IDST) aus der Wurzeltabelle.

Beim INSERT in solche Child-Tabellen kopiert Outlook Sync diese Spalten automatisch per Subquery aus der Wurzeltabelle. Sie müssen dafür im Mapping-Designer unter Beziehungen → CopyColumns die betroffenen Spaltennamen eintragen.

Woran erkennen Sie das Problem? Wenn beim Sync der Fehler „Cannot insert NULL into column … does not allow NULLs“ auftritt, fehlt wahrscheinlich eine CopyColumn-Konfiguration in der betroffenen Relation.


Sync-Richtung

Richtung Verhalten
Manuell (Diff anzeigen) Zeigt Diff-Grid — Benutzer entscheidet pro Zeile/Auswahl
DB → Outlook Alle DB-Änderungen automatisch nach Outlook
Outlook → DB Alle Outlook-Änderungen automatisch in die DB

Konflikt-Regel

Konflikte entstehen, wenn sich beide Seiten seit dem letzten Sync geändert haben.

Regel Verhalten
Benutzer fragen Zeile wird orange markiert — Benutzer wählt Gewinner
DB gewinnt DB-Wert wird automatisch übernommen
Outlook gewinnt Outlook-Wert wird automatisch übernommen
Neuerer gewinnt Timestamp-Vergleich (erfordert TimestampColumn in Mapping)

Löschverhalten

Verhalten Beschreibung Empfehlung
Ignorieren Gelöschte Datensätze werden übersprungen Sicherste Option, Standard
Als gelöscht markieren Datensatz bleibt erhalten, wird aber markiert Für Audit-Anforderungen
Auf Gegenseite löschen Datensatz wird auch auf der anderen Seite gelöscht Nur mit Vorsicht verwenden

Wolfgang van der Stille @ EMSR DATA d.o.o. — Outlook Sync

Zuletzt geändert: den 19.02.2026 um 23:48