Power BI Alert to GitHub Issue
When a Power BI data alert fires (e.g. test coverage < 70% or error rate spike), creates a labeled issue in the relevant repo with the alert payload and assigns it to the on-call engineer.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
When a Power BI data alert fires (e.g., test coverage drops below 70% or error rate spikes), this flow automatically creates a labeled GitHub issue in the configured repo, assigns it to the on-call engineer, and posts a handoff message to a Microsoft Teams channel with a link to the issue.
Use Case
Operations and engineering teams monitor Power BI dashboards for critical metrics. When an alert fires, the team needs immediate action — creating an issue, assigning ownership, and notifying the responder. This flow automates all three steps in seconds, reducing mean-time-to-response for dashboard anomalies.
The flow is ideal for teams that:
- Instant GitHub issue creation from Power BI alerts — no manual ticket entry
- Automatic assignment to on-call engineer via email-to-login mapping
- Teams notification keeps responder informed in their primary workflow
- Full alert payload in issue body — responder has complete context
- No GitHub UI needed — responder gets a direct link to the issue
Flow Architecture
When a Power BI Alert Posts
When a HTTP request is receivedHTTP Request trigger accepting a Power BI webhook payload (alertTitle, alertThreshold, tileValue, tileName, tileUrl, etc.). The generated URL is pasted into the Power BI data alert webhook configuration.
Initialize Variables (7x)
Initialize variableHydrates env vars into local string variables: GitHubOwner, GitHubRepo, IssueLabel, OnCallEmail, TeamsGroupId, TeamsChannelId. Also derives OnCallLogin as the substring before '@' in OnCallEmail so it can be used as a GitHub login.
Compose Issue Title
ComposeBuilds the issue title from the Power BI payload using concat: '[Power BI Alert] <alertTitle> - <tileName> = <tileValue>'.
Compose Issue Body
ComposeBuilds a full Markdown block containing alert metadata, threshold, details, tile URL, and a footer attribution line.
Create GitHub Issue
GitHub - Create issuePOSTs the composed title and body to the configured owner/repo. Returns the issue number and html_url used by later steps.
Assign And Label Issue
GitHub - Update issue (UpdateIssueNum)PATCH on the newly created issue to set the assignee (OnCallLogin) and apply the configured label in a single call.
Post Alert To Teams
Microsoft Teams - Post message in a chat or channelPosts an HTML card to the configured Teams group/channel summarising the alert and linking back to the new GitHub issue.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_GitHubOwner | String | <configure> | GitHub organization or user that owns the target repo. Used as the owner segment in the Create Issue / Update Issue calls. |
| flowlibs_GitHubRepo | String | <configure> | Repo name where Power BI alerts are created as issues. |
| flowlibs_IssueLabel | String | power-bi-alert | Label applied to every issue created by this flow so they can be triaged or filtered in GitHub. |
| flowlibs_OnCallEngineerEmail | String | you@yourcompany.com | Email address of the on-call engineer. The GitHub login is derived as the substring before '@', so the GitHub username must match the email prefix. |
| flowlibs_TeamsGroupId | String | <configure> | Microsoft Teams group (team) ID that owns the alert channel. |
| flowlibs_TeamsChannelId | String | <configure> | Channel ID within the alert group where the Teams handoff card is posted. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Request | shared_request | HttpRequest (trigger) |
| GitHub | shared_github | CreateIssue UpdateIssueNum |
| Microsoft Teams | shared_teams | PostMessageToConversation |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Deploying to another environment
- Import the solution, update the six env vars (GitHub owner, repo, alert label, on-call email, Teams group/channel IDs), and bind the two connection references (GitHub, Teams). Save the flow to generate the HTTP Request trigger URL, copy it into the Power BI data alert webhook configuration, turn the flow on, and fire a test alert from Power BI to verify end-to-end.
- Dynamic on-call lookup
- Replace the email-to-login substring trick with a Dataverse lookup against a rotation table or a PagerDuty API call so the assignee follows the actual on-call schedule instead of a static env var.
- Add Slack notification
- Insert a Slack PostMessage action after the Teams post for dual-channel coverage when teams use both Teams and Slack.
- Custom issue label per alert type
- Store an alert type in the Power BI payload and conditionally set the GitHub label based on it (e.g. 'reliability', 'quality', 'performance') so issues triage themselves.
- Escalation after 2 hours
- Add a separate scheduled flow that queries GitHub for unresolved alert issues older than 2 hours and posts a reminder to Teams so stale alerts don't linger.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Compose issue title
Builds the GitHub issue title from the Power BI webhook payload. coalesce() guards against missing fields so the flow doesn't fail if Power BI omits a property.
EXPR.02Teams HTML card link
Wraps the html_url returned by Create GitHub Issue in an anchor tag so the Teams card shows a clickable 'View Issue' link.
EXPR.03Derive on-call GitHub login
Takes everything before '@' in the on-call email to use as the GitHub login. Assumes the GitHub username matches the email prefix.
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.