I recently presented at the Power BI & Fabric Manchester User Group on how you can transition from your Premium capacities to Fabric capacities following this blog post back in March 2024. The post announces the retirement of Power BI Premium capacities and the transition to Fabric capacities going forwards. With that in mind, I thought it would be a good idea to document the process and, well, here we are…
Common Questions
When speaking with customers there are definitely some common questions that crop up. I’ll quickly try to address these before moving on.
What is a Fabric Capacity?
In practical terms, a Fabric Capacity is the same as a Power BI Premium capacity. The key difference is how you purchase the capacity. For Power BI Premium these are purchased from Modern Work and for Fabric these are purchased through the Azure portal.
I’m not ready for Fabric, can I stay on Premium?
If you have Power BI Premium you are already “Fabric Ready”. As mentioned in the introduction, we announced the retirement of Power BI Premium Capacities in March 2024. Nearly all* Fabric workloads are available on Power BI Premium capacities. One example I can think of is that AI Skills are only available on a Fabric capacity.
* The list is ever changing so I’d recommend bookmarking this page and monitoring the blog for updates
So how can I transition to Fabric Capacities?
There are two main ways in which you can facilitate this transition.
Manually
The first approach is manually through the Fabric and Azure portals. You will need to first create your corresponding capacity in the Azure Portal. Once this has been created, you can navigate to the Admin portal in Fabric. Under the Fabric Capacity tab of the Capacities settings section of the portal, you can allocate your workspaces to the new capacity via the Assign workspaces button.

On top of assigning the workspaces to the new capacity you will also need to ensure that all capacity settings are copied across. This includes any delegated tenant settings present on the capacity, plus all other capacity settings such as Notifications, Power BI Workloads and Data Engineering/Science Settings.
Depending on how many capacities you have, and how many workspaces you have within those capacities, this could become an extremely time consuming process and could introduce the possibility of settings (or workspaces) being missed.
Programmatically
Now on to the cool part!
For those unfamiliar I would like to introduce Semantic Link and Semantic Link Labs. The links provide more detail but these libraries allow to you to do so many tasks using Notebooks in Fabric. I’ve been lucky enough to be able to work on the functionality that allows customers to programmatically manage and implement the transition to Fabric capacities.
Discovery
You might be thinking “where do I start?” and want to get the lay of the land before completing the transition. Thankfully Semantic Link and Semantic Link Labs have got you covered! Let’s create a new notebook and get started…
Using the following functions in your notebook, you are able to list and store the details for your capacities, workspaces and items within your tenant:
Function | Description |
list_workspaces | Lists workspaces for the organization. |
list_capacities | Shows the list of capacities and their properties. |
list_items | Shows a list of active Fabric and PowerBI items. |

