Inhaltsverzeichnis
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:
- Für jeden Kontakt wird jede Relation separat verglichen (Root, STAdr, STTK…)
- Wenn eine Seite klar neuer ist (>2s Differenz): Neuere Seite gewinnt
- Wenn unklar (<2s oder kein Timestamp): „Leer verliert“ — nicht-leere Felder füllen leere Felder auf
- 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
- Die Engine versucht zunächst eine automatische Auflösung (exakte Suche nach Firmenname in der Parent-Tabelle).
- 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:
- PK-Retrieval: Das INSERT-Statement verwendet
OUTPUT INSERTED.[PK], um den generierten Primärschlüssel zurückzuerhalten. - 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