Transformation
Die Transformation ist ein zentrales Werkzeug in der Datenverarbeitung von Syncler.
Sie bringt Quelldaten in die erforderliche Form für das Zielsystem, reichert Daten bei Bedarf an und kann durch logische Funktionen und Skripte komplexe Anforderungen abbilden.
Neben der klassischen Feldumformung lassen sich:
- externe Abfragen durchführen (z. B. Lookup in anderen Systemen),
- Steuerdaten für Sync-Parameter erzeugen,
- Vorbedingungen und Übereinstimmungsregeln vorbereiten,
- Filter vorbereiten (zweiter Filter),
- Webhooks und andere Nebenwirkungen gezielt anstoßen.
Einordnung in den Sync-Ablauf
- Die Transformation wird pro Datensatz sequenziell ausgeführt; Schritte bauen aufeinander auf.
- Der zweite Filter eines Syncs wird nach der Transformation angewendet.
Fehlen im Quellsystem Filterfunktionen oder ist eine systemübergreifende Prüfung nötig, kann die Transformation Felder/Flags vorbereiten, die der zweite Filter auswertet.
- Vorbedingung für Neuanlage und Übereinstimmungsregel können durch Transformationsschritte vorbereitet werden (z. B. Ableitung einer externen ID).
- Ergebnisse der Transformation können Sync-Parameter speisen (z. B. dynamische Zielwerte, Flags für Einmalübertragung).
Tipp: Planen Sie Transformationen so, dass jeder Schritt idempotent ist (gleicher Input ⇒ gleicher Output). Das erleichtert Wiederholungen und Fehlerbehandlung.
Ausführungslogik & Best Practices
- Reihenfolge: Schritte werden top-down abgearbeitet; spätere Schritte sehen die Resultate früherer.
- Datentypen: Achten Sie auf klare Typen (Datum/Zahl/Text). Nutzen Sie Typ formatieren und Konvertierungen, bevor Sie logische Bedingungen anwenden.
- Null-/Leerwerte: Behandeln Sie fehlende Felder explizit (Defaultwerte, „Erstes nicht-leeres Feld“).
- Transparenz: Fügen Sie bei komplexen Flows Hilfsfelder (Parameter/Kopien) hinzu statt Originalwerte mehrfach zu überschreiben.
- Wiederholungen: Bei Nutzung des Datensatz-Speichers darauf achten, dass irreversible Schritte (z. B. String-Schnitte) vorab kopiert werden.
Typen von Transformationsschritten
Jeder Schritt erzeugt bzw. verändert Felder im Quellschema des Datensatzes.
Im Folgenden sind die von Syncler bereitgestellten Schritte beschrieben – jeweils mit Zweck, typischen Eingaben und Hinweisen.
Parameter erzeugen
Statische oder berechnete Werte als Parameterfelder erzeugen, die später für Zuordnungen/Steuerung dienen (z. B. Defaults, Flags, Konstanten, „Erstes nicht-leeres Feld“).

Hinweise:
- Ideal für Abläufe, um Daten zwischen Syncs zu übergeben.
- Parameterfelder sind „normale“ Felder im Quellschema und können in Mappings genutzt werden.
Spalten kopieren
Aktuelle Feldwerte duplizieren, um sie unabhängig weiterzuverwenden oder zu transformieren.

Hinweise:
- Vor irreversiblen Operationen (Trim, Ersetzen, Schneiden) nutzen.
JSON in Spalten
Aus einem JSON-Schema und einer Vorlage (mit Platzhaltern) wird JSON erzeugt und anschließend in Spalten aufgelöst.

Anwendungsfälle:
- Webhook-/Abfrage-Antworten in Spalten überführen.
- Komplexe Felder (Objekte/Arrays) in flache Struktur bringen.
Hinweise: - Validieren Sie, dass die Vorlage gültiges JSON erzeugt.
Wert abbilden
Explizite Wertemappings (z. B. Code → Text). Nicht definierte Werte bleiben unverändert, sofern * nicht als Catch-All gesetzt ist.

Hinweise:
- Mappings pflegen/versionieren; fehlende Werte sichtbar machen (z. B. „UNKNOWN:
“).
Auswahllisten abbilden
Dynamische Picklists aus Systemen/Syncs oder manuell – zur flexiblen Laufzeitabbildung.

Hinweise:
- Eignet sich, wenn Zielsystem laufend neue Codes einführt.
Sage CRM-Übersetzungscode
Anzeige- zu Speicherwerten auflösen (Caption ↔ Code) direkt gegen CRM.

Hinweise:
- Reduziert redundante Wert-Mappings.
OLE-Automation- oder Unix-Datum konvertieren
Numerische Zeitstempel (Unix/OLE) in Datum/Zeit umwandeln.

Geschlecht ermitteln
Aus Vorname + Land Geschlecht ableiten und Anrede erzeugen.

Hinweise:
- Ergebnis ist probabilistisch; immer Fallback-Option vorsehen (z. B. „Guten Tag“).
- Bei unbekannten Vornamen wird kein Wert festgelegt
Zusammenführen
Neue Werte durch Konkatenation von Feldern/Trennzeichen erzeugen.

Groß- / Kleinschreibung
Text in UPPER/lower/Capitalized konvertieren (erster Buchstabe groß, Rest klein).

