Inhaltsverzeichnis
Mapping-Designer
Der Mapping-Designer ersetzt den früheren 6-Schritte-Assistenten durch ein integriertes 3-Zonen-Layout im Stil von IDE-Property-Editoren.
Aufbau: 3-Zonen-Layout
| Zone | Position | Inhalt |
|---|---|---|
| Step-Tree | Links | Baumstruktur mit allen Konfigurations-Schritten |
| Dependency-Tree | Mitte | Kontextabhängige Detail-Ansicht (Tabellen, Relationen, Felder) |
| PropertyGrid | Rechts | Editierbare Eigenschaften des ausgewählten Knotens |
Die drei Zonen sind durch Splitter getrennt — die Breiten können per Drag angepasst werden und werden gespeichert.
Step-Tree-Knoten
| Gruppe | Knoten |
|---|---|
| Quellen | Server-Verbindung |
| Datenstruktur | Wurzeltabelle, Beziehungen |
| Zuordnung | Feld-Mapping, Match-Keys |
| Optionen | Sync-Richtung, Konflikt-Regel, Löschverhalten |
| Test | Vorschau, SQL-Test |
Schritt: Quellen / Server
Konfiguriert die Datenquellen (Outlook-Konto und SQL Server).
| Feld | Beschreibung | Pflicht |
|---|---|---|
| Mapping-Name | Frei wählbarer Name (wird als Dateiname verwendet) | Ja |
| Outlook-Konto | E-Mail-Adresse des Outlook-Profils | Ja |
| Outlook-Ordner | Kontakt-Ordner (z.B. „Contacts“, „ExternalContacts“) | Ja |
| Server | SQL Server Hostname/IP (z.B. localhost, server\instanz) | Ja |
| Datenbank | Datenbankname (Dropdown nach Verbindungstest) | Ja |
| SQL-Authentifizierung | Checkbox — wenn aktiviert, Benutzer/Passwort-Felder | Nein |
| Benutzername | SQL Server Login (nur bei SQL-Auth) | Bedingt |
| Passwort | Wird DPAPI-verschlüsselt gespeichert | Bedingt |
Kommandos:
- Daten abrufen — Stellt die Verbindung her, lädt Tabellenliste und Outlook-Ordner. Zeigt WaitForm mit Fortschrittsmeldung.
- Verbindung testen — Prüft nur die DB-Verbindung ohne Tabellen zu laden.
Freigegebene Postfächer: Stores ohne direkte Outlook-Account-Zuordnung (freigegebene Postfächer, PST-Dateien) erscheinen mit dem Suffix (Shared) in der Kontenliste.
Schritt: Wurzeltabelle
Wählen Sie die Haupttabelle, die Ihre Kontaktdaten enthält.
Dependency-Tree: Zeigt die verfügbaren Tabellen mit Zeilenanzahl.
| Feld | Beschreibung |
|---|---|
| Tabelle | Wurzeltabelle (Combo mit allen verfügbaren Tabellen) |
| Primärschlüssel | PK-Spalte (Combo, automatisch aus sys.foreign_key_columns vorgeschlagen) |
| Timestamp-Spalte | Optionale Spalte für „Neuerer gewinnt“-Vergleich |
Schritt: Beziehungen (Relations)
Definiert Tabellenbeziehungen (JOINs) zwischen Wurzeltabelle und verwandten Tabellen.
Automatische Erkennung (zwei Phasen)
- Echte FK-Constraints aus
sys.foreign_key_columns - Namensmuster-Fallback — z.B. Spalte
IDSTAPin TabelleSTTKwird als FK aufSTAP.IDSTAPerkannt
Dependency-Tree: Zeigt erkannte Relationen mit Quell-/Zieltabelle und JOIN-Bedingung. Checkbox aktiviert/deaktiviert einzelne Relationen.
| Feld | Beschreibung |
|---|---|
| Zieltabelle | Verknüpfte Tabelle |
| Quellspalte | FK-Spalte in der Wurzeltabelle |
| Zielspalte | PK-Spalte in der Zieltabelle |
| Primärschlüssel | PK der Zieltabelle (für Write-Back) |
| Einzelzeile | true = OUTER APPLY + TOP 1 (verhindert Zeilen-Vervielfachung) |
| Timestamp-Spalte | Optionale Timestamp-Spalte der Relation |
Kommandos:
- Daten abrufen — Erkennt Relationen automatisch
- Join prüfen — Zeigt Statistik: Matches, Waisen, Match-%
Schritt: Feld-Mapping
Ordnet Outlook-Kontaktfelder den Datenbankspalten zu.
Dependency-Tree: Zeigt alle konfigurierten Feld-Zuordnungen mit Quelltyp, Tabelle und Spalte.
| Feld | Beschreibung |
|---|---|
| Outlook-Feld | Ziel-Feld im Outlook-Kontakt (52 Standard + Custom) |
| Tabelle | Quelle: Wurzeltabelle oder eine verwandte Tabelle |
| Spalte | Spalte in der gewählten Tabelle (Combo) |
| Filter-Spalte | Nur bei 1:N-Tabellen: Diskriminator-Spalte |
| Filter-Wert | Wert zur Filterung (z.B. TKArt = 170 für E-Mail) |
Drei Zuordnungstypen
| Typ | SQL-Muster | Beispiel | Wann verwenden |
|---|---|---|---|
Direkt (fsDirect) | alias.[Col] | STAP.VN → FirstName | 1:1-Spaltenzuordnung |
Gefiltert (fsRelated) | LEFT JOIN + WHERE | STTK.B [TKArt=170] → Email1Address | 1:N-Tabelle mit Diskriminator |
Ausdruck (fsExpression) | SQL-Fragment | CONCAT(VN, ' ', NN) → FullName | Berechnete Felder |
Tabellen-Disambiguation: Wenn eine Tabelle in mehreren Beziehungen vorkommt (z.B. C2kat für Anrede UND Titel), wird sie im Tabellen-Dropdown mit dem Quell-Spaltennamen disambiguiert: C2kat [via Anrede], C2kat [via Titel].
Schritt: Match-Keys
Definiert, welche Felder einen Kontakt eindeutig identifizieren für den Vergleich zwischen DB und Outlook.
Primär-Key (Pflicht)
Felder, die einen Kontakt zweifelsfrei zuordnen. Typische Konfigurationen:
- E-Mail-Adresse (bester Match bei gepflegten E-Mails)
- Kunden-ID als Custom UserProperty
- Kombination aus Name + Firma
Fallback-Key (Optional)
Wird verwendet, wenn der Primär-Key keinen Treffer liefert. Typisch: Vorname + Nachname + Firma.
Felder mit „Email“ oder „MAIL“ im Namen werden automatisch vorgeschlagen.
Schritt: Vorschau und SQL-Test
Vorschau: Zeigt eine Zusammenfassung des konfigurierten Mappings (Mapping-Name, Wurzeltabelle, Anzahl Beziehungen und Feld-Zuordnungen).
SQL-Test:
- SQL-Memo (oben): Zeigt das automatisch generierte SELECT-Statement mit allen JOINs, Aliasen und Filter-Bedingungen
- Test-Abfrage (Button): Führt das SQL aus und zeigt Ergebnisse im Grid
- Ergebnis-Grid (unten): Bis zu 100 Zeilen der Abfrage
Für Support: Kopieren Sie das generierte SQL und führen Sie es direkt in SSMS aus, um Probleme mit der Datenbankstruktur zu diagnostizieren.
Schritt: Sync-Optionen
| Option | Werte | Standard | Beschreibung |
|---|---|---|---|
| Sync-Richtung | Manuell, DB→Outlook, Outlook→DB | Manuell | Bestimmt ob Diff angezeigt oder automatisch synchronisiert wird |
| Konflikt-Regel | Benutzer fragen, DB gewinnt, Outlook gewinnt, Neuerer gewinnt | Benutzer fragen | Wie Konflikte (beide Seiten geändert) aufgelöst werden |
| Löschverhalten | Ignorieren, Als gelöscht markieren, Auf Gegenseite löschen | Ignorieren | Was mit gelöschten Kontakten passiert |
Kommandoleiste
Am unteren Rand des Mapping-Designers befindet sich eine Kommandoleiste:
| Button | Beschreibung |
|---|---|
| Daten abrufen | Lädt DB-Schema, Tabellen, Relationen — kontextabhängig per Step |
| Alle validieren | Prüft alle Pflichtfelder und zeigt Ergebnisse in der Statuszeile |
| Zurücksetzen | Setzt das Mapping auf ein leeres Template zurück |
| Speichern | Speichert die .mapping.json-Datei |
Die Statuszeile links in der Kommandoleiste zeigt Validierungsergebnisse und Fehlermeldungen.
Wolfgang van der Stille @ EMSR DATA d.o.o. — Outlook Sync