<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>dsyr.DataBridge</title><link>https://databridge.docs.dsyr.de/</link><description>Recent content on dsyr.DataBridge</description><generator>Hugo</generator><language>de</language><atom:link href="https://databridge.docs.dsyr.de/index.xml" rel="self" type="application/rss+xml"/><item><title>D365BC — Business Central</title><link>https://databridge.docs.dsyr.de/docs/konnektoren/d365bc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/konnektoren/d365bc/</guid><description>&lt;p&gt;Der D365BC-Konnektor verbindet die DataBridge mit &lt;strong&gt;Microsoft Dynamics 365 Business Central&lt;/strong&gt;&#10;über die OData-v4-REST-API (API-Version 2.0). Er unterstützt sowohl Cloud-Umgebungen&#10;(OAuth2) als auch OnPremise-Installationen (Basic Auth).&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Eigenschaft&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Wert&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lesen&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ unterstützt&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Schreiben&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ unterstützt&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Job-Filter&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ wird als OData-&lt;code&gt;$filter&lt;/code&gt; an BC übergeben&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Status&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Freigegeben&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Getestete Mindestversion&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Business Central v17.0 (Oktober 2020)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;div class="alert alert-info" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Die Mindestversion wird nicht geprüft&lt;/div&gt;&#10;&lt;p&gt;Die Angabe zur Mindestversion beschreibt den getesteten Stand. Die DataBridge fragt die&#10;Version von Business Central &lt;strong&gt;nicht&lt;/strong&gt; ab und lehnt ältere Stände nicht ab. Ob eine ältere&#10;Installation funktioniert, hängt allein davon ab, ob sie die verwendete API-Version 2.0&#10;und die im Mapping genannten Felder bereitstellt.&lt;/p&gt;</description></item><item><title>Funktionsweise</title><link>https://databridge.docs.dsyr.de/docs/mcp-server/funktionsweise/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/mcp-server/funktionsweise/</guid><description>&lt;h2 id="endpunkt"&gt;Endpunkt&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Function&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Mcp&lt;/code&gt; (&lt;code&gt;DataBridge/Functions/McpApi.cs&lt;/code&gt;)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Route&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;POST /api/mcp&lt;/code&gt; (JSON-RPC-Austausch); &lt;code&gt;GET /api/mcp&lt;/code&gt; liefert bewusst &lt;code&gt;405&lt;/code&gt; — siehe &lt;a href="https://databridge.docs.dsyr.de/docs/mcp-server/funktionsweise/#bekannte-einschr%c3%a4nkung-get-auf-apimcp"&gt;Bekannte Einschränkung&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Auth-Level&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Function&lt;/code&gt; (Function Key als &lt;code&gt;?code=&lt;/code&gt;-Query-Parameter)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Protokoll&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;MCP über Streamable HTTP, &lt;strong&gt;stateless&lt;/strong&gt; — jede POST-Anfrage ist ein eigenständiger JSON-RPC-Austausch, es gibt keine langlebige Server-Session&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Der Server ist damit direkt an einer laufenden Function App (lokal oder in Azure) ansprechbar,&#10;ohne eigenen Prozess oder zusätzliche Infrastruktur. Da die Authentifizierung über den normalen&#10;Azure-Functions-Mechanismus läuft (Function Key), lässt sich der Server ohne zusätzliche&#10;Identity-Provider-Konfiguration einrichten — der Key kann als Query-Parameter oder als Header&#10;übergeben werden, je nachdem, was der jeweilige Client unterstützt (siehe &lt;a href="../nutzung/"&gt;Nutzung&lt;/a&gt;).&lt;/p&gt;</description></item><item><title>Metriken</title><link>https://databridge.docs.dsyr.de/docs/betrieb/logging/metriken/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/betrieb/logging/metriken/</guid><description>&lt;p&gt;Neben Traces und Requests sendet die dsyr.DataBridge eigene &lt;strong&gt;Custom Metrics&lt;/strong&gt; an&#10;Application Insights. Metriken sind numerische Zeitreihen mit Dimensionen — sie eignen&#10;sich für Dashboards, Trend-Analysen und Metric Alerts, ohne dass dafür Log-Einträge&#10;durchsucht werden müssen.&lt;/p&gt;&#10;&lt;p&gt;Die Metriken werden über &lt;code&gt;TelemetryClient.GetMetric()&lt;/code&gt; &lt;strong&gt;vorab aggregiert&lt;/strong&gt;: Das SDK&#10;sammelt die Werte lokal in 1-Minuten-Intervallen und sendet pro Intervall und&#10;Dimensionskombination einen aggregierten Datenpunkt (Summe, Anzahl, Min, Max).&lt;/p&gt;&#10;&lt;div class="alert alert-info" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Metriken unterliegen keinem Sampling&lt;/div&gt;&#10;&lt;p&gt;Weder das gepufferte Logging noch das Dependency-Sampling noch das&#10;Application-Insights-Sampling wirken auf Custom Metrics. Für belastbare &lt;strong&gt;Mengenangaben&lt;/strong&gt;&#10;sind sie deshalb die einzige verlässliche Quelle.&lt;/p&gt;</description></item><item><title>Release v2.2</title><link>https://databridge.docs.dsyr.de/docs/versionen/v2.2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/versionen/v2.2/</guid><description>&lt;h2 id="was-ist-neu"&gt;Was ist neu&lt;/h2&gt;&#10;&lt;h3 id="neue-funktionen"&gt;Neue Funktionen&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Neuer Connector: generische REST-API über OpenAPI-Spezifikation&lt;/strong&gt;: Neben BC, CE, NAV und den SQL-Connectoren steht jetzt ein generischer HTTP-Connector zur Verfügung, der ein beliebiges REST-API anhand seiner OpenAPI-/Swagger-Beschreibung anbindet (neuer Verbindungstyp &lt;code&gt;OPENAPI&lt;/code&gt;). Damit lassen sich Systeme ohne eigenen Connector über ihr veröffentlichtes API-Schema anbinden, statt eine dedizierte Implementierung zu benötigen. Details, Konfigurationsbeispiel und unterstützte Auth-Methoden siehe &lt;a href="https://databridge.docs.dsyr.de/docs/konnektoren/openapi/"&gt;OpenAPI-Connector&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Neue Authentifizierungsart „API-Key“ für HTTP-Connectoren&lt;/strong&gt;: Zusätzlich zu Basic-Auth und OAuth2 unterstützen alle HTTP-basierten Connectoren (BC, NAV, OpenAPI) jetzt die Authentifizierung über einen statischen API-Key, der als Header an jede Anfrage angehängt wird (&lt;code&gt;apiKeyHeader&lt;/code&gt; / &lt;code&gt;apiKeyValue&lt;/code&gt; in der Connection). Zusätzlich kann der OAuth2-Token-Endpunkt über &lt;code&gt;tokenUrl&lt;/code&gt; frei konfiguriert werden, statt fest auf den Microsoft-Login-Endpunkt zu zeigen — relevant für Systeme mit eigenem oder abweichendem Token-Server.&lt;/p&gt;</description></item><item><title>Verbindungen (connections)</title><link>https://databridge.docs.dsyr.de/docs/konfiguration/verbindungen/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/konfiguration/verbindungen/</guid><description>&lt;p&gt;Die Tabelle &lt;code&gt;connections&lt;/code&gt; ist die Grundlage jeder DataBridge-Konfiguration. Sie enthält&#10;die Zugangsdaten zu allen Systemen, mit denen die DataBridge kommuniziert — sowohl&#10;Quell- als auch Zielsysteme.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="tabellenstruktur"&gt;Tabellenstruktur&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Spalte&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Wert&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Beschreibung&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;PartitionKey&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;connection&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Muss immer &lt;code&gt;connection&lt;/code&gt; lauten&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;RowKey&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;frei wählbar&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Eindeutiger Name dieser Verbindung. Wird in der &lt;code&gt;jobs&lt;/code&gt;-Tabelle als Referenz verwendet.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Timestamp&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;automatisch&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Systemseitig gesetzt, nicht bearbeitbar&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Connector-Typ&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Gibt an, um welches System es sich handelt (siehe Tabelle unten)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Json&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;JSON-Objekt&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;System-spezifische Verbindungsparameter (unterscheidet sich je nach &lt;code&gt;Type&lt;/code&gt;)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;div class="alert alert-warning" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;PartitionKey ist nicht frei wählbar&lt;/div&gt;&#10;&lt;p&gt;Die DataBridge liest die Tabelle ausschließlich mit dem Filter&#10;&lt;code&gt;PartitionKey eq 'connection'&lt;/code&gt;. Zeilen mit einem abweichenden PartitionKey werden &lt;strong&gt;ohne&#10;Fehlermeldung und ohne Warnung ignoriert&lt;/strong&gt; — die Verbindung existiert dann für die&#10;DataBridge nicht, und jeder Job, der sie referenziert, wird als unvollständig verworfen.&lt;/p&gt;</description></item><item><title>Voraussetzungen</title><link>https://databridge.docs.dsyr.de/docs/einrichtung/voraussetzungen/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/einrichtung/voraussetzungen/</guid><description>&lt;p&gt;Bevor die DataBridge installiert werden kann, müssen die folgenden Voraussetzungen&#10;in Azure, Dataverse und Business Central erfüllt sein.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="azure-abonnement"&gt;Azure-Abonnement&lt;/h2&gt;&#10;&lt;p&gt;Ein aktives Azure-Abonnement ist Pflicht. Im Abonnement müssen die folgenden&#10;&lt;strong&gt;Resource Provider&lt;/strong&gt; registriert sein:&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Provider&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Zweck&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: center"&gt;Pflicht&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Microsoft.Insights&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Application Insights&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Microsoft.OperationalInsights&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Log Analytics&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Microsoft.ServiceBus&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Service Bus Namespace&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Microsoft.Storage&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Table Storage, Blob Storage&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Microsoft.Web&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Azure Function App&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Microsoft.Dashboard&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Grafana-Dashboard in Application Insights&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Microsoft.KeyVault&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Sichere Speicherung von Connection Strings&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;optional&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Microsoft.Relay&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Hybrid Connections (OnPremise-Anbindung)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;optional&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Microsoft.App&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Container Apps&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;veraltet / deprecated&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Provider können im Azure Portal unter &lt;strong&gt;Abonnement → Ressourcenanbieter&lt;/strong&gt; aktiviert werden.&lt;/p&gt;</description></item><item><title>Wie es funktioniert</title><link>https://databridge.docs.dsyr.de/docs/ueberblick/wie-es-funktioniert/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/ueberblick/wie-es-funktioniert/</guid><description>&lt;h2 id="das-grundprinzip"&gt;Das Grundprinzip&lt;/h2&gt;&#10;&lt;p&gt;Die dsyr.DataBridge arbeitet wie ein &lt;strong&gt;kontinuierlicher Datenstrom&lt;/strong&gt; zwischen zwei Systemen.&#10;Sie fragt regelmäßig: &lt;em&gt;„Was hat sich seit dem letzten Mal geändert?&amp;quot;&lt;/em&gt; — und überträgt&#10;genau diese Änderungen ins Zielsystem. Nichts mehr, nichts weniger.&lt;/p&gt;&#10;&lt;p&gt;Kein manueller Export. Kein Doppelpflegen. Keine Vollsynchronisation, die alles neu&#10;schreibt. Nur die Differenz, automatisch, im Minutentakt.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="der-datenfluss-in-fünf-schritten"&gt;Der Datenfluss in fünf Schritten&lt;/h2&gt;&#10;&lt;pre class="mermaid"&gt;flowchart LR&#10; A([Quelldaten\nändern sich]) --&amp;gt;|&amp;#34;alle 2 Minuten\nprüfen&amp;#34;| B[DataBridge\nerkennt Änderung]&#10; B --&amp;gt;|&amp;#34;Datensätze\npuffern&amp;#34;| C[(Service Bus\nQueue)]&#10; C --&amp;gt;|&amp;#34;Nachricht\nverarbeiten&amp;#34;| D[Felder\nmappen &amp;amp; wandeln]&#10; D --&amp;gt;|&amp;#34;schreiben&amp;#34;| E([Zielsystem\naktualisiert])&#10; E --&amp;gt;|&amp;#34;Stand merken&amp;#34;| F[(Watermark\ngespeichert)]&#10; F -.-&amp;gt;|&amp;#34;nächster Lauf\nstartet hier&amp;#34;| B&#10;&#10; style A fill:#e8f5f1,stroke:#18b28d&#10; style E fill:#e8f5f1,stroke:#18b28d&#10; style C fill:#fff3e0,stroke:#f57c00&#10; style F fill:#e3f2fd,stroke:#1565c0&lt;/pre&gt;&#10;&lt;h3 id="schritt-1--änderungen-erkennen"&gt;Schritt 1 — Änderungen erkennen&lt;/h3&gt;&#10;&lt;p&gt;Alle zwei Minuten (konfigurierbar) startet ein Timer. Die DataBridge fragt das Quellsystem:&#10;&lt;em&gt;„Gib mir alle Datensätze, die seit meinem letzten Stand geändert wurden.&amp;quot;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Technische Architektur</title><link>https://databridge.docs.dsyr.de/docs/ueberblick/architektur/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/ueberblick/architektur/</guid><description>&lt;div class="alert alert-info" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Zielgruppe&lt;/div&gt;&#10;&lt;p&gt;Diese Seite richtet sich an &lt;strong&gt;Administratoren und technische Nutzer&lt;/strong&gt;, die den internen&#10;Aufbau der DataBridge verstehen oder Probleme diagnostizieren möchten.&#10;Für einen konzeptuellen Einstieg siehe &lt;a href="../wie-es-funktioniert/"&gt;Wie es funktioniert&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="azure-komponenten"&gt;Azure-Komponenten&lt;/h2&gt;&#10;&lt;p&gt;Die DataBridge besteht aus mehreren Azure-Diensten, die in einer gemeinsamen&#10;Ressourcengruppe betrieben werden:&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Komponente&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Dienst&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Rolle&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Function App&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Azure Functions (Isolated Worker, .NET 10)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Ausführungsumgebung für alle Funktionen&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;App Service Plan&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Microsoft.Web/serverfarms&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Compute-Plan: Y1 (Consumption, Standard) oder EP1–EP3 (Premium)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Service Bus&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Azure Service Bus Namespace&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Puffer zwischen Erkennung und Verarbeitung&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Table Storage&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Azure Storage Account&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Laufzeit-Konfiguration (Connections, Jobs, Mappings, Watermark)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Application Insights&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Azure Monitor&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Logging, Telemetrie, Alerting; Traces und ausgehende Aufrufe werden gesampelt&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Grafana-Dashboard&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Microsoft.Dashboard/dashboards&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Vorkonfiguriertes Betriebsdashboard im Application-Insights-Blade (seit v2.1, wird immer mitdeployt)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Metric Alerts + Action Group&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Azure Monitor&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Dead-Letter- und Queue-Längen-Alerts, optional über &lt;code&gt;enableAlerts&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;div class="alert alert-warning" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Eigene Infrastruktur&lt;/div&gt;&#10;&#10;&#10;Alle Komponenten laufen im **eigenen Azure-Abonnement** des Kunden. Die DataBridge nutzt&#10;keinen geteilten Dienst im Datenpfad — Datenverkehr und Konfiguration verlassen das&#10;Kunden-Abonnement nicht. Beim containerisierten Betrieb wird lediglich das Container-Image&#10;aus der WYSA-Registry bezogen.&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="architektur-nach-dem-c4-modell"&gt;Architektur nach dem C4-Modell&lt;/h2&gt;&#10;&lt;p&gt;Die folgenden drei Diagramme folgen dem &lt;a href="https://c4model.com/"&gt;C4-Modell&lt;/a&gt; (Context →&#10;Container → Component) — von außen nach innen, jede Ebene zoomt weiter in die&#10;DataBridge hinein.&lt;/p&gt;</description></item><item><title>D365CE — Dataverse / Customer Engagement</title><link>https://databridge.docs.dsyr.de/docs/konnektoren/d365ce/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/konnektoren/d365ce/</guid><description>&lt;p&gt;Der D365CE-Konnektor verbindet die DataBridge mit &lt;strong&gt;Microsoft Dataverse&lt;/strong&gt; und&#10;&lt;strong&gt;Dynamics 365 Customer Engagement&lt;/strong&gt; über das offizielle Dataverse SDK.&#10;Er nutzt die Change Tracking API für eine lückenlose Erkennung aller Änderungen.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Eigenschaft&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Wert&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lesen&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ unterstützt&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Schreiben&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ unterstützt&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Job-Filter&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ clientseitig nach dem Abruf&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Status&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Freigegeben&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Getestete Mindestversion&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Dataverse / D365CE v9.1&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Die Mindestversion beschreibt den getesteten Stand; eine Versionsprüfung findet im Code&#10;nicht statt.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="voraussetzung-change-tracking-aktivieren"&gt;Voraussetzung: Change Tracking aktivieren&lt;/h2&gt;&#10;&lt;p&gt;Für alle Dataverse-Tabellen, die als &lt;strong&gt;Quelle&lt;/strong&gt; genutzt werden, muss Change Tracking&#10;aktiviert sein. Ohne Change Tracking kann der Konnektor keine Differenzabfragen&#10;durchführen.&lt;/p&gt;</description></item><item><title>Installation</title><link>https://databridge.docs.dsyr.de/docs/einrichtung/installation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/einrichtung/installation/</guid><description>&lt;p&gt;Für die Installation gibt es zwei Wege:&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Weg&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Wann geeignet&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;&lt;a href="https://databridge.docs.dsyr.de/docs/einrichtung/installation/#weg-1--azure-marketplace-empfohlen"&gt;Azure Marketplace&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Regelfall. Läuft vollständig im Azure Portal, keine lokale Software nötig.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;&lt;a href="https://databridge.docs.dsyr.de/docs/einrichtung/installation/#weg-2--bicep--azure-cli"&gt;Bicep / Azure CLI&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Automatisierte oder wiederholbare Deployments, Integration in eine Pipeline.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Beide Wege legen dieselben Ressourcen an und sind gleichwertig im Ergebnis.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="weg-1--azure-marketplace-empfohlen"&gt;Weg 1 — Azure Marketplace (empfohlen)&lt;/h2&gt;&#10;&lt;h3 id="1-ressourcengruppe-anlegen"&gt;1. Ressourcengruppe anlegen&lt;/h3&gt;&#10;&lt;p&gt;Im Azure Portal eine neue Ressourcengruppe für die DataBridge-Instanz erstellen.&#10;Pro Umgebung (Test, Produktion) wird eine eigene Ressourcengruppe verwendet.&lt;/p&gt;</description></item><item><title>Jobs (jobs)</title><link>https://databridge.docs.dsyr.de/docs/konfiguration/jobs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/konfiguration/jobs/</guid><description>&lt;p&gt;Ein &lt;strong&gt;Job&lt;/strong&gt; beschreibt genau eine Synchronisationsrichtung zwischen zwei Systemen:&#10;er verbindet eine Quelltabelle mit einer Zieltabelle, legt den Zeitplan fest und&#10;verweist auf das zugehörige Mapping.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="tabellenstruktur"&gt;Tabellenstruktur&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Spalte&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: center"&gt;Pflicht&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Beschreibung&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;PartitionKey&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Muss immer &lt;code&gt;job&lt;/code&gt; lauten.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;RowKey&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Eindeutiger Jobname. Wird im Logging und als Referenz für ResponseJobs verwendet.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;IsActive&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;true&lt;/code&gt; = Job wird von &lt;code&gt;GetChanges&lt;/code&gt; ausgeführt. &lt;code&gt;false&lt;/code&gt; = Job wird nur indirekt (als ResponseJob) aufgerufen.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;SourceConnection&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;RowKey-Referenz auf einen Eintrag in der &lt;code&gt;connections&lt;/code&gt;-Tabelle (Quelldaten).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;TargetConnection&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;RowKey-Referenz auf einen Eintrag in der &lt;code&gt;connections&lt;/code&gt;-Tabelle (Zieldaten).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Mapping&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;PartitionKey-Referenz auf eine Gruppe von Einträgen in der &lt;code&gt;mappings&lt;/code&gt;-Tabelle.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Source&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Quellressource (Tabelle, Entität, Pfad oder Aktion). Überschreibt die &lt;code&gt;SourceTable&lt;/code&gt; der Mapping-Zeilen für diesen Job (siehe &lt;a href="https://databridge.docs.dsyr.de/docs/konfiguration/jobs/#source-und-target--job-eigene-ressourcenpfade"&gt;unten&lt;/a&gt;).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Target&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Zielressource (Tabelle, Entität, Pfad oder Aktion). Überschreibt die &lt;code&gt;TargetTable&lt;/code&gt; der Mapping-Zeilen für diesen Job (siehe &lt;a href="https://databridge.docs.dsyr.de/docs/konfiguration/jobs/#source-und-target--job-eigene-ressourcenpfade"&gt;unten&lt;/a&gt;).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Order&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Ganzzahl. Legt die Ausführungsreihenfolge fest — muss über &lt;strong&gt;alle&lt;/strong&gt; Jobs eindeutig sein.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;WatermarkField&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Feldname im &lt;strong&gt;Quellsystem&lt;/strong&gt;, der als Änderungsindikator genutzt wird (meistens ein Datums-/Zeitstempelfeld). Nur bei &lt;code&gt;WatermarkType&lt;/code&gt; = &lt;code&gt;date&lt;/code&gt; oder &lt;code&gt;datetime&lt;/code&gt; erforderlich; bei &lt;code&gt;string&lt;/code&gt; (Dataverse Change Tracking) bleibt das Feld leer.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;WatermarkType&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Typ des Watermark-Wertes: &lt;code&gt;date&lt;/code&gt;, &lt;code&gt;datetime&lt;/code&gt; oder &lt;code&gt;string&lt;/code&gt; (Details: &lt;a href="../watermarks/"&gt;Watermarks&lt;/a&gt;).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Filter&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Filterausdruck für die Quellanfrage. Format ist systemabhängig (siehe unten).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Schedule&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;CRON-Ausdruck (6-stellig, NCrontab). Wenn leer, läuft der Job bei jedem Timer-Aufruf.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Action&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Steuert, welche Änderungsarten gelesen werden, oder benennt eine Aktion. Leer = &lt;code&gt;NewUpdate&lt;/code&gt;. &lt;strong&gt;Wirkt bei den CRUD-Werten (&lt;code&gt;Delete&lt;/code&gt;, &lt;code&gt;DeleteOnUpdate&lt;/code&gt;) nur bei D365CE als Quellsystem&lt;/strong&gt; (siehe unten); ein nicht erkannter Wert schaltet den Job auf &lt;code&gt;InvokeAction&lt;/code&gt; (siehe unten).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Priority&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Standard&lt;/code&gt; (Vorgabe), &lt;code&gt;High&lt;/code&gt; oder &lt;code&gt;Low&lt;/code&gt;. Steuert die Service-Bus-Queue.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;ResponseJob&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;RowKey eines anderen Jobs, der nach erfolgreichem Schreiben automatisch ausgeführt wird.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;IsValid&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Reserviert. Die Spalte kommt in bestehenden Tabellen vor, wird von der DataBridge aber nicht gelesen und hat &lt;strong&gt;keine Wirkung&lt;/strong&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;div class="alert alert-warning" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;PartitionKey ist nicht frei wählbar&lt;/div&gt;&#10;&lt;p&gt;Die DataBridge liest die Tabelle ausschließlich mit dem Filter &lt;code&gt;PartitionKey eq 'job'&lt;/code&gt;.&#10;Zeilen mit einem abweichenden PartitionKey werden &lt;strong&gt;ohne Fehlermeldung und ohne Warnung&#10;ignoriert&lt;/strong&gt; — der Job existiert dann für die DataBridge schlicht nicht.&lt;/p&gt;</description></item><item><title>Monitoring &amp; Alerts</title><link>https://databridge.docs.dsyr.de/docs/betrieb/monitoring/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/betrieb/monitoring/</guid><description>&lt;p&gt;Ein funktionierendes Monitoring erkennt Probleme, bevor sie auffallen.&#10;Die DataBridge kann über &lt;strong&gt;Azure Monitor Alert Rules&lt;/strong&gt; so konfiguriert werden,&#10;dass bei Fehlern, Queue-Staus oder Dead-Letter-Einträgen automatisch Benachrichtigungen&#10;ausgelöst werden.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="aufbau-des-alert-systems"&gt;Aufbau des Alert-Systems&lt;/h2&gt;&#10;&lt;p&gt;Das Azure-Alert-System besteht aus zwei Komponenten:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;Alert Rule Action Group&#10;────────────────── ──────────────────────────&#10;Bedingung definieren → Wer wird benachrichtigt?&#10;Scope: Ressource E-Mail, SMS, Webhook, Azure Role&#10;Condition: KQL / Metric&#10;Schwellwert festlegen&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Empfohlene Reihenfolge:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Zuerst die &lt;strong&gt;Action Group&lt;/strong&gt; anlegen (Empfänger)&lt;/li&gt;&#10;&lt;li&gt;Dann die &lt;strong&gt;Alert Rules&lt;/strong&gt; darauf zeigen lassen&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="action-group-anlegen"&gt;Action Group anlegen&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;Azure Portal → Monitor → Warnungen → Action Groups → Erstellen&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Operationen</title><link>https://databridge.docs.dsyr.de/docs/mcp-server/operationen/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/mcp-server/operationen/</guid><description>&lt;p&gt;Alle zehn Tools sind als &lt;code&gt;ReadOnly = true&lt;/code&gt;, &lt;code&gt;Idempotent = true&lt;/code&gt; und &lt;code&gt;Destructive = false&lt;/code&gt; markiert&#10;(MCP-Tool-Annotationen, die dem aufrufenden Client mitgeben, dass wiederholte Aufrufe risikolos&#10;sind). Kein Tool schreibt, löscht oder sendet — weder in der &lt;code&gt;jobs&lt;/code&gt;-/&lt;code&gt;mappings&lt;/code&gt;-Tabelle, noch in&#10;den Service-Bus-Queues, noch in einem Quell-/Zielsystem.&lt;/p&gt;&#10;&lt;div class="alert alert-warning" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Grenze ist Metadaten vs. Nutzdaten, nicht nur lesend vs. schreibend&lt;/div&gt;&#10;&lt;p&gt;Auch innerhalb der reinen Lesezugriffe gibt es eine bewusste zweite Grenze: Betriebs-/&#10;Konfigurationsdaten (Job-Namen, Schemata, Fehlermeldungen, Zeitstempel) sind unkritisch und werden&#10;vollständig zurückgegeben. &lt;strong&gt;Fachliche Nutz-/Kundendaten&lt;/strong&gt; — z. B. der Inhalt einer&#10;Service-Bus-Nachricht — werden dagegen &lt;strong&gt;nie&lt;/strong&gt; zurückgegeben, selbst wenn das zugrunde liegende&#10;Tool ansonsten &amp;ldquo;nur liest&amp;rdquo;. Details dazu unten bei den Peek-Tools.&lt;/p&gt;</description></item><item><title>Performance &amp; Laufzeiten</title><link>https://databridge.docs.dsyr.de/docs/betrieb/logging/performance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/betrieb/logging/performance/</guid><description>&lt;p&gt;Die folgenden Abfragen können direkt im &lt;strong&gt;Logs&lt;/strong&gt;-Bereich von Application Insights&#10;(Kusto Query Language) ausgeführt werden.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="laufzeiten-und-fehler"&gt;Laufzeiten und Fehler&lt;/h2&gt;&#10;&lt;h3 id="laufzeiten-aller-funktionen-letzte-24-stunden"&gt;Laufzeiten aller Funktionen (letzte 24 Stunden)&lt;/h3&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code class="language-kusto" data-lang="kusto"&gt;requests&#10;| where timestamp &amp;gt; ago(24h)&#10;| summarize&#10; Aufrufe = count(),&#10; DurchschnittMs = avg(duration),&#10; P95Ms = percentile(duration, 95),&#10; Fehler = countif(success == false)&#10; by name&#10;| order by DurchschnittMs desc&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="verlauf-einer-einzelnen-funktion-letzte-7-tage"&gt;Verlauf einer einzelnen Funktion (letzte 7 Tage)&lt;/h3&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code class="language-kusto" data-lang="kusto"&gt;requests&#10;| where timestamp &amp;gt; ago(7d)&#10;| where name == &amp;#34;GetChanges&amp;#34;&#10;| summarize&#10; P50Ms = percentile(duration, 50),&#10; P95Ms = percentile(duration, 95),&#10; Fehler = countif(success == false),&#10; Läufe = count()&#10; by bin(timestamp, 1h)&#10;| order by timestamp asc&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="durchschnittliche-laufzeit-der-letzten-30-tage-täglich"&gt;Durchschnittliche Laufzeit der letzten 30 Tage (täglich)&lt;/h3&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code class="language-kusto" data-lang="kusto"&gt;requests&#10;| where timestamp &amp;gt; ago(30d)&#10;| summarize&#10; DurchschnittMs = avg(duration),&#10; P95Ms = percentile(duration, 95)&#10; by name, bin(timestamp, 1d)&#10;| order by name asc, timestamp asc&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="fehlerquote-je-funktion-letzte-7-tage"&gt;Fehlerquote je Funktion (letzte 7 Tage)&lt;/h3&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code class="language-kusto" data-lang="kusto"&gt;requests&#10;| where timestamp &amp;gt; ago(7d)&#10;| summarize&#10; Gesamt = count(),&#10; Fehler = countif(success == false),&#10; FehlerPct = round(100.0 * countif(success == false) / count(), 1)&#10; by name&#10;| order by FehlerPct desc&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="warnungen-und-fehler-im-zeitverlauf"&gt;Warnungen und Fehler im Zeitverlauf&lt;/h3&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code class="language-kusto" data-lang="kusto"&gt;traces&#10;| where timestamp &amp;gt; ago(7d)&#10;| where severityLevel &amp;gt;= 2 // 2 = Warning, 3 = Error&#10;| summarize Anzahl = count() by severityLevel, bin(timestamp, 1h), operation_Name&#10;| order by timestamp asc&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="top-10-häufigste-fehlermeldungen"&gt;Top-10 häufigste Fehlermeldungen&lt;/h3&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code class="language-kusto" data-lang="kusto"&gt;exceptions&#10;| where timestamp &amp;gt; ago(7d)&#10;| summarize Anzahl = count() by outerMessage&#10;| top 10 by Anzahl desc&#10;&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#10;&lt;h2 id="einzelne-ausführung-nachvollziehen"&gt;Einzelne Ausführung nachvollziehen&lt;/h2&gt;&#10;&lt;h3 id="alle-einträge-einer-ausführung-per-operation_id"&gt;Alle Einträge einer Ausführung (per operation_Id)&lt;/h3&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code class="language-kusto" data-lang="kusto"&gt;union requests, traces, exceptions&#10;| where operation_Id == &amp;#34;&amp;lt;operation_Id hier einfügen&amp;gt;&amp;#34;&#10;| project timestamp, itemType, severityLevel, message, outerMessage, operation_Name&#10;| order by timestamp asc&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="fehlerläufe-mit-allen-zugehörigen-traces-letzte-24-stunden"&gt;Fehlerläufe mit allen zugehörigen Traces (letzte 24 Stunden)&lt;/h3&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code class="language-kusto" data-lang="kusto"&gt;let fehlgeschlagene =&#10; requests&#10; | where timestamp &amp;gt; ago(24h)&#10; | where success == false&#10; | project operation_Id, FunktionsName = name, Startzeit = timestamp;&#10;traces&#10;| where timestamp &amp;gt; ago(24h)&#10;| join kind=inner fehlgeschlagene on operation_Id&#10;| project Startzeit, FunktionsName, severityLevel, message&#10;| order by Startzeit desc, severityLevel desc&#10;&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#10;&lt;h2 id="abhängigkeiten"&gt;Abhängigkeiten&lt;/h2&gt;&#10;&lt;h3 id="langsamste-abhängigkeiten-letzte-24-stunden"&gt;Langsamste Abhängigkeiten (letzte 24 Stunden)&lt;/h3&gt;&#10;&lt;p&gt;Zeigt die ausgehenden Aufrufe an Quell- und Zielsysteme mit den höchsten Laufzeiten:&lt;/p&gt;</description></item><item><title>Release v2.1</title><link>https://databridge.docs.dsyr.de/docs/versionen/v2.1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/versionen/v2.1/</guid><description>&lt;h2 id="was-ist-neu"&gt;Was ist neu&lt;/h2&gt;&#10;&lt;h3 id="neue-funktionen"&gt;Neue Funktionen&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Statische Schlüsselwerte für Lookups&lt;/strong&gt;: Ein Lookup kann jetzt gegen einen fest hinterlegten Wert aufgelöst werden, ohne dass dafür ein Quellfeld existieren muss. Dazu wird im Schlüssel (&lt;code&gt;Keyvalue&lt;/code&gt;) statt eines &lt;code&gt;attributeName&lt;/code&gt; ein &lt;code&gt;StaticValue&lt;/code&gt; angegeben. Nützlich, wenn ein Lookup immer auf denselben Zieldatensatz zeigen soll (z.B. eine feste Kategorie oder ein Standard-Datensatz).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Mehrere Ziel-Schlüssel je Mapping mit Rangfolge&lt;/strong&gt;: Ein Table-Mapping bzw. ein Lookup kann nun mehrere Ziel-Schlüssel (&lt;code&gt;TargetKeys&lt;/code&gt;) besitzen. Die Schlüssel werden anhand des neuen Felds &lt;code&gt;KeyRank&lt;/code&gt; in aufsteigender Reihenfolge geprüft; sobald ein Schlüssel im Zielsystem einen Datensatz findet, wird dieser verwendet und die weiteren Schlüssel werden übersprungen. Damit lassen sich unterschiedliche Schlüssel gegen das CRM zulassen (z.B. zuerst eine externe ID, danach ersatzweise eine Nummer). Bestehende Mappings mit einem einzelnen &lt;code&gt;TargetKey&lt;/code&gt; funktionieren unverändert weiter.&lt;/p&gt;</description></item><item><title>D365NAV — Microsoft Dynamics NAV</title><link>https://databridge.docs.dsyr.de/docs/konnektoren/d365nav/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/konnektoren/d365nav/</guid><description>&lt;p&gt;Der D365NAV-Konnektor verbindet die DataBridge mit &lt;strong&gt;Microsoft Dynamics NAV&lt;/strong&gt;&#10;über OData. Er ist auf die ältere NAV-API-Struktur ausgelegt und unterstützt auch&#10;OnPremise-Installationen mit NTLM-Authentifizierung.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Eigenschaft&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Wert&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lesen&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ unterstützt&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Schreiben&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ unterstützt&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Job-Filter&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ wird als OData-&lt;code&gt;$filter&lt;/code&gt; an NAV übergeben&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Status&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Freigegeben&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Getestete Mindestversion&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;NAV 2018&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;div class="alert alert-info" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Die Mindestversion wird nicht geprüft&lt;/div&gt;&#10;&lt;p&gt;Die Angabe beschreibt den getesteten Stand. Die DataBridge fragt die NAV-Version &lt;strong&gt;nicht&lt;/strong&gt;&#10;ab. Ältere Installationen können funktionieren, sofern sie OData mit &lt;code&gt;$metadata&lt;/code&gt;&#10;bereitstellen — abgesichert ist das jedoch nicht.&lt;/p&gt;</description></item><item><title>Grafana-Dashboard</title><link>https://databridge.docs.dsyr.de/docs/betrieb/grafana-dashboard/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/betrieb/grafana-dashboard/</guid><description>&lt;p&gt;Seit &lt;strong&gt;v2.1&lt;/strong&gt; liefert jede Installation ein vorkonfiguriertes &lt;strong&gt;Grafana-Dashboard&lt;/strong&gt; mit.&#10;Es zeigt auf einen Blick, ob die DataBridge läuft, wie schnell sie arbeitet und wo Fehler&#10;auftreten — ohne dass dafür KQL-Abfragen geschrieben werden müssen.&lt;/p&gt;&#10;&lt;div class="alert alert-info" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Ohne Zutun vorhanden&lt;/div&gt;&#10;&lt;p&gt;Das Dashboard wird bei &lt;strong&gt;jedem&lt;/strong&gt; Deployment automatisch angelegt. Es gibt keinen&#10;Schalter zum Abwählen und keine manuelle Einrichtung. Zusätzliche Kosten entstehen&#10;nicht — die Abfragen laufen gegen die ohnehin vorhandene Application-Insights- und&#10;Service-Bus-Instanz.&lt;/p&gt;</description></item><item><title>Mappings (mappings)</title><link>https://databridge.docs.dsyr.de/docs/konfiguration/mappings/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/konfiguration/mappings/</guid><description>&lt;p&gt;Die &lt;code&gt;mappings&lt;/code&gt;-Tabelle ist die mächtigste Konfigurationsebene der DataBridge.&#10;Sie legt für jedes Feld fest: woher kommt der Wert, wohin geht er, und wie wird&#10;er unterwegs transformiert.&lt;/p&gt;&#10;&lt;p&gt;Ein Mapping ist eine &lt;strong&gt;Gruppe von Zeilen&lt;/strong&gt; in der Tabelle — alle mit demselben&#10;&lt;code&gt;PartitionKey&lt;/code&gt;. Jede Zeile beschreibt genau eine Feld-Zuordnung.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="tabellenstruktur"&gt;Tabellenstruktur&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Spalte&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: center"&gt;Pflicht&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Beschreibung&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;PartitionKey&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Name des Mappings. Wird im Job unter &lt;code&gt;Mapping&lt;/code&gt; referenziert. Im Gegensatz zu &lt;code&gt;jobs&lt;/code&gt; und &lt;code&gt;connections&lt;/code&gt; ist der PartitionKey hier &lt;strong&gt;frei wählbar&lt;/strong&gt; — er dient der Gruppierung.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;RowKey&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Eindeutiger Bezeichner innerhalb des Mappings. Konvention: &lt;code&gt;_quellfeld__zielfeld_&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;SourceTable&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Name der Quelltabelle/-entität. Muss innerhalb eines Mappings konsistent sein.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;SourceField&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Name des Quellfeldes. Kann leer sein (bei &lt;code&gt;DefaultValue&lt;/code&gt;) oder mit &lt;code&gt;_&lt;/code&gt; beginnen — dann handelt es sich um ein &lt;a href="https://databridge.docs.dsyr.de/docs/konfiguration/mappings/#virtuelle-felder"&gt;virtuelles Feld&lt;/a&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;TargetTable&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Name der Zieltabelle/-entität. Muss innerhalb eines Mappings konsistent sein.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;TargetField&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;✅&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Name des Zielfeldes. Muss dem tatsächlichen API-/Spaltenname entsprechen.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;TargetKey&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;JSON-Objekt. Definiert, wie ein bestehender Datensatz im Zielsystem identifiziert wird (für Upsert-Logik).&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;SourceOperation&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;JSON-Objekt der Form &lt;code&gt;{ &amp;quot;Operations&amp;quot;: [ … ] }&lt;/code&gt;. Transformation beim &lt;strong&gt;Lesen&lt;/strong&gt; aus der Quelle.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;TargetOperation&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: center"&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;JSON-Objekt der Form &lt;code&gt;{ &amp;quot;Operations&amp;quot;: [ … ] }&lt;/code&gt;. Transformationen beim &lt;strong&gt;Schreiben&lt;/strong&gt; ins Ziel.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h3 id="rowkey-namenskonvention"&gt;RowKey-Namenskonvention&lt;/h3&gt;&#10;&lt;p&gt;Die empfohlene Konvention für den RowKey: &lt;code&gt;_quellfeld__zielfeld_&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Nutzung</title><link>https://databridge.docs.dsyr.de/docs/mcp-server/nutzung/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/mcp-server/nutzung/</guid><description>&lt;p&gt;Der Server spricht Standard-MCP über Streamable HTTP — grundsätzlich verbindet sich jeder&#10;MCP-fähige Client über dieselbe URL (&lt;code&gt;.../api/mcp?code=&amp;lt;Function-Key&amp;gt;&lt;/code&gt;). Die folgenden Abschnitte&#10;zeigen die konkrete Einrichtung für die gängigsten Clients.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="claude-code"&gt;Claude Code&lt;/h2&gt;&#10;&lt;p&gt;Dieses Repository bringt bereits eine passende &lt;a href="https://docs.claude.com/en/docs/claude-code/mcp"&gt;.mcp.json&lt;/a&gt;&#10;mit:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;mcpServers&amp;#34;&lt;/span&gt;: {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;databridge&amp;#34;&lt;/span&gt;: {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;http&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;url&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;http://localhost:7062/api/mcp?code=${DATABRIDGE_FUNCTION_KEY:-local}&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Lokal (Core Tools / Debugger):&lt;/strong&gt; Der lokale Function-Host prüft den Auth-Level &lt;code&gt;Function&lt;/code&gt; nicht&#10;— der Platzhalterwert &lt;code&gt;local&lt;/code&gt; in der URL reicht aus. Voraussetzung ist nur, dass die Function App&#10;tatsächlich auf &lt;strong&gt;Port 7062&lt;/strong&gt; läuft (nicht der &lt;code&gt;func&lt;/code&gt;-Standard 7071!):&lt;/p&gt;</description></item><item><title>Umgebungsvariablen</title><link>https://databridge.docs.dsyr.de/docs/einrichtung/umgebungsvariablen/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/einrichtung/umgebungsvariablen/</guid><description>&lt;p&gt;Die DataBridge Function App wird über &lt;strong&gt;Anwendungseinstellungen&lt;/strong&gt; (Application Settings)&#10;konfiguriert. Diese sind im Azure Portal unter &lt;strong&gt;Function App → Einstellungen →&#10;Umgebungsvariablen&lt;/strong&gt; zu finden und zu bearbeiten.&lt;/p&gt;&#10;&lt;div class="alert alert-info" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Seit v2.1 bereits beim Deployment setzbar&lt;/div&gt;&#10;&lt;p&gt;Der Timer-Ausdruck und alle vier Telemetrie-Einstellungen lassen sich direkt beim&#10;Deployment vorgeben — als Bicep-Parameter (Beispiele in&#10;&lt;code&gt;bicep/params/databridge.sample.bicepparam&lt;/code&gt;) oder im Marketplace-Assistenten unter&#10;&lt;strong&gt;Product Settings&lt;/strong&gt;. Ein nachträgliches Pflegen in den App-Settings ist damit nur noch&#10;für Änderungen im laufenden Betrieb nötig.&lt;/p&gt;</description></item><item><title>Release v2.0</title><link>https://databridge.docs.dsyr.de/docs/versionen/v2.0/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/versionen/v2.0/</guid><description>&lt;h2 id="was-ist-neu"&gt;Was ist neu&lt;/h2&gt;&#10;&lt;h3 id="neue-funktionen"&gt;Neue Funktionen&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Containerisierung mit Docker Compose&lt;/strong&gt;: Die DataBridge kann nun direkt über &lt;code&gt;docker compose&lt;/code&gt; (bzw. Podman) lokal gestartet werden. Eine neue &lt;code&gt;compose.yml&lt;/code&gt; sowie eine Beispiel-Umgebungsdatei (&lt;code&gt;.podman/podman.env.sample&lt;/code&gt;) sind enthalten. Das Start-Skript &lt;code&gt;start-local.sh&lt;/code&gt; / &lt;code&gt;start-local.ps1&lt;/code&gt; baut den Container, startet ihn und gibt alle HTTP-Trigger-URLs inkl. Authentication-Key direkt aus.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Robustere Initialisierung in GetChanges&lt;/strong&gt;: Die Timer-Funktion &lt;code&gt;GetChanges&lt;/code&gt; initialisiert den CoreService jetzt threadsicher (Mutex-Pattern). Schlägt die Initialisierung fehl, wird sie beim nächsten Timer-Durchlauf automatisch erneut versucht (Self-Repair) — analog zu &lt;code&gt;ProcessQueueItems&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Ältere Releases</title><link>https://databridge.docs.dsyr.de/docs/versionen/aeltere-releases/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/versionen/aeltere-releases/</guid><description>&lt;p&gt;Für die Versionen vor 2.0 existiert keine vollständige Release-Dokumentation. Überliefert&#10;sind die Breaking Changes der jeweiligen Übergänge — sie sind hier unverändert festgehalten,&#10;damit die Migrationshistorie nicht verloren geht.&lt;/p&gt;&#10;&lt;div class="alert alert-warning" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Vor der Migration lesen&lt;/div&gt;&#10;&lt;p&gt;Wer von einer Version vor 2.0 aktualisiert, muss die Schritte &lt;strong&gt;aller&lt;/strong&gt; dazwischenliegenden&#10;Übergänge nacheinander durchführen — zusätzlich zu den Installationshinweisen aus&#10;&lt;a href="../v2.0/"&gt;v2.0&lt;/a&gt; und &lt;a href="../v2.1/"&gt;v2.1&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="10--11"&gt;1.0 → 1.1&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;Breaking Changes:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Einführung von vier neuen Service-Bus-Warteschlangen:&#10;&lt;code&gt;sbqignored&lt;/code&gt;, &lt;code&gt;sbqtransitivestandart&lt;/code&gt;, &lt;code&gt;sbqtransitivelow&lt;/code&gt;, &lt;code&gt;sbqtransitivehigh&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Einführung der neuen Anwendungseinstellung &lt;code&gt;SkipOutdatedMessages&lt;/code&gt; in der Azure Function;&#10;beim Upgrade von 1.0 auf &lt;code&gt;false&lt;/code&gt; zu setzen&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="alert alert-info" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Schreibweise der Queue-Namen&lt;/div&gt;&#10;&lt;p&gt;Der Name &lt;code&gt;sbqtransitivestandart&lt;/code&gt; ist im Produkt genau so geschrieben (mit &lt;code&gt;t&lt;/code&gt; am Ende)&#10;und darf beim Anlegen der Warteschlange nicht „korrigiert&amp;quot; werden — sonst findet die&#10;DataBridge die Queue nicht.&lt;/p&gt;</description></item><item><title>Container-Betrieb</title><link>https://databridge.docs.dsyr.de/docs/einrichtung/container-betrieb/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/einrichtung/container-betrieb/</guid><description>&lt;p&gt;Die DataBridge lässt sich als Container-Image bauen und betreiben. Das Image basiert auf&#10;der Azure-Functions-Laufzeit und enthält dieselbe Anwendung wie das reguläre Deployment.&lt;/p&gt;&#10;&lt;div class="alert alert-warning" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Beta — nicht für den Kundenbetrieb&lt;/div&gt;&#10;&lt;p&gt;Der Container-Betrieb ist eine &lt;strong&gt;Beta-Funktion&lt;/strong&gt; und &lt;strong&gt;nicht für den produktiven&#10;Kundenbetrieb&lt;/strong&gt; vorgesehen. Auch der auf dieser Seite beschriebene Weg selbst ist noch&#10;&lt;strong&gt;Beta&lt;/strong&gt;: Abläufe, Dateinamen und Parameter können sich ohne Ankündigung ändern.&lt;/p&gt;&#10;&lt;p&gt;Für Kundeninstallationen gilt weiterhin der reguläre Weg über den&#10;&lt;a href="../installation/"&gt;Azure Marketplace oder Bicep&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>MSSQL — Microsoft SQL Server</title><link>https://databridge.docs.dsyr.de/docs/konnektoren/mssql/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/konnektoren/mssql/</guid><description>&lt;div class="alert alert-warning" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Preview&lt;/div&gt;&#10;&lt;p&gt;Der MSSQL-Konnektor ist als &lt;strong&gt;Vorabversion&lt;/strong&gt; eingestuft. Lesen ist funktionsfähig,&#10;Schreiben wird nicht unterstützt. Vor einem produktiven Einsatz bitte WYSA kontaktieren.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Der MSSQL-Konnektor ermöglicht das Lesen von Daten aus &lt;strong&gt;Microsoft SQL Server&lt;/strong&gt;-Datenbanken&#10;(OnPremise und Azure SQL) und deren Übertragung in andere Systeme.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Eigenschaft&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Wert&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lesen&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;⚠️ Preview&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Schreiben&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;— nicht unterstützt&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Job-Filter&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ wird als &lt;code&gt;WHERE&lt;/code&gt;-Klausel übernommen&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Status&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Preview&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Wie die übrigen drei SQL-Konnektoren wertet MSSQL den Filter des Jobs aus und erzeugt&#10;gültiges Paging für sein Datenbanksystem.&lt;/p&gt;</description></item><item><title>Updates &amp; Upgrades</title><link>https://databridge.docs.dsyr.de/docs/betrieb/updates/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/betrieb/updates/</guid><description>&lt;p&gt;Diese Seite beschreibt das &lt;strong&gt;Vorgehen&lt;/strong&gt; bei einem Update. Die vollständigen Änderungen und&#10;Installationshinweise je Release stehen in der &lt;a href="../../versionen/"&gt;Versionshistorie&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="vorgehen-bei-einem-update"&gt;Vorgehen bei einem Update&lt;/h2&gt;&#10;&lt;p&gt;Die Konfiguration in Table Storage bleibt bei einem Update unverändert — es sei denn, ein&#10;Breaking Change erfordert Anpassungen.&lt;/p&gt;&#10;&lt;h3 id="schritte"&gt;Schritte&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Release Notes prüfen&lt;/strong&gt; — Breaking Changes und Installationshinweise des Zielrelease&#10;und &lt;strong&gt;aller dazwischenliegenden&lt;/strong&gt; Versionen lesen (&lt;a href="../../versionen/"&gt;Versionshistorie&lt;/a&gt;)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Wartungsfenster einplanen&lt;/strong&gt; — &lt;code&gt;GetChanges&lt;/code&gt; über ein App-Setting deaktivieren:&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;AzureWebJobs.GetChanges.Disabled = true&#10;&lt;/code&gt;&lt;/pre&gt;Bei Bedarf lassen sich die Verarbeiter analog abschalten&#10;(&lt;code&gt;AzureWebJobs.ProcessStandardQueueItems.Disabled&lt;/code&gt; usw.)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Warten&lt;/strong&gt;, bis alle Queue-Nachrichten verarbeitet wurden (Queue-Länge im Azure Portal&#10;prüfen)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Neue Version einspielen&lt;/strong&gt; — je nach Betriebsart:&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Container:&lt;/strong&gt; Image-Tag auf die neue Version setzen&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Marketplace:&lt;/strong&gt; Assistenten erneut durchlaufen (bei unveränderten Standardwerten&#10;ergibt sich keine Änderung an bestehenden Einstellungen)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Bicep / Pipeline:&lt;/strong&gt; Deployment erneut ausführen&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Zip-Upload:&lt;/strong&gt; Paket über die Pipeline oder manuell einspielen&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Konfigurationsanpassungen&lt;/strong&gt; aus den Installationshinweisen vornehmen&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;GetChanges wieder aktivieren:&lt;/strong&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;AzureWebJobs.GetChanges.Disabled = false (oder Eintrag löschen)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Ersten Lauf beobachten&lt;/strong&gt; — z. B. über die Custom Metric &lt;code&gt;ChangesDetected&lt;/code&gt; je Job oder&#10;die Fehlerquoten-Abfrage unter&#10;&lt;a href="../logging/performance/"&gt;Performance &amp;amp; Laufzeiten&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;div class="alert alert-info" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;App-Settings lösen einen Neustart aus&lt;/div&gt;&#10;&lt;p&gt;Jede Änderung an den App-Settings startet die Function App neu. Das ist beim Ein- und&#10;Ausschalten der Funktionen in Schritt 2 und 6 eingeplant.&lt;/p&gt;</description></item><item><title>Watermarks (watermark)</title><link>https://databridge.docs.dsyr.de/docs/konfiguration/watermarks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/konfiguration/watermarks/</guid><description>&lt;p&gt;Die Tabelle &lt;code&gt;watermark&lt;/code&gt; ist die Gedächtnisfunktion der DataBridge. Nach jedem&#10;Job-Lauf wird hier gespeichert, bis zu welchem Stand die Daten gelesen wurden.&#10;Beim nächsten Lauf startet der Quellabruf genau an diesem Punkt.&lt;/p&gt;&#10;&lt;p&gt;Diese Tabelle wird vom Deployment angelegt und zur Laufzeit automatisch befüllt —&#10;manuelle Einträge sind normalerweise nicht nötig. Es gibt jedoch Situationen, in denen&#10;ein gezielter Eingriff sinnvoll ist.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="tabellenstruktur"&gt;Tabellenstruktur&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Spalte&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Wert&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Beschreibung&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;PartitionKey&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;watermark&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Fest vorgegeben — immer &lt;code&gt;watermark&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;RowKey&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Jobname&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Entspricht dem RowKey des zugehörigen Jobs in der &lt;code&gt;jobs&lt;/code&gt;-Tabelle&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Timestamp&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;automatisch&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Systemseitig gesetzt, nicht bearbeitbar&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Watermark&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Letzter Stand&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Format abhängig vom &lt;code&gt;WatermarkType&lt;/code&gt; des Jobs (siehe unten)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;LastCronRun&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Zeitstempel&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Beginn der letzten Ausführung des Jobs. Basis für die CRON-Intervallprüfung.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="watermark-typen"&gt;Watermark-Typen&lt;/h2&gt;&#10;&lt;p&gt;Der Typ wird im Job über das Feld &lt;code&gt;WatermarkType&lt;/code&gt; festgelegt und bestimmt,&#10;wie der gespeicherte Wert interpretiert wird.&lt;/p&gt;</description></item><item><title>MySQL — MySQL / MariaDB</title><link>https://databridge.docs.dsyr.de/docs/konnektoren/mysql/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/konnektoren/mysql/</guid><description>&lt;div class="alert alert-warning" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Preview — nicht produktionsreif&lt;/div&gt;&#10;&lt;p&gt;Der MySQL-Konnektor ist als &lt;strong&gt;Vorabversion&lt;/strong&gt; eingestuft und für den produktiven Einsatz&#10;derzeit &lt;strong&gt;nicht geeignet&lt;/strong&gt;. Er ist weder freigegeben noch für den Regelbetrieb&#10;abgesichert.&lt;/p&gt;&#10;&lt;p&gt;Wer MySQL oder MariaDB anbinden möchte, wendet sich bitte vorab an WYSA — dort wird der&#10;konkrete Anwendungsfall geprüft und der aktuelle Stand mitgeteilt.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Der MySQL-Konnektor ist für das Lesen von Daten aus &lt;strong&gt;MySQL&lt;/strong&gt;- und &lt;strong&gt;MariaDB&lt;/strong&gt;-Datenbanken&#10;vorgesehen.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Eigenschaft&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Wert&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lesen&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;⚠️ Preview, nicht produktionsreif&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Schreiben&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;— nicht unterstützt&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Job-Filter&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ wird als &lt;code&gt;WHERE&lt;/code&gt;-Klausel übernommen&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Status&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Preview&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Wie beim &lt;a href="../mssql/"&gt;MSSQL-Konnektor&lt;/a&gt; wird der Inhalt des Feldes &lt;code&gt;Filter&lt;/code&gt; am Job — nach&#10;Ersetzung des Platzhalters &lt;code&gt;%watermark%&lt;/code&gt; — wörtlich hinter &lt;code&gt;WHERE&lt;/code&gt; eingesetzt. Ohne Eintrag&#10;im Feld &lt;code&gt;Filter&lt;/code&gt; entsteht keine &lt;code&gt;WHERE&lt;/code&gt;-Klausel und der Job liest bei jedem Lauf die&#10;vollständige Tabelle. Der Ausdruck muss gültiges MySQL-SQL sein; es findet keine&#10;Parametrisierung statt. Details zur Filter-Syntax siehe &lt;a href="../mssql/#filter--die-where-klausel-kommt-aus-dem-job"&gt;MSSQL — Filter&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Oracle — Oracle Database</title><link>https://databridge.docs.dsyr.de/docs/konnektoren/oracle/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/konnektoren/oracle/</guid><description>&lt;div class="alert alert-warning" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Preview — nicht produktionsreif&lt;/div&gt;&#10;&lt;p&gt;Der Oracle-Konnektor ist als &lt;strong&gt;Vorabversion&lt;/strong&gt; eingestuft und für den produktiven Einsatz&#10;derzeit &lt;strong&gt;nicht geeignet&lt;/strong&gt;. Er ist weder freigegeben noch für den Regelbetrieb&#10;abgesichert.&lt;/p&gt;&#10;&lt;p&gt;Wer eine Oracle-Datenbank anbinden möchte, wendet sich bitte vorab an WYSA — dort wird der&#10;konkrete Anwendungsfall geprüft und der aktuelle Stand mitgeteilt.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Der Oracle-Konnektor ist für das Lesen von Daten aus &lt;strong&gt;Oracle-Database&lt;/strong&gt;-Instanzen&#10;vorgesehen.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Eigenschaft&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Wert&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lesen&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;⚠️ Preview, nicht produktionsreif&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Schreiben&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;— nicht unterstützt&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Job-Filter&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ wird als &lt;code&gt;WHERE&lt;/code&gt;-Klausel übernommen&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Status&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Preview&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Wie beim &lt;a href="../mssql/"&gt;MSSQL-Konnektor&lt;/a&gt; wird der Inhalt des Feldes &lt;code&gt;Filter&lt;/code&gt; am Job — nach&#10;Ersetzung des Platzhalters &lt;code&gt;%watermark%&lt;/code&gt; — wörtlich hinter &lt;code&gt;WHERE&lt;/code&gt; eingesetzt. Ohne Eintrag&#10;im Feld &lt;code&gt;Filter&lt;/code&gt; entsteht keine &lt;code&gt;WHERE&lt;/code&gt;-Klausel und der Job liest bei jedem Lauf die&#10;vollständige Tabelle. Der Ausdruck muss gültiges PL/SQL sein; es findet keine&#10;Parametrisierung statt. Details zur Filter-Syntax siehe &lt;a href="../mssql/#filter--die-where-klausel-kommt-aus-dem-job"&gt;MSSQL — Filter&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>PostgreSQL</title><link>https://databridge.docs.dsyr.de/docs/konnektoren/pgsql/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/konnektoren/pgsql/</guid><description>&lt;div class="alert alert-warning" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Preview&lt;/div&gt;&#10;&lt;p&gt;Der PostgreSQL-Konnektor ist als &lt;strong&gt;Vorabversion&lt;/strong&gt; eingestuft. Lesen ist funktionsfähig,&#10;Schreiben wird nicht unterstützt. Vor einem produktiven Einsatz bitte WYSA kontaktieren.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Der PostgreSQL-Konnektor ermöglicht das Lesen von Daten aus &lt;strong&gt;PostgreSQL&lt;/strong&gt;-Datenbanken&#10;und deren Übertragung in andere Systeme.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Eigenschaft&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Wert&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lesen&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;⚠️ Preview&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Schreiben&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;— nicht unterstützt&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Job-Filter&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ wird als &lt;code&gt;WHERE&lt;/code&gt;-Klausel übernommen&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Status&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Preview&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Wie beim &lt;a href="../mssql/"&gt;MSSQL-Konnektor&lt;/a&gt; wird der Inhalt des Feldes &lt;code&gt;Filter&lt;/code&gt; am Job — nach&#10;Ersetzung des Platzhalters &lt;code&gt;%watermark%&lt;/code&gt; — wörtlich hinter &lt;code&gt;WHERE&lt;/code&gt; eingesetzt. Ohne Eintrag&#10;im Feld &lt;code&gt;Filter&lt;/code&gt; entsteht keine &lt;code&gt;WHERE&lt;/code&gt;-Klausel und der Job liest bei jedem Lauf die&#10;vollständige Tabelle. Der Ausdruck muss gültiges PostgreSQL-SQL sein; es findet keine&#10;Parametrisierung statt. Details zur Filter-Syntax siehe &lt;a href="../mssql/#filter--die-where-klausel-kommt-aus-dem-job"&gt;MSSQL — Filter&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>OpenAPI — generischer REST-Konnektor</title><link>https://databridge.docs.dsyr.de/docs/konnektoren/openapi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://databridge.docs.dsyr.de/docs/konnektoren/openapi/</guid><description>&lt;p&gt;Der OpenAPI-Konnektor verbindet die DataBridge mit einer &lt;strong&gt;beliebigen REST-API&lt;/strong&gt;, für die&#10;eine OpenAPI-Spezifikation (JSON oder YAML) existiert. Anders als bei den übrigen HTTP-&#10;Konnektoren werden Pfade, Wrapper-Schlüssel (&lt;code&gt;{&amp;quot;clients&amp;quot;: [...]}&lt;/code&gt; vs. &lt;code&gt;{&amp;quot;client&amp;quot;: {...}}&lt;/code&gt;)&#10;und Feldtypen &lt;strong&gt;nicht&lt;/strong&gt; pro Ressource fest verdrahtet, sondern zur Laufzeit aus der&#10;Spezifikation aufgelöst. Ein Mapping muss dafür lediglich &lt;code&gt;SourceTable&lt;/code&gt;/&lt;code&gt;TargetTable&lt;/code&gt; auf&#10;den Ressourcennamen setzen (z. B. &lt;code&gt;clients&lt;/code&gt;).&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Eigenschaft&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Wert&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lesen&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ unterstützt&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Schreiben (Create/Update)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ unterstützt&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Löschen&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ unterstützt&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Aktionsaufrufe (InvokeAction)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;✅ unterstützt&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Job-Filter&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;⚠️ wird als Query-String an die Liste-Anfrage angehängt (kein &lt;code&gt;$filter&lt;/code&gt;-Standard, API-abhängig)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Status&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;In Entwicklung / Preview&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;div class="alert alert-warning" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Status: in Entwicklung&lt;/div&gt;&#10;&lt;p&gt;Der Konnektor befindet sich aktuell noch in aktiver Entwicklung. Insbesondere die Auflösung&#10;der OpenAPI-Spezifikation lädt im aktuellen Codestand (&lt;code&gt;OpenApiConnector.GetOpenApiDocument&lt;/code&gt;)&#10;eine &lt;strong&gt;lokale Testdatei&lt;/strong&gt; von einer festen Pfadangabe, nicht den über &lt;code&gt;openApiSpecUrl&lt;/code&gt;&#10;konfigurierten Endpunkt. Vor einem produktiven Einsatz ist das zu prüfen bzw. zu beheben.&lt;/p&gt;</description></item></channel></rss>