Deployment pipelines in Power BI/ Microsoft Fabric have become crucial for managing and automating the deployment of Power BI content across environments. As DevOps practices become more popular, integrating Power BI deployment pipelines with Azure DevOps can streamline workflows, improve collaboration, and ensure reliable analytics delivery. In this article, we’ll explore how to connect Azure DevOps Pipelines with Power BI deployment pipelines in a straightforward way, enabling a robust DevOps practice for your analytics projects.
First, I assume you already have Power BI and Azure DevOps environments set up. We will need some additional tools installed. While we can use existing PowerShell cmdlets or APIs for everything, a stable, supported, ready-to-go tool is available. Good news: you can add the “Power BI Automation Tools” extension to your Azure DevOps organization. It can be find in Visual Studio marketplace (link) if you have permissions you can install it on your organization.
When the extension is installed, we can verify it by going to Organization Settings > Extensions > Installed, where we should see our extension listed:
After the environment is ready, we must prepare a service principal for authentication between Azure DevOps and Power BI Service. To do this, create a service principal in Microsoft Entra ID by going to App registrations and selecting New registration:
In the next step, we can enter the name of the service principal and choose the account type as single tenant. The redirect URI is not important in our case, so we can leave it empty.
The final step in creating the service principal is to generate a secret. You can do this by opening the service principal we created, navigating to Certificates & secrets, and generating a new secret. Unfortunately, federated credentials are not supported in this setup, so we must manage client secrets ourselves. For security, we can store the secret in Azure Key Vault or another secret vault.
Everything is ready on the service principal side, so we need to create a new service connection in Azure DevOps. To do this, go to Azure DevOps Project Settings > Service connections > New service connection. From there, select “Power BI” as the service connection type, as shown in the screenshot below:
Creating a service connection is straightforward. As the authentication method, we must use Service Principal. Set the environment to Public (meaning public cloud, not China or government). Then, provide the Service Principal ID, which is the Client ID available in the app registration page of the service principal we created. The Service Principal Key is the secret we generated, and the Tenant ID can be found in the app registration or the main Entra page. After entering these details, give the connection a meaningful name and description.
We are nearly finished from an infrastructure perspective, but the final step is to grant our service principal permissions in the Power BI tenant. To do this, go to the Power BI Admin Portal, navigate to Tenant settings, and locate the section “Service principals can call Fabric public APIs.” There, add the security group to which our service principal is added as a member.
Let’s start creating a pipeline in Azure DevOps:
First we have to choose repository when our deployment pipeline code will be located:
Then we can start with the Starter Pipeline.
We can remove the sample code that was included and add a task called “Deploy Content in a Deployment Pipeline” that comes with the extension we have already installed.
The configuration of this task is straightforward. We just need to provide the following information:
- Power BI service connection: The connection we established in the previous steps.
- Pipeline: The Power BI deployment pipeline we want to run.
- Target stage: The target environment (DEV, TEST, PROD).
- Deployment note: An optional setting where we can add a brief description related to the deployment.
- Start next tasks only after the deployment is completed: Select this to halt the process in case of failure.
- Artifacts to deploy: Choose all or specific artifacts. If specific, we must provide the IDs or names of the items to be deployed.
- Create new workspace if needed: I prefer not to select this, as workspaces can be created in a separate process.
- Allow the deployment to create new artifacts in the target workspace: If parameterized, it’s best to configure it manually for the first time.
- Update the app in the target workspace: Select this if you want to update an app.
From the YAML perspective it looks pretty simple:
- task: DeploymentPipelines-Deploy@1
displayName: 'Full Deployment'
inputs:
pbiConnection: 'platform.bi-powerbi-automation-service-connection'
pipeline: ${{ parameters.pipeline }}
stageOrder: ${{ parameters.targetEnvironment }}
note: 'Full deployment initiated from DevOps by $(Build.RequestedFor)'
waitForCompletion: true
createNewWS: false
allowCreateArtifact: true
allowOverwriteArtifact: true
updateApp: ${{ parameters.updateApp }}
allowOverwriteTargetArtifactLabel: false
allowPurgeData: false
allowSkipTilesWithMissingPrerequisites: false
allowTakeOver: false
That’s all! It works without any issues, and you can implement it and enhance it with additional steps to aid in testing and deployment.
- Creating Private Endpoint to Microsoft Fabric workspace - October 12, 2025
- Setup Microsoft Fabric EventStream Custom Endpoint - October 6, 2025
- Starting Power BI deployment pipelines from Azure DevOps - August 25, 2025


















Last comments