top of page
  • Writer's pictureRoland Lucas

How to find all Premium Power Apps and Power Automate Flows (Microsoft License Enforcement)

Microsoft are in the process of making some changes to license enforcement within Power Automate, prior to this there have been some discrepancies with license enforcement within the platform meaning that your users could be using premium connectors without the correct licenses. This means that your organisation could be exposed form a license perspective and face an unexpected bill.


Power Platform licensing on the whole is a complicated subject, anything that requires an official 33 page guide to explain isn’t designed to be easily digestible (a cynic may say deliberately so!). I’m not going to try to advise on how you should set up your licensing but can help you identify where your risk lies.


More information on the licensing changes can be found at the following link, note these changes are currently scheduled to come into force in Q2 2024 but there are a variety of cases each with a different grace period before the flow will stop working. It’s worth reading through this to understand how you could be impacted.



How can you check if you have a problem?

Microsoft have released a PowerShell command to allow organisations to understand what flows will be subject to license enforcement, however from my experience you may be further exposed and while this may not be enforced with the upcoming changes, if you were to be audited you could be in breach of licensing. If you have the Power Platform Center of Excellence configured check there first as you'll likely find this information there too.


This script doesn’t encapsulate everything you can and should license within Power Platform but will show you:

  1. Power Automate flows that Microsoft are flagging for imminent license enforcement.

  2. Power Apps that are operating in a premium context

  3. Power Automate flows that are using premium connectors.


Once you have the data generated from this, you need to overlay your licensing to understand if the apps and flows are covered by the licenses your organisation holds. You then have a choice to purchase additional licenses to cover, re-engineer apps/flows to optimise licensing or look to decommission.


Now if you’re non-technical but have a vested interest in ensuring you’re covered, point one of your technical staff to the rest of this post.


Notes about the script:

  1. You will need both the Microsoft Graph and the Power Platform PowerShell modules installed to run this. Follow the instructions provided in the links below:

    1. Guide: Install the Microsoft Graph PowerShell SDK | Microsoft Learn

    2. Guide: PowerShell support for Power Apps and Power Automate - Power Platform | Microsoft Learn

  2. Where a flow uses multiple premium connectors, the spreadsheet will contain two lines, one for each premium connector

  3. This will only pull data for the environments the user running it can access, make sure you use an account with enough permissions otherwise you'll miss data

  4. Depending on the size of your environment the script can take a while to run, if so consider splitting up the execution by using the parameters e.g. the following command will just pull the Power Automate flows that are using premium: Get-PowerPlatformPremiumInfo -ExcludePowerApps $true -ExcludeMicrosoftFlagged $true


The code (Github source)

Once you've loaded the function by running the code in a PowerShell window you can then call the function to create the report using "Get-PowerPlatformPremiumInfo"


For anyone who's interested in the technical side of creating the script there was one main learning point: When you call Get-AdminFlow and it returns multiple objects, it won’t provide all the properties of the flow. In our case this means we are missing key information about the connectors in use and whether they are premium. In order to get this we run the Get-AdminFlow command again but against a single flow, this now gives us considerably more information about the flow but means we have to run the command on every flow individually to get the data, consequently taking longer.  

Hope this helps!

3 views0 comments
bottom of page