New to Kestra?
Use blueprints to kickstart your first workflows.
Orchestrate SQL Server change data capture with Kestra and Debezium. Trigger one execution per row change and alert Microsoft Teams, without deploying Kafka Connect.
Turn SQL Server's built-in change data capture into a real-time event stream without deploying and operating Kafka Connect. This blueprint uses Kestra's Debezium SQL Server connector to create one execution per row change on a CDC-enabled table, logs every change for audit, and posts a Microsoft Teams alert only when a changed order crosses a value threshold, so the operations channel is not flooded with routine updates.
capture_order_changes (io.kestra.plugin.debezium.sqlserver.RealtimeTrigger) connects to the SQL Server instance and streams row-level changes from the sales.orders table in real time. snapshotMode: INITIAL takes a full snapshot on first start, then switches to streaming; format: INLINE exposes the row's columns directly under trigger.data, and trigger.stream carries the source table name.log_change (io.kestra.plugin.core.log.Log) records every captured change for a complete audit trail, independent of whether it triggers a downstream alert.high_value_change (io.kestra.plugin.core.flow.If) evaluates trigger.data.total > 5000. When true, notify_teams (io.kestra.plugin.microsoft365.teams.TeamsIncomingWebhook) posts an Adaptive Card style alert to the operations Teams channel with the changed row's stream and data.errors block posts a separate Slack alert if processing a captured change fails, so a broken downstream step never fails silently.Debezium's typical deployment model runs as a Kafka Connect connector, which means operating Kafka, Kafka Connect, and topic management just to react to a SQL Server row change. SQL Server Agent has no visibility into CDC events at all; it only runs scheduled jobs. Kestra's io.kestra.plugin.debezium.sqlserver.RealtimeTrigger embeds the Debezium engine directly, so a captured change starts a Kestra execution with no external streaming platform. From there, the full plugin catalog (branching, notifications, downstream writes) is available with retries, execution history, and replay.
sales.orders table (EXEC sys.sp_cdc_enable_db; then EXEC sys.sp_cdc_enable_table for the target table).SQLSERVER_HOSTNAME: hostname of the SQL Server instance.SQLSERVER_USERNAME / SQLSERVER_PASSWORD: SQL Server credentials with CDC read access.TEAMS_WEBHOOK_URL: Microsoft Teams incoming webhook URL for high-value alerts.SLACK_WEBHOOK_URL: Slack incoming webhook URL for failure alerts.database and includedTables to match your CDC-enabled database and table.high_value_change threshold or add more branches for other business rules.log_change with a write into a downstream cache, search index, or reporting table.RealtimeTrigger for io.kestra.plugin.debezium.sqlserver.Trigger to batch changes on a polling interval instead of one execution per row.log_change if downstream systems still expect a topic.