====== 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 ===== {{wvds:image>de:int:olsync:MappingPane_FieldMapping.png|width=100%|alt=Mapping-Designer: Feld-Mapping}} ^ 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 ===== {{wvds:image>de:int:olsync:MappingPane_Server.png|width=100%|alt=Server-Verbindung}} 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) ===== {{wvds:image>de:int:olsync:MappingPane_Relations.png|width=100%|alt=Beziehungen}} 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 ''IDSTAP'' in Tabelle ''STTK'' wird als FK auf ''STAP.IDSTAP'' erkannt **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 ===== {{wvds:image>de:int:olsync:MappingPane_FieldMapping.png|width=100%|alt=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 ===== {{wvds:image>de:int:olsync:MappingPane_SqlTest.png|width=100%|alt=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// {{tag>outlooksync benutzer mapping-designer konfiguration}}