Abschneiden
Zeichen am Anfang/Ende eines Wertes entfernen (Default: Leerzeichen).

Ersetzen
Suchen/Ersetzen von Zeichenketten (z. B. . → ,, Zeilenumbrüche normalisieren).

Hinweise:
- Reihenfolge mehrerer Ersetzungen beachten; ggf. Regex verwenden.
HTML in Text
HTML-Dokumente in Plain-Text konvertieren; Struktur bleibt soweit möglich erhalten.

Dokument konvertieren
Dokumente (Text/Base64) von Quelle- in Zielformat konvertieren (z. B. DOCX → PDF).

Hinweise:
- Ergebnis wird im gleichen Feld abgelegt (Formatwechsel beachten).
- Dateigrößen/Quota/Performance berücksichtigen.
Typ formatieren
Daten typgerecht formatieren (Datum/Zeit, Kommazahl, Ganzzahl).

Platzhalter (Auszug):
- Datum/Zeit:
MM(Monat),yyyy(Jahr),hh/HH(Stunde 12/24),mm(Minute),ss,fff - Kommazahl:
c(Währung),p(Prozent),n2(2 Nachkommastellen) - Ganzzahl:
c,n2
Suche / Trennen mit regulärem Ausdruck
Mit Regex Werte finden oder splitten; Anzahl Treffer/Teile steuerbar.

Vollständigen Namen trennen
Anrede, Vorname, 2. Vorname, Nachname extrahieren (festes Schema oder Auto-Erkennung).

Telefonnummern trennen
Telefonnummer in Bestandteile zerlegen (z. B. Ländercode, Vorwahl, Nummer).

Nach Vorlage trennen
Zeichenketten anhand einer Musterspezifikation (Platzhalter + Trennfolgen) aufteilen; neue Felder entstehen je Platzhalter.

C# Code-Skript
Eigenen C#-Code ausführen; Datensatz als Dictionary verfügbar, Zugriff auf SDK-Helper.

Hinweise:
- Für hochkomplexe Logik; Fehlerhandling & Performance beachten.
- Seiteneffekte (externe Aufrufe) dokumentieren.
- In Cloud-Instanzen ist die Speichernutzung begrenzt. Skripte mit z.B. FileContent kann zu Abbrüchen führen.
Erstes nicht-leeres Feld
Aus einer Liste das erste befüllte Feld wählen und in ein Ziel schreiben.

Formel ausführen
Berechnungen/Entscheidungen per Formelsprache; Platzhalter für aktuelle Daten möglich.

Hinweise:
- Ergebnis landet in einem neuen Feld; Typ beachten.
KI Abfrage
KI Chat Anfrage mit OpenAI- oder Mistral-Konnektor; Modell wählbar; Anfrage mit Platzhaltern formulieren; Antwort in neuen Feldern.

Hinweise:
- Ergebnis ist je nach Modell konkret, ausformuliert oder geraten.
Datum und Uhrzeit
Datum/Zeit erzeugen oder berechnen (Quelle: Feld oder aktuelle Systemzeit); Komponenten addieren/subtrahieren, feste Uhrzeit setzen.

Daten abfragen
Beliebige Daten aus beliebigen Systemen abrufen (dynamisch Quelle/Ziel oder spezifisches System).

Hinweise:
- Liefert nur eine feste Anzahl von Datensätzen – Filter/SORT sauber definieren.
- Der erste Datensatz wird ohne Nummerierung im Namen bereitgestellt (Abwärtskompatibilität).
- Alle weiteren Datensätze erhalten eine Nummer am Feldnamen.
- Bei Systemänderungen (Import/Export, Löschen) Referenzen prüfen.
Adressen (DQM-Erweiterung)
Adressen prüfen, korrigieren und in Koordinaten auflösen.

Hinweise:
- Ergebnisfelder (Prüfstatus, Geo-Koordinaten) benennen; Korrekturen schreiben.
Datensatz-Abbildung abfragen
Bestehende Mappings (z. B. Firma ↔ Person) nachschlagen, um Ziel-IDs für Zuordnungen/Bedingungen zu erhalten.

Abfrage ausführen
Schema-unabhängige Abfrage gegen ein System (SQL, URL); System liefert Datenschema, auswählbare Felder.

Hinweise:
- Erster Datensatz wird übernommen – Filter/SORT beachten.
Webhook
Beliebigen Webhook aufrufen; Nachricht über Platzhalter konstruieren, Ergebnis in neues Feld schreiben.

Hinweise:
- JSON-Ergebnisse mit „JSON in Spalten“ auswerten.
- Doppelte Aufrufe via Checkbox vermeiden (Nachrichtenvergleich & Resultat-Wiederverwendung).
- Authentifizierung, Timeouts, Fehler-/Retry-Strategie definieren.
Zusammenspiel mit Filtern, Regeln und Parametern
- Zweiter Filter nach Transformation: Nutzen Sie Transformationsfelder als Filterkriterien (z. B.
isValid,hasParent). - Vorbedingung / Übereinstimmung: IDs/Schlüssel in der Transformation ableiten oder lookupen.
- Sync-Parameter: Dynamische Zielwerte/Steuerflags in der Transformation erzeugen und im Sync verwenden (z. B. Bedingungen an Feldzuordnungen).