<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Versionshistorie on dsyr.DataBridge</title><link>https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/docs/versionen/</link><description>Recent content in Versionshistorie on dsyr.DataBridge</description><generator>Hugo</generator><language>de</language><atom:link href="https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/docs/versionen/index.xml" rel="self" type="application/rss+xml"/><item><title>Release v2.3</title><link>https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/docs/versionen/v2.3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/docs/versionen/v2.3/</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;Metadaten-Abfrage für die SQL-Connectoren&lt;/strong&gt;: Die MCP-Tools &lt;code&gt;list_connector_tables&lt;/code&gt; und &lt;code&gt;get_connector_table_schema&lt;/code&gt; funktionieren jetzt auch für &lt;strong&gt;MSSQL, MySQL, Oracle und PostgreSQL&lt;/strong&gt;. Bisher war das nur für BC, NAV, CE (Dataverse) und OpenAPI möglich, bei SQL-Verbindungen brach der Aufruf mit einer Fehlermeldung ab. Geliefert werden Spaltenname, Typ, Nullable, maximale Länge, bei Dezimalspalten Precision und Scale sowie der Primary Key — direkt aus dem Datenbank-Katalog (&lt;code&gt;INFORMATION_SCHEMA&lt;/code&gt;, bei Oracle &lt;code&gt;USER_*&lt;/code&gt;/&lt;code&gt;ALL_*&lt;/code&gt;-Views).&lt;/p&gt;&#10;&lt;p&gt;Über &lt;code&gt;apiPath&lt;/code&gt; wird das &lt;strong&gt;Schema&lt;/strong&gt; gewählt (MySQL: die &lt;strong&gt;Datenbank&lt;/strong&gt;, Oracle: der Owner). Ohne Angabe gilt das Standard-Schema der Verbindung, sodass gleichnamige Tabellen in verschiedenen Schemas (z. B. &lt;code&gt;dbo.Customers&lt;/code&gt; / &lt;code&gt;archive.Customers&lt;/code&gt;) nicht vermischt werden. Die Metadaten werden zwischengespeichert; Schemaänderungen an der Datenbank werden erst nach einem Neustart der Function App sichtbar. Details: &lt;a href="https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/docs/mcp-server/operationen/"&gt;MCP-Server → Operationen&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Genaue .NET-Datentypen je Datenbank&lt;/strong&gt;: Die Spaltentypen werden je Datenbank passend abgebildet — z. B. &lt;code&gt;date&lt;/code&gt; als &lt;code&gt;DateOnly&lt;/code&gt;, &lt;code&gt;time&lt;/code&gt; als &lt;code&gt;TimeSpan&lt;/code&gt;, Spalten mit Zeitzone als &lt;code&gt;DateTimeOffset&lt;/code&gt;, Binärspalten als &lt;code&gt;Byte[]&lt;/code&gt;, MySQL &lt;code&gt;BOOLEAN&lt;/code&gt; (&lt;code&gt;tinyint(1)&lt;/code&gt;) als &lt;code&gt;Boolean&lt;/code&gt; und Oracle &lt;code&gt;NUMBER(p,0)&lt;/code&gt; je nach Stellenzahl als &lt;code&gt;Int16&lt;/code&gt;/&lt;code&gt;Int32&lt;/code&gt;/&lt;code&gt;Int64&lt;/code&gt;. Die vollständige Übersicht steht unter &lt;a href="https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/docs/mcp-server/operationen/#sql-connectoren-datentypen"&gt;MCP-Server → Operationen&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Managed Identity für D365CE (Dataverse)&lt;/strong&gt;: Die Verbindung kann statt über einen Connection-String mit Secret direkt über die Managed Identity der Function App aufgebaut werden. Dazu &lt;code&gt;url&lt;/code&gt; (und optional &lt;code&gt;clientid&lt;/code&gt; für eine benutzer-zugewiesene Identity) in der Connection angeben. Ein vorhandener &lt;code&gt;connectionstring&lt;/code&gt; hat weiterhin Vorrang. Siehe &lt;a href="https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/docs/konnektoren/d365ce/"&gt;D365CE&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Managed Identity für D365BC (Cloud)&lt;/strong&gt;: Neue Authentifizierungsart &lt;code&gt;ManagedIdentity&lt;/code&gt; für HTTP-Konnektoren. Ohne &lt;code&gt;clientId&lt;/code&gt; wird die system-zugewiesene, mit &lt;code&gt;clientId&lt;/code&gt; die benutzer-zugewiesene Identity genutzt. Der Token wird automatisch erneuert, bevor er abläuft, und mit dem &lt;code&gt;scope&lt;/code&gt; der Connection angefordert. Siehe &lt;a href="https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/docs/konnektoren/d365bc/"&gt;D365BC&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Neuer Verbindungsparameter &lt;code&gt;authmethod&lt;/code&gt;&lt;/strong&gt;: Erlaubt es, die Authentifizierungsmethode ausdrücklich festzulegen (&lt;code&gt;BasicAuthentication&lt;/code&gt;, &lt;code&gt;OAuth2&lt;/code&gt;, &lt;code&gt;APIKey&lt;/code&gt;, &lt;code&gt;ManagedIdentity&lt;/code&gt;). Ohne Angabe bleibt das bisherige Verhalten unverändert. &lt;code&gt;ManagedIdentity&lt;/code&gt; wird &lt;strong&gt;nie&lt;/strong&gt; automatisch aus fehlenden Zugangsdaten abgeleitet, damit eine unvollständige Connection weiterhin sofort mit einem klaren Fehler abbricht. Siehe &lt;a href="https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/docs/konfiguration/verbindungen/"&gt;Verbindungen&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Release v2.2</title><link>https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/docs/versionen/v2.2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/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://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/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;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Action-Jobs (&lt;code&gt;InvokeAction&lt;/code&gt;)&lt;/strong&gt;: Jobs können jetzt statt eines CRUD-Datenabgleichs eine einzelne benannte Aktion auf dem Zielsystem auslösen (z. B. eine OpenAPI-Action/&lt;code&gt;operationId&lt;/code&gt; oder einen D365CE-&lt;code&gt;OrganizationRequest&lt;/code&gt;). Ein solcher Job benötigt kein Mapping in der Mapping-Tabelle — die Aktion und ihre Parameter werden direkt aus der Queue-Nachricht und dem Job selbst gebildet. Siehe &lt;a href="https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/docs/konfiguration/jobs/#action---welche-%c3%a4nderungsarten-gelesen-werden"&gt;Action — welche Änderungsarten gelesen werden&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Ressourcenpfad direkt am Job konfigurierbar&lt;/strong&gt;: Jobs können nun ihre Quell- und Zielressource (Tabelle, Entität oder Pfad) direkt in den neuen Job-Feldern &lt;code&gt;Source&lt;/code&gt;/&lt;code&gt;Target&lt;/code&gt; tragen, statt sie zwingend über die Mapping-Tabelle zu beziehen. Bestehende, ausschließlich über die Mapping-Tabelle konfigurierte Jobs funktionieren unverändert weiter; ohne Eintrag in &lt;code&gt;Source&lt;/code&gt;/&lt;code&gt;Target&lt;/code&gt; greift wie bisher die Mapping-Tabelle.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Kind-Datensätze einbetten (&lt;code&gt;EmbedChildren&lt;/code&gt;, D365CE)&lt;/strong&gt;: Eine neue Source-Operation erlaubt es, die Datensätze eines referenzierten Kind-Jobs (z. B. Angebotspositionen zu einem Angebot) direkt in die Queue-Nachricht des Eltern-Datensatzes einzubetten, sodass beide gemeinsam in einer Anfrage beim Ziel ankommen. Der Filter des Kind-Jobs kann dabei über &lt;code&gt;{{...%parent.Feldname%...}}&lt;/code&gt; auf Werte des Eltern-Datensatzes zugreifen.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Neue Diagnose-Endpunkte &lt;code&gt;GET /job&lt;/code&gt; und &lt;code&gt;GET /mapping&lt;/code&gt;&lt;/strong&gt;: Zwei neue, rein lesende HTTP-Endpunkte (&lt;code&gt;/job&lt;/code&gt;, &lt;code&gt;/job/{rowKey}&lt;/code&gt;, &lt;code&gt;/mapping&lt;/code&gt;, &lt;code&gt;/mapping/{rowKey}&lt;/code&gt;) geben die aktuell geladene Job- bzw. Mapping-Konfiguration zurück — praktisch zur Fehlersuche, ohne direkt in der Table-Storage nachsehen zu müssen.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Eingebauter MCP-Server für KI-Assistenten (z. B. Claude Code, GitHub Copilot, Microsoft 365 Copilot)&lt;/strong&gt;: Ein neuer, rein lesender &lt;a href="https://modelcontextprotocol.io/"&gt;Model-Context-Protocol&lt;/a&gt;-Endpunkt (&lt;code&gt;POST /api/mcp&lt;/code&gt;) macht Jobs, Mappings sowie Service-Bus-Diagnosedaten (Queue-Laufzeit-Status, non-destruktives Peek von Nachrichten und Dead-Letter-Nachrichten) als KI-Tools ansprechbar — dediziert dafür gibt es keinen eigenen HTTP-Endpunkt. Zwei der zehn Tools gehen noch einen Schritt weiter: &lt;code&gt;list_connector_tables&lt;/code&gt; und &lt;code&gt;get_connector_table_schema&lt;/code&gt; lesen die &lt;strong&gt;echten&lt;/strong&gt; Tabellen-/Feld-Metadaten (Typ, Nullable, maximale Länge, Primary Key) direkt aus dem Quell-/Zielsystem einer Connection — für BC, NAV, CE (Dataverse) und OpenAPI —, sodass sich ein Mapping gegen das tatsächliche Schema validieren lässt, statt sich auf die Mapping-Konfiguration allein zu verlassen. Für die SQL-Connectoren (MSSQL, MySQL, Oracle, PostgreSQL) ist das noch nicht implementiert.&lt;/p&gt;&#10;&lt;p&gt;Die beiden Peek-Tools geben bewusst &lt;strong&gt;niemals den Nachrichteninhalt&lt;/strong&gt; zurück, nur dessen Größe in Bytes (&lt;code&gt;BodySize&lt;/code&gt;) — der Body kann fachliche Kunden-/Geschäftsdaten des jeweiligen Jobs enthalten, die Kopf-/Fehlerdaten (JobName, ErrorMessage, Stacktrace, Zustellversuche, …) reichen für die Diagnose. Die Tool-Beschreibungen selbst sind auf Englisch verfasst, da sie vom aufrufenden KI-Modell gelesen werden, nicht von einem Menschen. Details, Einrichtung (inkl. GitHub Copilot/VS Code und Microsoft 365 Copilot Studio), die vollständige Tool-Liste mit Lese-Umfang je Tool sowie die Funktionsweise: &lt;a href="https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/docs/mcp-server/"&gt;MCP-Server&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;System-assigned Managed Identity für die Function App&lt;/strong&gt;: Die Azure Function App erhält beim Deployment automatisch eine system-zugewiesene Managed Identity. Ihre Objekt-ID (&lt;code&gt;principalId&lt;/code&gt;) steht als Deployment-Output (&lt;code&gt;functionPrincipalId&lt;/code&gt;) für nachgelagerte Rollenzuweisungen zur Verfügung. Die Identity wird &lt;strong&gt;immer&lt;/strong&gt; angelegt.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Optional (Preview): Storage &amp;amp; Service Bus über Managed Identity&lt;/strong&gt;: Über den neuen Schalter &lt;code&gt;enableManagedIdentity&lt;/code&gt; (Standard: &lt;strong&gt;aus&lt;/strong&gt;) lassen sich die Verbindungen zu Storage und Service Bus von Schlüsseln auf identitätsbasierten Zugriff umstellen. Ist der Schalter aktiv, weist das Bicep-Deployment der Identity die nötigen Rollen zu (Storage Table/Blob/Queue, Service Bus Sender/Receiver/Data Owner — Data Owner wird für die Queue-Status-Abfrage des MCP-Tools &lt;code&gt;list_queue_statuses&lt;/code&gt; benötigt) und die App-Settings verwenden &lt;code&gt;AzureWebJobsStorage__accountName&lt;/code&gt; bzw. &lt;code&gt;…__fullyQualifiedNamespace&lt;/code&gt; statt der Schlüssel-Verbindungszeichenfolgen.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Standardmäßig bleibt alles beim Schlüssel-basierten Zugriff — ein reines ZIP-/Image-Update ändert daran &lt;strong&gt;nichts&lt;/strong&gt;. Die Umstellung erfolgt nur, wenn das Bicep-Script mit aktiviertem Schalter neu deployt wird (siehe Installationshinweise).&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Leere Quell-Schlüssel gezielt ignorieren (&lt;code&gt;IgnoreEmptySourceKey&lt;/code&gt;, D365CE)&lt;/strong&gt;: Ist das Quellfeld eines Ziel-Schlüssels leer, brach die Verarbeitung der Nachricht bisher immer mit einem Fehler ab — auch dann, wenn ein weiterer Schlüssel den Datensatz noch hätte finden können. Mit dem neuen Feld &lt;code&gt;IgnoreEmptySourceKey&lt;/code&gt; am &lt;code&gt;TargetKey&lt;/code&gt; (Standard: &lt;strong&gt;aus&lt;/strong&gt;) lässt sich das je Schlüssel abschalten: Der betroffene Schlüssel wird übersprungen und die Suche läuft mit dem nächsten Schlüssel nach &lt;code&gt;KeyRank&lt;/code&gt; weiter.&lt;/p&gt;&#10;&lt;p&gt;Das ist vor allem im Multikey-Szenario relevant, wenn ein optionales Feld wie eine externe ID nicht in jedem Quelldatensatz gefüllt ist, ein nachrangiger Schlüssel den Zieldatensatz aber sicher findet.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;Findet &lt;strong&gt;kein&lt;/strong&gt; Schlüssel einen Datensatz und waren alle leer gebliebenen Schlüssel entsprechend markiert, wird ein &lt;strong&gt;neuer Datensatz angelegt&lt;/strong&gt; statt ein Fehler gemeldet. War auch nur einer der leeren Schlüssel nicht markiert, bleibt es beim Fehler. Details siehe &lt;a href="https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/docs/konfiguration/mappings/#ignoreemptysourcekey"&gt;IgnoreEmptySourceKey&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Bestehende Mappings sind nicht betroffen — ohne gesetztes Feld bleibt das bisherige Verhalten unverändert.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Release v2.1</title><link>https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/docs/versionen/v2.1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/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;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Automatische Anlage bei Lookups abschaltbar&lt;/strong&gt;: Über die neue Option &lt;code&gt;DoNotCreate&lt;/code&gt; am Lookup lässt sich steuern, dass ein nicht gefundener Ziel-Datensatz &lt;strong&gt;nicht&lt;/strong&gt; automatisch angelegt wird. Ist die Option gesetzt, wird der Lookup nur aufgelöst, wenn der Datensatz bereits existiert — andernfalls bleibt das Feld leer, statt einen neuen Datensatz zu erzeugen.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;String-zu-Decimal-Konvertierung&lt;/strong&gt;: Der Decimal-Resolver akzeptiert jetzt auch Quellwerte vom Typ &lt;code&gt;string&lt;/code&gt; und wandelt sie in einen Dezimalwert um (Interpretation im Format &lt;code&gt;en-US&lt;/code&gt;, d.h. Punkt als Dezimaltrennzeichen). Leere Strings werden zu &lt;code&gt;null&lt;/code&gt;, nicht konvertierbare Werte werfen wie bisher einen Fehler.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Vorab-Zwischenspeicherung von Lookups (Pre-Caching)&lt;/strong&gt;: Beim Verarbeiten eines Batches werden benötigte Lookup-Werte vorab gebündelt aufgelöst und zwischengespeichert. Dadurch werden wiederholte Einzelabfragen gegen das Zielsystem vermieden, was die Verarbeitung großer Änderungsmengen beschleunigt.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Sampling von Abhängigkeiten (Dependencies)&lt;/strong&gt;: Ausgehende Aufrufe an Quell- und Zielsysteme (D365 OData, SQL, Table Storage, Service Bus) werden von Application Insights automatisch als Abhängigkeiten erfasst und verursachten bisher den Großteil des Datenvolumens — bei minutengenauem Polling ein Vielfaches aller Log-Einträge zusammen. Diese Aufrufe werden nun gefiltert: Fehlgeschlagene sowie langsame Aufrufe werden immer vollständig gesendet, erfolgreiche und schnelle nur zu einem konfigurierbaren Anteil (Standard: 10 %). Das reduziert das tägliche Datenvolumen erheblich; Exceptions, Requests und alle Log-Einträge eines Fehler-Laufs bleiben unverändert vollständig erhalten. Steuerbar über die neuen Einstellungen &lt;code&gt;TELEMETRY_DEPENDENCY_SAMPLE_RATE&lt;/code&gt; und &lt;code&gt;TELEMETRY_DEPENDENCY_SLOW_MS&lt;/code&gt;; Details unter &lt;a href="../../betrieb/logging/"&gt;Betrieb → Logging&lt;/a&gt;.&lt;/p&gt;&#10;&lt;div class="alert alert-warning" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Zu beachten&lt;/div&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Release v2.0</title><link>https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/docs/versionen/v2.0/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/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;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;ASP.NET Core HTTP-Integration&lt;/strong&gt;: Die Azure Functions App nutzt nun das ASP.NET Core-Integrationsmodell (&lt;code&gt;ConfigureFunctionsWebApplication&lt;/code&gt;). Dies ist die empfohlene Methode ab .NET 8+ und ermöglicht vollständigere HTTP-Features.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Custom Metrics&lt;/strong&gt;: Die DataBridge sendet eigene, pre-aggregierte Metriken an Application Insights (Namespace &lt;code&gt;DataBridge&lt;/code&gt;). Erste Metrik: &lt;code&gt;ChangesDetected&lt;/code&gt; mit Dimension &lt;code&gt;JobName&lt;/code&gt; — Anzahl erkannter Änderungen pro Job und GetChanges-Lauf, inkl. Null-Werten. Sichtbar im Metrics Explorer und in der Tabelle &lt;code&gt;customMetrics&lt;/code&gt;; Details unter &lt;a href="../../betrieb/logging/"&gt;Betrieb → Logging&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Gepuffertes Logging mit selektiver App-Insights-Weiterleitung&lt;/strong&gt;: Alle Log-Einträge einer Funktionsausführung werden zunächst im Arbeitsspeicher gepuffert und erst am Ende der Ausführung — abhängig vom Ergebnis — selektiv an Azure Application Insights gesendet. Im Fehlerfall stehen damit auch alle Debug-Einträge rückwirkend zur Verfügung, ohne dass sie bei erfolgreichen Läufen Kosten verursachen. Das Verhalten lässt sich über die Umgebungsvariablen &lt;code&gt;TELEMETRY_CONTROL&lt;/code&gt; und &lt;code&gt;TELEMETRY_INFO_SAMPLE_RATE&lt;/code&gt; steuern. Eine vollständige Beschreibung befindet sich unter &lt;a href="../../betrieb/logging/"&gt;Betrieb → Logging&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Trace-Level für Live-Diagnose&lt;/strong&gt;: Log-Einträge auf Level &lt;code&gt;Trace&lt;/code&gt; (&lt;code&gt;LogTrace&lt;/code&gt;) werden nie an Application Insights gesendet — auch nicht bei Fehler-Läufen. Sie sind ausschließlich live sichtbar: lokal in der Konsole bzw. im Container-Log, in Azure im Log Stream der Function App. Details unter &lt;a href="../../betrieb/logging/"&gt;Betrieb → Logging&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Ältere Releases</title><link>https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/docs/versionen/aeltere-releases/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blue-wave-000dd0703-preview.westeurope.6.azurestaticapps.net/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;&#10;&lt;/div&gt;</description></item></channel></rss>