What these functions do is provide wrappers around the APIs meaning you can more easily call them via your Fabric Notebooks.
Migration
Once you’ve completed your discovery phase, then you’re ready to complete the transition.
Thankfully the Semantic Link Labs repository contains a helper notebook which provides templates for multiple scenarios. At the point of publishing this post they are:
- Migrate a single P SKU -> F SKU
- Migrate a list of P SKUs to F SKUs
- Migrate all P SKUs to F SKUs
- Migrate a list of P SKUs to F SKUs; associate each capacity with a specific resource group
- Migrate a single P SKU (already created F SKU)
- Migrate a list of P SKUs (already created F SKUs)
I won’t go into too much detail here as hopefully the section names are self-explanatory. I will, however, quickly cover the prerequisites and parameters for executing these functions.
Prerequisites
The helper notebook describes the prerequisites and the table below summarises what’s needed prior to completing the migration.
Requirement | Details |
Azure Subscription | Must have an Azure Subscription |
App Registration | Must register an App |
Permissions | Contributor role at the scope where the resources will be created, often the subscription level |
Azure Key Vault | Set up within the Azure Subscription |
Secrets | Save secrets for the Tenant ID, Client ID (Application ID), Client Secret |
Key Vault Permissions | Ensure the user executing the notebooks has “Key Vault Secrets User” |
Fabric Permissions | User should be a tenant admin |
Parameters
Depending on the scenario you will need to provide these core parameters
azure_subscription_id | The Azure subscription ID in which the Fabric capacities will reside |
key_vault_uri | The key vault uri where your secrets for the App/SPN will reside. e.g. https://MyKeyVault.vault.azure.net/ |
key_vault_tenant_id | Azure Key Vault secret which stores your Tenant ID |
key_vault_client_id | Key Vault secret which stores your Client ID (Application ID) |
key_vault_client_secret | Azure Key Vault secret which stores your Client Secret |
resource_group | Name of the resource group in which the new capacities will reside This can be a dictionary containing a mapping between resource groups and capacities. |
capacities | The capacity(ies) to migrate from Power BI Premium (including PBI Embedded). Defaults to None which migrates all accessible Power BI capacities to Fabric capacities. |
Migration in action
Below is a short video which illustrates the process of migrating a single premium capacity using Semantic Link Labs.
Edit: Due to recent changes with the internal APIs the capacity settings are no longer migrated. You will need to manually copy the settings from the Premium Capacity to the new Fabric Capacity.
What’s next?
Currently this solution only covers migrations where the new capacities are created in the same region. Due to limitations within Fabric at the moment it is not possible to migrate workspaces with non-Power BI items or large semantic models to a capacity in a different region. It is possible to migrate these workspaces but first you will need to remove the “offending” artifacts in the workspace before migrating, and then having to recreate them once the workspace has been assigned to the new capacity. We are currently working on a way to handle this programmatically, but unfortunately we don’t have a timeline on that.
Currently the functions will authenticate using the user who is executing the notebook. We would like to provide solutions that allow you to use a service principal which has the correct permissions on your tenant. Again, like the cross region migrations there is no timescale on this. Plus we are also reliant on the API calls supporting service principals too.
Conclusion
Transitioning from Power BI Premium to Fabric Capacities is a significant step forward. By following the steps outlined in this post, you can ensure a smooth and efficient transition. Whether you choose to transition manually through the Fabric and Azure portals or programmatically using Semantic Link Labs, the process is straightforward and well-documented.
Remember to prepare all necessary prerequisites and complete the analysis of your tenant to avoid any issues during the transition. Embracing Fabric Capacities will not only enhance your data capabilities but also position your organisation for future growth and innovation.
If you have any questions or need further assistance, feel free to reach out in the comments or contact your Microsoft account team.
Thank for all the job done. Do you know why Premium per user licences are excluded form the retirement ? This involve the future of all our datamarts, since we use PPU licence so far, and that datamart are still in preview (for 2 years now !)
Hi Maignan,
Personally I’d think about transitioning your Datamarts to Fabric DW.
I don’t know what (or when) GA looks like for Datamarts, but you’ll get the benefit of Delta/Direct Lake for your semantic models if you use DW.
Check out this link from Alex Powers – https://www.linkedin.com/posts/alexmpowers_powerbi-microsoftfabric-fabriccat-activity-7257823880507994112-zepd?utm_source=share&utm_medium=member_android
What are the resources that are present in the resource group
Hi Khan,
The function creates a Fabric capacity (or capacities) in the specified resource group.
The capacity SKU will be the equivalent to the premium SKU (e.g. P1 -> F64)
Hello David,
I am trying to migrate a P1 to an F-SKU, after i did create some fabric items (Pipelines, notbooks, lakehouses). When trying to migrate i am getting the following error:
workspace cannot be reassigned because it includes Fabric items or you’re attempting to move them across regions. This is not supported currently. Remove the Fabric items, or move the workspace within the same region, and then try again.
i thought that the migration of P1 to F-SKU was an automatic process, and we could create fabric items that would be later migrated with no problem. any clarifications?
Hi Moe,
If you are migrating to a capacity in a different region then you will need to remove any Fabric items and scale down/remove any large semantic models.
Microsoft recently published this post on their official blog – https://www.microsoft.com/en-us/microsoft-fabric/blog/2024/12/02/automate-your-migration-to-microsoft-fabric-capacities/
The post outlines the limitations and restrictions when moving from Premium to Fabric capacities.
Hi David
We have an Enterprise Agreement and one Power BI Premium P2 capacity. Our EA is up for renewal at the end of May 2025, which is when we plan to transition to Fabric.
What would be the equivalent capacity in Fabric in terms of both performance and cost? We want to ensure that we do not exceed the current cost of Power BI P2.
Thanks
Neeraj D
Hi Neeraj,
A P2 is equivalent to F128, you can see the mapping in the capacities section of this page – https://learn.microsoft.com/en-us/fabric/enterprise/licenses#capacity
Thanks
David
Great post, thank you for sharing!
Can you detail the” non-Power BI items” you speak of in the sentence”? Due to limitations within Fabric at the moment it is not possible to migrate workspaces with non-Power BI items or large semantic models to a capacity in a different region”
Can these ‘non power bi items’ be migrated with the script if they’re in the same region? thank you!
Hi Phil,
Non-Power BI items are Fabric specific items such as Lakehouses, Data Warehouses, Pipelines etc.
You could check the items and their types using the SemPy/Semantic Link Labs functions (e.g. list_items()). You can then cross reference that list against the API output – https://learn.microsoft.com/en-us/rest/api/fabric/admin/items/list-items?tabs=HTTP#itemtype
thank you Phil. Can the non fabric items be migrated or must they all be rebuilt in the f-sku?
Hi Phil,
If they are moving to a capacity in the same region, then that is fine.
If they’re moving to a new region you will need to manage that separately
I’d consider creating a new workspace on the capacity in the new region and create the items there (git integration can help with this), then copy the data from workspace A into Workspace B.
Once you have copied the data you can delete the items in the original workspace.
thank you David! What happens at the end of the premium subscription to our power bi items? Assuming I haven’t migrated all workspaces to fabric sku? Will they stop refreshing/being viewable?
Hi Phil,
After the grace period, they will be downgraded to pro workspaces.
If you check out the official blog post here – https://www.microsoft.com/en-us/microsoft-fabric/blog/2024/12/02/automate-your-migration-to-microsoft-fabric-capacities/
Hi Mitch, thanks for the explanation. Should I expect the URL of apps shared externally to remain the same when I migrate from Premium to Fabric capacity? This is a concern for me with reports shared externally via Embed report > Website or portal, i.e. to named users, external to the organisation. Thx
Hi Drew,
All that changes is the capacity behind the workspace, so all GUIDs for workspaces, items, apps etc will remain the same.
Thanks
Many thanks!