New to Kestra?
Use blueprints to kickstart your first workflows.
Trigger a Microsoft Fabric notebook from Kestra with a service principal, pass dynamic parameters, poll until completion, and chain results into data pipelines.
id: fabric-run-notebook
namespace: company.team
variables:
workspace_id: your-workspace-guid
notebook_id: your-notebook-guid
tasks:
- id: run_notebook
type: io.kestra.plugin.microsoft.fabric.data.engineering.RunNotebook
tenantId: "{{ secret('FABRIC_TENANT_ID') }}"
clientId: "{{ secret('FABRIC_CLIENT_ID') }}"
clientSecret: "{{ secret('FABRIC_CLIENT_SECRET') }}"
workspaceId: "{{ vars.workspace_id }}"
notebookId: "{{ vars.notebook_id }}"
parameters:
input_date: "{{ now() | dateFormat('yyyy-MM-dd') }}"
output_table: silver.cleaned_events
wait: true
pollFrequency: PT15S
timeout: PT1H
Run a Microsoft Fabric notebook as an orchestrated step in your data pipeline. This blueprint authenticates to Fabric with an Entra ID service principal, submits a notebook job with runtime parameters, and waits for the run to reach a terminal state before the flow continues. It solves the common gap where a Fabric notebook needs to run with dynamic inputs (a processing date, a target table, model settings) and feed downstream tasks, instead of running in isolation on its own schedule.
run_notebook task (io.kestra.plugin.microsoft.fabric.data.engineering.RunNotebook) authenticates using tenantId, clientId, and clientSecret pulled from Kestra secrets.workspaceId and notebookId, both wired to the workspace_id and notebook_id flow variables so you can swap GUIDs without touching the task.parameters: here input_date is rendered with {{ now() | dateFormat('yyyy-MM-dd') }} and output_table is set to silver.cleaned_events.wait: true, the task polls the Fabric job at the pollFrequency interval (PT15S) until the notebook completes, fails, is cancelled, or is deduped, and gives up after the timeout (PT1H).Fabric's built-in scheduler can run a notebook on a clock, but it cannot easily start a notebook in response to an external event, pass values computed earlier in a pipeline, or coordinate the notebook with non-Fabric systems. With Kestra you get event and schedule triggers, automatic retries, end-to-end lineage across tasks, and a declarative YAML definition kept in version control. The notebook becomes one composable step alongside ingestion, dbt, alerting, and reverse ETL, all governed from a single place.
FABRIC_TENANT_ID: your Entra ID tenant id.FABRIC_CLIENT_ID: the service principal application (client) id.FABRIC_CLIENT_SECRET: the service principal client secret.FABRIC_TENANT_ID, FABRIC_CLIENT_ID, and FABRIC_CLIENT_SECRET as Kestra secrets.workspace_id and notebook_id variables to your Fabric GUIDs.parameters map to the inputs your notebook expects.pollFrequency and timeout to your notebook's typical runtime.RunNotebook tasks to orchestrate a medallion (bronze, silver, gold) pipeline.errors: to post a Slack or email alert when a run fails.retry policy to the task.