New to Kestra?
Use blueprints to kickstart your first workflows.
Retry flaky Power BI refreshes automatically with Kestra. Constant five minute retries with a verified wait, and a Slack alert only when retries exhaust.
Stop babysitting flaky refreshes. Datasets fed through an on-premises data gateway fail for reasons that fix themselves: a gateway restart, a source database under momentary load, a network blip. Without a retry policy, each blip becomes a red execution and a human clicking refresh again. This blueprint attaches a task-level retry block to io.kestra.plugin.powerbi.RefreshGroupDataset, so transient failures are absorbed silently and Slack only hears about failures that survive three attempts.
refresh_dataset (io.kestra.plugin.powerbi.RefreshGroupDataset) authenticates with the Azure AD service principal and triggers the refresh. With wait: true it polls every 15 seconds for up to 30 minutes, and a refresh that Power BI reports as failed fails the attempt.retry block (type: constant, interval: PT5M, maxAttempt: 3) re-runs the whole attempt, trigger plus wait, up to three times with five minutes between attempts, enough for a gateway restart or a momentary source outage to clear.notify posts the final status to Slack on success; whether it took one attempt or three is visible in the execution's attempt history.errors block fires only after the last attempt fails, so the alert means a persistent problem, not noise.Power BI has no retry policy for refreshes: a failed scheduled refresh stays failed until the next window. Kestra adds a declarative retry with a chosen interval and attempt cap around the unchanged refresh call, plus the execution history to distinguish a flaky source from a broken one.
groupId) and dataset id (datasetId) of the model to refresh.AZURE_TENANT_ID: Azure AD tenant id.AZURE_CLIENT_ID: Azure AD application (client) id.AZURE_CLIENT_SECRET: Azure AD client secret.SLACK_WEBHOOK_URL: Slack incoming webhook URL.groupId and datasetId with your workspace and dataset ids.interval and maxAttempt to how long your gateway blips usually last.type to exponential for backoff when the source needs longer to recover.