Dieses Kapitel führt Schritt für Schritt durch die erstmalige Einrichtung einer
dsyr.DataBridge-Instanz. Am Ende steht eine vollständig deployete und konfigurierte
Azure Function App, die synchronisieren kann.
Ergänzend, außerhalb des regulären Installationswegs:
Container-Betrieb — Betrieb als Container-Image. Beta,
nicht für den Kundenbetrieb vorgesehen.
1 - Voraussetzungen
Benutzerkonten, Berechtigungen, Azure-Provider und Software, die vor der Installation bereitstehen müssen.
Bevor die DataBridge installiert werden kann, müssen die folgenden Voraussetzungen
in Azure, Dataverse und Business Central erfüllt sein.
Azure-Abonnement
Ein aktives Azure-Abonnement ist Pflicht. Im Abonnement müssen die folgenden
Resource Provider registriert sein:
Provider
Zweck
Pflicht
Microsoft.Insights
Application Insights
✅
Microsoft.OperationalInsights
Log Analytics
✅
Microsoft.ServiceBus
Service Bus Namespace
✅
Microsoft.Storage
Table Storage, Blob Storage
✅
Microsoft.Web
Azure Function App
✅
Microsoft.Dashboard
Grafana-Dashboard in Application Insights
✅
Microsoft.KeyVault
Sichere Speicherung von Connection Strings
optional
Microsoft.Relay
Hybrid Connections (OnPremise-Anbindung)
optional
Microsoft.App
Container Apps
veraltet / deprecated
Provider können im Azure Portal unter Abonnement → Ressourcenanbieter aktiviert werden.
`Microsoft.Dashboard` ist seit v2.1 erforderlich
Das Grafana-Dashboard wird bei jedem Deployment
angelegt — ohne Möglichkeit, es abzuwählen. Ist der Provider nicht registriert, schlägt
das gesamte Deployment fehl.
Empfohlene Instanzen-Struktur
Pro Umgebung wird eine eigene DataBridge-Instanz (= Ressourcengruppe) benötigt.
Als Regelfall werden zwei Instanzen empfohlen:
Instanz
Zweck
Test
Validierung von Mappings und Konfigurationsänderungen
Produktion
Liveverbindung zwischen den Produktivsystemen
Eine Entwicklungsinstanz ist meist nicht nötig, da die Entwicklung der DataBridge selbst
bei WYSA liegt und sich eine Synchronisation im Entwicklungssystem selten lohnt.
Eine dritte Instanz für Entwicklung ist dann sinnvoll, wenn im Entwicklungssystem
eigene Anpassungen an Dataverse oder Business Central entstehen, die vor dem Test
gegen eine laufende Synchronisation geprüft werden sollen — etwa neue Felder, geänderte
Optionssets oder umgebaute Entitäten. In diesem Fall werden drei Ressourcengruppen
benötigt (Entwicklung, Test, Produktion).
Laufzeitumgebung
Die DataBridge läuft als Azure Function App. Die folgenden Eckdaten werden vom Deployment
gesetzt und müssen nicht vorbereitet werden — sie sind hier als Referenz für die
Abstimmung mit der IT aufgeführt:
Merkmal
Wert
Laufzeit
.NET 10, Isolated Worker
Azure Functions Runtime
v4
Betriebssystem
Windows
App Service Plan
Y1 (Consumption) oder EP1–EP3 (Premium), wählbar beim Deployment
Beim containerisierten Betrieb wird zusätzlich Zugriff auf die WYSA-Container-Registry
benötigt. Das aktuelle Image ist
acrwysatest.azurecr.io/containered-connector:v2.3.0.
Unterstützte Quell- und Zielsysteme
System
Lesen
Schreiben
Anmerkung
Dynamics 365 Business Central
✅
✅
Cloud und OnPremise
Dynamics 365 / Dataverse
✅
✅
Change Tracking erforderlich (siehe unten)
Microsoft Dynamics NAV
✅
✅
OnPremise, wahlweise Basic Auth oder NTLM
Microsoft SQL Server
⚠️ Preview
—
MySQL / MariaDB
⚠️ Preview
—
Oracle Database
⚠️ Preview
—
PostgreSQL
⚠️ Preview
—
Für die vier SQL-Systeme gelten die unten beschriebenen Anforderungen an Anwendungsbenutzer
und Change Tracking nicht — dort werden lediglich ein Connection String und die
Netzwerkerreichbarkeit aus Azure heraus benötigt. Die Konnektoren sind als Vorabversion
eingestuft und unterstützen kein Schreiben; Details auf den
Konnektor-Seiten.
Benutzerkonten
Die folgenden Anforderungen gelten für die Anbindung von Dataverse und Business
Central. Für SQL-Quellsysteme genügt ein Datenbankbenutzer mit Leserechten.
Für die Einrichtung und Pflege von Dataverse und Business Central wird ein menschlicher
Benutzer benötigt, der in Entra ID existiert und entsprechend lizensiert ist.
System
Mindestrechte
Dataverse
Rolle „Systemadministrator" + mindestens eine Power Platform-Lizenz
Business Central
Administrationsrechte + BC-Lizenz zugewiesen
Anwendungsbenutzer (Service Principal / App Registration)
Anwendungsbenutzer ermöglichen der DataBridge den automatisierten, sicheren Zugriff
auf die Systeme — ohne personengebundene Credentials.
Minimum: 1 Anwendungsbenutzer pro DataBridge-Instanz.
Empfehlung: 3 Anwendungsbenutzer für maximale Sicherheit und klare Trennung:
Anwendungsbenutzer
Zweck
Benötigte Rechte
Deployment-User
Installation und Updates der DataBridge
Azure: Contributor auf Ressourcengruppe (bei aktiviertem enableManagedIdentity: Owner oder User Access Administrator, da Rollen zugewiesen werden) · Dataverse: S2S-Benutzer + Systemadministrator
Dataverse-User
Datenaustausch mit Dataverse im laufenden Betrieb
Dataverse: S2S-Benutzer + Systemadministrator oder individuelle Sicherheitsrolle
BC-User
Datenaustausch mit Business Central im laufenden Betrieb
BC: Registriert + individuelle Sicherheitsrolle
Alle Anwendungsbenutzer müssen als App Registration in Entra ID angelegt und in
den jeweiligen Systemen als S2S-Benutzer registriert sein.
Dataverse: Change Tracking aktivieren
Für alle Dataverse-Tabellen, die als Quelle genutzt werden sollen, muss
Change Tracking aktiviert sein. Ohne Change Tracking kann die DataBridge keine
effizienten Differenzabfragen durchführen.
Aktivierung: Power Platform Admin Center → Umgebung → Tabellen → Tabelle auswählen →
Eigenschaften → „Änderungsnachverfolgung aktivieren" ✅
Benötigte Software für die Installation
Bei Installation über den Azure Marketplace entfällt dieser Abschnitt
Wird die DataBridge über den Marketplace-Assistenten installiert, ist keine lokale
Software erforderlich — die Einrichtung läuft vollständig im Azure Portal.
Für das Deployment per Bicep / Azure CLI muss auf dem ausführenden Rechner
installiert sein:
az bicep install
az bicep version # Ausgabe sollte ≥ 0.35 zeigen
Die Installation selbst kann durch WYSA durchgeführt werden, sofern der
Deployment-Anwendungsbenutzer mit Contributor-Rechten auf der Ressourcengruppe
bereitgestellt wurde. Soll der Preview-Schalter enableManagedIdentity genutzt werden,
benötigt der Deployment-User Owner oder User Access Administrator, da dabei
Rollenzuweisungen angelegt werden.
2 - Installation
Die DataBridge über den Azure Marketplace oder per Bicep in Azure einrichten.
Automatisierte oder wiederholbare Deployments, Integration in eine Pipeline.
Beide Wege legen dieselben Ressourcen an und sind gleichwertig im Ergebnis.
Weg 1 — Azure Marketplace (empfohlen)
1. Ressourcengruppe anlegen
Im Azure Portal eine neue Ressourcengruppe für die DataBridge-Instanz erstellen.
Pro Umgebung (Test, Produktion) wird eine eigene Ressourcengruppe verwendet.
2. DataBridge aus dem Marketplace auswählen
In der Ressourcengruppe Erstellen wählen und im Marketplace nach der
WYSA DataBridge suchen.
3. Region und Kurzname festlegen
Feld
Bedeutung
Region
Azure-Region, in der alle Ressourcen angelegt werden
Shortname for DataBridge
Namensbestandteil für alle Ressourcen dieser Instanz
Der Kurzname prägt alle Ressourcennamen
Aus dem Kurznamen werden sämtliche Ressourcennamen abgeleitet — Bindestriche werden dabei
intern entfernt:
Der Name muss innerhalb Azure eindeutig sein und sollte die Umgebung erkennbar machen
(z. B. kunde-databridge-test).
4. Produkteinstellungen
Unter Product Settings werden die fachlichen Einstellungen gruppiert:
Bereich
Einstellungen
Function Settings
GetChanges Timer Expression — Taktung des Quellabrufs (Vorgabe: alle 15 Sekunden)
Telemetry
Sampling-Override sowie die drei Sampling-Raten für Logs und Abhängigkeiten
Alert
Alerts aktivieren, Benachrichtigungs-E-Mail und die vier Dead-Letter-Schwellwerte
Preview
SkipOutdatedMessages
Alerts sind standardmäßig aus
Enable Alerts steht auf No. Wird es auf Yes gesetzt, ist zusätzlich eine
Benachrichtigungs-E-Mail einzutragen — sonst werden keine Alerts angelegt. Details:
Monitoring & Alerts.
Alle Telemetrie-Einstellungen können auf den Vorgabewerten bleiben und später jederzeit
in den Umgebungsvariablen angepasst werden.
5. Service Bus
Feld
Vorgabe
Bedeutung
Maximum Delivery Count
3
Zustellversuche, bevor eine Nachricht in die Dead-Letter-Queue geht
Message Time To Live (TTL)
P14D
Aufbewahrungszeit einer Nachricht (ISO 8601)
Lock Duration
PT30S
Sperrdauer während der Verarbeitung
6. Storage Account
Als Speicherkonto-Typ steht ausschließlich StorageV2 zur Verfügung.
7. App Service Plan
Feld
Vorgabe
Bedeutung
Maximum Scale-Out Count
12
Obergrenze für parallele Instanzen
App Service Plan SKU
Consumption (Y1)
Alternativ Premium (EP1) bis Premium (EP3)
Anschließend über Überprüfen und erstellen das Deployment starten.
Erneutes Durchlaufen bei einem Update
Der Assistent kann für ein Update erneut ausgeführt werden. Solange die Vorgabewerte
übernommen werden, ergibt sich keine Änderung an bestehenden Einstellungen.
Weg 2 — Bicep / Azure CLI
1. Bicep-Dateien bereitstellen
Die Bicep-Templates befinden sich im Repository unter bicep/. Klone das Repository
oder lade die Dateien auf den Rechner, von dem aus die Installation durchgeführt wird.
2. Bei Azure anmelden
az login
Es öffnet sich ein Browser-Fenster. Melde dich mit dem Deployment-Anwendungsbenutzer
oder dem Administrations-Benutzer an, der Contributor-Rechte auf der Ziel-Ressourcengruppe
hat. Den Haken bei „Zugriffseinwilligung für alle Benutzer" nicht setzen.
3. Abonnement prüfen
az account show
Vergleiche die angezeigte Abonnement-ID mit der ID im Azure Portal. Falls mehrere
Abonnements vorhanden sind, das richtige setzen:
az account set --subscription "<Abonnement-ID>"
4. Ressourcen deployen
az deployment group create --template-file ./bicep/main.bicep --resource-group <Name-der-Ressourcengruppe> --parameters name=<instanzname> -c
Das Flag -c zeigt eine Vorschau der Änderungen an. Mit Y oder J bestätigen.
Instanzname immer setzen
Der Parameter name wird als Namensbestandteil für alle angelegten Ressourcen
verwendet. Der Standardwert lautet customername-databridge und ist unbedingt zu
überschreiben — andernfalls kommt es zu Namenskonflikten mit anderen Installationen.
Bicep-Parameter im Überblick
Infrastruktur:
Parameter
Standardwert
Beschreibung
name
customername-databridge
Namensbestandteil für alle Ressourcen. Immer überschreiben.
location
Region der Ressourcengruppe
Zielregion für alle Ressourcen
storageKind
StorageV2
Speicherkonto-Typ (einziger erlaubter Wert)
appServiceSku
Y1
Y1 (Consumption) oder EP1–EP3 (Premium)
functionScaleLimit
12
Obergrenze für parallele Instanzen
maxDeliveryCount
3
Zustellversuche pro Nachricht (1–100)
defaultMessageTimeToLive
P14D
Aufbewahrungszeit für Nachrichten (ISO 8601)
lockDuration
PT30S
Sperrdauer während der Verarbeitung (ISO 8601)
tagsByResource
(leer)
Tags je Ressourcentyp
Laufzeit und Telemetrie:
Parameter
Standardwert
Beschreibung
getChangesTimerExpression
*/15 * * * * *
Taktung des Quellabrufs
skipOutdatedMessages
false
Nachrichten mit älterem Quell-Zeitstempel überspringen
telemetryControl
TRACE_SAMPLE
TRACE_SAMPLE, TRACE_ALL oder TRACE_NONE
telemetryInfoSampleRate
20
Anteil der Information-Einträge bei erfolgreichen Läufen (%)
Alerts für Dead-Letter-Queue und Queue-Länge anlegen
notificationEmail
(leer)
Empfänger der Alert-Benachrichtigungen. Nur bei enableAlerts = true erforderlich.
dlqLowThreshold
1
Schwellwert Severity „Informational"
dlqMediumThreshold
50
Schwellwert Severity „Warning"
dlqHighThreshold
200
Schwellwert Severity „Error"
dlqCriticalThreshold
500
Schwellwert Severity „Critical"
Parameter in einer Datei ablegen
Statt alle Werte auf der Kommandozeile zu übergeben, können sie in einer
.bicepparam-Datei gepflegt und mit --parameters <datei>.bicepparam übergeben werden.
Eine kommentierte Vorlage liegt unter bicep/params/databridge.sample.bicepparam.
Was angelegt wird
Nach erfolgreichem Deployment existieren in der Ressourcengruppe:
Der Name der Standard-Transitive-Queue endet auf -standart. So wird sie angelegt und so
sucht die DataBridge sie.
Table-Storage-Tabellen:connections, jobs, mappings, watermark — sie werden
vom Deployment leer angelegt.
Phase 2 — Function App befüllen
Beim Marketplace-Weg entfällt dieser Schritt in der Regel; das Paket wird mit ausgeliefert.
Beim Bicep-Weg wird der Anwendungscode separat eingespielt.
Option A: Container-Image
Wird die DataBridge containerisiert betrieben, verweist die Function App auf das
bereitgestellte Image:
Die bereitgestellte .zip-Datei per Drag & Drop hochladen
Nach dem Upload startet die Function App automatisch neu
Option C: Deployment-Pipeline
Das Deployment kann über eine CI/CD-Pipeline automatisiert werden.
WYSA stellt hierfür Azure-Pipeline-Definitionen zur Verfügung (cicd/-Verzeichnis).
Alternativ kann eine eigene Azure-DevOps- oder GitHub-Actions-Pipeline verwendet werden.
Nach der Installation: Konfigurationstabellen befüllen
Nach dem Deployment laufen die Azure Functions — aber noch ohne Konfiguration.
Die vier Table-Storage-Tabellen existieren, sind aber leer:
Reihenfolge
Tabelle
Inhalt
1
connections
Zugangsdaten für alle Quell- und Zielsysteme
2
mappings
Feld-Mappings zwischen Quell- und Zieltabellen
3
jobs
Synchronisations-Jobs (welche Tabelle, welche Richtung, welcher Schedule)
4
watermark
Wird zur Laufzeit automatisch befüllt — kein manueller Eintrag nötig
Die Tabellen können über den Azure Storage Explorer oder direkt im Azure Portal
(Storage Account → Tables) bearbeitet werden.
Details zu den Tabellen und den erwarteten Feldern sind im Kapitel
Konfiguration beschrieben.
Umgebungsvariablen prüfen
Alle Verbindungs-Strings sowie der Timer-Ausdruck und die Telemetrie-Einstellungen werden
vom Deployment gesetzt. Nachträglich anzupassen sind sie nur, wenn vom Vorgabewert
abgewichen werden soll.
Eine vollständige Übersicht findet sich auf der Seite
Umgebungsvariablen.
Installation prüfen
Sobald Konfigurationstabellen und Umgebungsvariablen gesetzt sind, kann die Installation
geprüft werden:
GET https://func-<name>.azurewebsites.net/api/GetInfo?code=<Function-Key>
Eine erfolgreiche Antwort sieht so aus:
{
"Version": "2.1.2026.802"}
Der Function-Key ist erforderlich
GetInfo ist mit Function-Level-Authentifizierung geschützt. Ohne den Parameter code
antwortet der Endpunkt mit 401 Unauthorized.
Den Schlüssel findet man im Azure Portal unter Function App → Funktionen → GetInfo →
Funktionsschlüssel.
Alternativ: Im Azure Portal → Function App → Funktionen → GetInfo → Testen/Ausführen —
dort wird der Schlüssel automatisch mitgegeben.
Für eine inhaltliche Prüfung der Konfiguration stehen zusätzlich die Diagnose-Funktionen
Validate (prüft die hinterlegte Konfiguration) und CheckList (gleicht Mappings gegen
die Attribute der beteiligten Systeme ab) zur Verfügung.
3 - Umgebungsvariablen
Alle Konfigurationsparameter der DataBridge Function App — mit Standardwerten und Erläuterung.
Die DataBridge Function App wird über Anwendungseinstellungen (Application Settings)
konfiguriert. Diese sind im Azure Portal unter Function App → Einstellungen →
Umgebungsvariablen zu finden und zu bearbeiten.
Seit v2.1 bereits beim Deployment setzbar
Der Timer-Ausdruck und alle vier Telemetrie-Einstellungen lassen sich direkt beim
Deployment vorgeben — als Bicep-Parameter (Beispiele in
bicep/params/databridge.sample.bicepparam) oder im Marketplace-Assistenten unter
Product Settings. Ein nachträgliches Pflegen in den App-Settings ist damit nur noch
für Änderungen im laufenden Betrieb nötig.
Jede Änderung startet die Function App neu
Das Speichern einer Anwendungseinstellung löst einen Neustart aus. Laufende Verarbeitungen
werden abgebrochen; die betroffenen Queue-Nachrichten werden erneut zugestellt.
Infrastruktur-Verbindungen
Diese Variablen verbinden die Function App mit den zugehörigen Azure-Diensten.
Sie werden durch das Deployment automatisch befüllt.
Variable
Pflicht
Beschreibung
AzureWebJobsStorage
✅¹
Connection String zum Azure Storage Account (Table Storage für die Konfiguration + Function-interner Storage).
ExportQueueServiceBus
✅¹
Connection String zum Service Bus Namespace (alle Verarbeitungs-Queues)
APPLICATIONINSIGHTS_CONNECTION_STRING
faktisch
Connection String zu Application Insights. Ohne den Wert startet die DataBridge trotzdem, gibt aber nur eine Warnung aus und sendet keinerlei Telemetrie — kein Logging, keine Metriken, keine Fehlerdiagnose.
¹ Schlüssel- oder identitätsbasiert. Standardmäßig werden die beiden Connection Strings
gesetzt. Zusätzlich setzt das Deployment in diesem Modus TARGET_BASED_SCALING_ENABLED=0:
Target-based Scaling ist damit abgeschaltet, der Host skaliert direkt über den Metrics Monitor
und die entsprechende Warnung im Log entfällt. Ist der Preview-Schalter enableManagedIdentity (Bicep) aktiv, entfallen sie und
werden durch die identitätsbasierten Varianten ersetzt — die Function nutzt dann die Managed
Identity:
Variable (Identity-Modus)
Beschreibung
AzureWebJobsStorage__accountName
Name des Storage Accounts. Der Functions-Host leitet Blob/Queue/Table-Endpunkte daraus ab und authentifiziert über die Managed Identity.
ExportQueueServiceBus__fullyQualifiedNamespace
Voll qualifizierter Service-Bus-Namespace (z. B. sbfoo.servicebus.windows.net) für den identitätsbasierten Zugriff.
Lokal (local.settings.json) bleiben die schlüsselbasierten Connection Strings maßgeblich.
`ExportQueueServiceBus` steht an zwei Stellen
Das Deployment hinterlegt den Service-Bus-Connection-String doppelt: einmal als
Anwendungseinstellung und einmal als Eintrag unter Connection strings (Typ ServiceBus).
Die DataBridge sucht den Wert in dieser Reihenfolge:
ConnectionStrings:ExportQueueServiceBus → SERVICEBUSCONNSTR_ExportQueueServiceBus →
SQLCONNSTR_… → CUSTOMCONNSTR_… → Anwendungseinstellung ohne Präfix.
Wird der Namespace ausgetauscht, sind beide Stellen anzupassen — sonst greift
weiterhin der alte Wert aus der höher priorisierten Quelle.
Im Identity-Modus (enableManagedIdentity) entfällt das: dort gibt es keinen
Connection-String-Eintrag, sondern nur ExportQueueServiceBus__fullyQualifiedNamespace.
Laufzeit-Einstellungen
Variable
Typ
Standardwert
Pflicht
Beschreibung
GetChangesTimerExpression
CRON (6-stellig)
*/15 * * * * *
✅
Taktung des GetChanges-Timers. Bei einer Neuinstallation alle 15 Sekunden.
SkipOutdatedMessages
Boolean
false
—
Wenn true: Nachrichten, deren Quell-Zeitstempel älter ist als der Zieldatensatz, werden nicht verarbeitet, sondern nach sbqignored verschoben.
`GetChangesTimerExpression` ist zwingend
Die Variable hat keinen Standardwert im Code — der Wert kommt aus dem Deployment.
Fehlt die Einstellung, schlägt die Timer-Bindung fehl und GetChanges läuft gar nicht.
`SkipOutdatedMessages` wirkt nur bei D365-Systemen
Die Einstellung wird ausschließlich von den Konnektoren für Business Central, Dataverse
und NAV ausgewertet — bei SQL-Quellen hat sie keine Wirkung. Zusätzlich greift sie nur,
wenn im Job ein WatermarkField gesetzt ist.
Nach einem Standard-Deployment steht der Wert auf false. Nur wenn die Variable
vollständig fehlt, gilt der Code-Fallback true — im Marketplace-Assistenten liegt
die Option unter Product Settings → Preview.
CRON-Ausdruck — Format
Der CRON-Ausdruck nutzt das 6-stellige NCrontab-Format (inkl. Sekunden):
Einzelne Jobs können über das Feld Schedule einen eigenen, seltener greifenden
Zeitplan bekommen — siehe Jobs.
Logging & Telemetrie
Die DataBridge steuert ihr Telemetrie-Volumen über zwei Mechanismen: gepuffertes Logging
für Log-Einträge und Sampling für ausgehende Aufrufe. Ausführlich beschrieben unter
Betrieb → Logging.
Variable
Typ
Standardwert
Beschreibung
TELEMETRY_CONTROL
String
TRACE_SAMPLE
Globaler Override für beide Sampling-Mechanismen. Werte: TRACE_SAMPLE (selektives Sampling, entspricht auch einem leeren Wert), TRACE_ALL (sendet alles), TRACE_NONE (unterdrückt alles).
TELEMETRY_INFO_SAMPLE_RATE
Integer 0–100
20
Anteil der Information-Einträge, die bei erfolgreichen Läufen gesendet werden. Bei Läufen mit Warnungen oder Fehlern immer 100 %.
TELEMETRY_DEPENDENCY_SAMPLE_RATE
Integer 0–100
10
Anteil der erfolgreichen und schnellen Aufrufe an Quell- und Zielsysteme (D365 OData, SQL, Table Storage, Service Bus), die gesendet werden. Fehlgeschlagene und langsame Aufrufe sind davon nicht betroffen.
TELEMETRY_DEPENDENCY_SLOW_MS
Integer (ms)
2000
Schwellwert, ab dem ein Aufruf als „langsam" gilt und immer gesendet wird — auch bei Erfolg.
Telemetrie-Verhalten im Überblick
Lauf-Ergebnis
Trace
Debug
Information
Warning
Error
Fehlerfreier Lauf
nie
—
~20 % (konfigurierbar)
✅
✅
Lauf mit Warnungen
nie
—
✅ alle
✅
✅
Lauf mit Fehler
nie
✅ alle
✅ alle
✅
✅
Trace-Einträge erreichen Application Insights grundsätzlich nie — auch nicht bei
Fehler-Läufen. Sie sind ausschließlich live im Log Stream der Function App bzw. im
Container-Log sichtbar.
Abhängigkeiten
Aufruf
Wird gesendet
Fehlgeschlagen
immer vollständig
Langsam (≥ TELEMETRY_DEPENDENCY_SLOW_MS)
immer vollständig
Erfolgreich und schnell
anteilig gemäß TELEMETRY_DEPENDENCY_SAMPLE_RATE
Die Entscheidung fällt hier pro Aufruf und nicht pro Funktionsausführung — ein
fehlgeschlagener Lauf enthält deshalb nicht zwangsläufig die erfolgreichen Aufrufe davor.
`TRACE_ALL` nicht dauerhaft setzen
TRACE_ALL deaktiviert beide Sampling-Mechanismen und kann das Datenvolumen um ein
Vielfaches erhöhen — bis zum Erreichen der Tagesobergrenze, ab der gar keine Telemetrie
mehr ankommt. Nur gezielt für die Dauer einer Analyse aktivieren.
Funktionen gezielt deaktivieren
Einzelne Azure Functions können ohne Redeployment deaktiviert werden.
Das ist nützlich, um z. B. die Quellabruf-Funktion zu stoppen, ohne die
Queue-Verarbeitung zu unterbrechen.
Die letzten vier gehören zur optionalen Durable-Orchestrierung, die im Regelbetrieb
ohnehin nicht aktiv ist.
Diese Variablen legt das Deployment nicht an
Die Toggles sind weder Teil des Bicep-Deployments noch des Marketplace-Assistenten. Sie
müssen bei Bedarf manuell in den Anwendungseinstellungen angelegt und danach wieder
entfernt bzw. auf false gesetzt werden.
Tipp: Wartungsfenster
Um während einer Wartung keine neuen Nachrichten zu erzeugen, GetChanges.Disabled = true
setzen. Die Queue-Funktionen können aktiv bleiben und bereits vorhandene Nachrichten
weiter verarbeiten.
Plattform-Einstellungen — nicht verändern
Diese Werte setzt das Deployment. Sie steuern die Azure-Functions-Laufzeit selbst und
haben keinen fachlichen Bezug zur DataBridge:
Variable
Wert
Bedeutung
FUNCTIONS_EXTENSION_VERSION
~4
Version der Azure-Functions-Runtime
FUNCTIONS_WORKER_RUNTIME
dotnet-isolated
Worker-Modell (.NET Isolated Worker)
WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
= AzureWebJobsStorage
Ablage des Function-Contents
WEBSITE_RUN_FROM_PACKAGE
1
Ausführung direkt aus dem Deployment-Paket
Änderungen führen zu einer nicht startfähigen App
Diese Einstellungen sind nicht dafür gedacht, angepasst zu werden. Ein abweichender Wert
kann dazu führen, dass die Function App gar nicht mehr startet oder keine Funktionen mehr
registriert werden.
Nur im Container-Betrieb
Variable
Wert
Bedeutung
AzureWebJobsSecretStorageType
files
Weist die Runtime an, Function-Keys ins Dateisystem zu schreiben. Ohne diesen Wert sind HTTP-Trigger mit Function-Authentifizierung nicht aufrufbar.
Key Vault (optional)
Statt Connection Strings direkt in den Anwendungseinstellungen zu speichern, können
diese in einem Azure Key Vault hinterlegt werden. Die Function App referenziert
das Secret dann per Key Vault Reference:
Diese Referenz wird direkt als Wert der jeweiligen Umgebungsvariable eingetragen.
Azure löst sie zur Laufzeit automatisch auf — ohne Änderungen am Code.
Key Vault wird nicht mitdeployt
Das Bicep-Deployment legt keinen Key Vault an. Die System Managed Identity der
Function App wird hingegen seit v2.2 automatisch angelegt. Vor der Nutzung des Key Vault
sind daher manuell einzurichten:
Key Vault anlegen und das Secret hinterlegen
Der (bereits vorhandenen) System Managed Identity der Function App die Berechtigung
Get auf die Key Vault Secrets erteilen
Ohne diese Schritte bleibt die Referenz unaufgelöst und die App startet mit einem
fehlerhaften Verbindungswert.
Für die Zugangsdaten zu Quell- und Zielsystemen gibt es einen zweiten, davon
unabhängigen Weg über den Parameter keyVaultUrl im Verbindungs-JSON — siehe
Verbindungen.
4 - Container-Betrieb
Die DataBridge als Container bauen, in eine Azure Container Registry veröffentlichen und lokal starten — Beta.
Die DataBridge lässt sich als Container-Image bauen und betreiben. Das Image basiert auf
der Azure-Functions-Laufzeit und enthält dieselbe Anwendung wie das reguläre Deployment.
Beta — nicht für den Kundenbetrieb
Der Container-Betrieb ist eine Beta-Funktion und nicht für den produktiven
Kundenbetrieb vorgesehen. Auch der auf dieser Seite beschriebene Weg selbst ist noch
Beta: Abläufe, Dateinamen und Parameter können sich ohne Ankündigung ändern.
Wer die DataBridge als Container einsetzen möchte, wendet sich bitte vorab an WYSA —
dort wird der konkrete Anwendungsfall geprüft und der aktuelle Stand mitgeteilt.
Sinnvoll ist der Container-Betrieb derzeit vor allem für lokale Tests und
Entwicklung: Die HTTP-Trigger lassen sich damit ohne Azure-Deployment aufrufen.
Voraussetzungen
Werkzeug
Zweck
Docker Desktop oder Podman
Image bauen und Container starten
Azure CLI (az)
Anmeldung an der Azure Container Registry (nur zum Veröffentlichen)
Alle Befehle auf dieser Seite werden aus dem Ordner src/ ausgeführt — dort liegen
Dockerfile, compose.yml und die Start-Scripts.
Image bauen
Das Dockerfile liegt in src/. Bei Bedarf lässt sich dort das Basis-Image anpassen.
Damit steht das Image unter der angegebenen Versionsnummer in der Registry bereit.
Registry in der Function App nicht auswählbar
Lässt sich die Registry beim Konfigurieren einer Azure Function App nicht auswählen,
weil kein Admin-Konto verwendet wird, kann der Admin-Zugang nachträglich aktiviert
werden:
az acr update -n acrwysatest --admin-enabled true
Lokal betreiben
Umgebungsdatei anlegen
In src/.podman/ liegt die Vorlage podman.env.sample. Diese kopieren und unter dem
Namen podman.<Umgebung>.env ablegen, zum Beispiel podman.wysatest.env:
Anschließend die Datei mit den Verbindungsdaten der Zielumgebung füllen. Sie enthält
unter anderem AzureWebJobsStorage, ConnectionStrings__ExportQueueServiceBus,
APPLICATIONINSIGHTS_CONNECTION_STRING, den Timer-Ausdruck
GetChangesTimerExpression sowie die
Funktions-Toggles.
Danach in src/compose.yml prüfen, dass env_file auf die richtige Datei verweist:
env_file:
- .podman/podman.wysatest.env
Der Container veröffentlicht seinen Port unter 7071 und setzt
AzureWebJobsSecretStorageType=files, damit die Function-Keys im Container abgelegt
werden können.
Start-Script (empfohlen)
Der einfachste Weg sind die mitgelieferten Start-Scripts in src/. Sie bauen das Image,
starten den Container und geben anschließend alle HTTP-Trigger-URLs inklusive
Authentication-Key aus.
Die URLs lassen sich direkt im Browser öffnen oder in Bruno beziehungsweise curl
verwenden.
Manueller Start
Wer den Container selbst steuern möchte, startet ihn aus dem Ordner src/:
podman compose up --build -d
Logs anzeigen:
podman compose logs -f
Container beenden:
podman compose down
Beim manuellen Start muss der Key selbst ausgelesen werden
Azure Functions verlangen bei AuthorizationLevel.Function einen Schlüssel im
Query-Parameter ?code=. Das Start-Script liest den Master-Key automatisch aus dem
laufenden Container.
Beim manuellen Start muss der Schlüssel selbst ermittelt werden — er liegt nach dem
ersten Aufruf im Container unter /azure-functions-host/Secrets/host.json.
Installation prüfen
Ob der Container korrekt läuft, lässt sich über die HTTP-Trigger prüfen — GetInfo
liefert die Version, CheckList und Validate prüfen Mappings und Konfiguration. Die
Details dazu stehen unter Installation.