Power Automate Flow Inventory - You Can't Govern What You Can't See
Build a Power Automate flow inventory using PowerShell, admin connectors, or the CoE Starter Kit. Discover, classify, and fix orphaned flows.
Ask any IT leader how many Power Automate flows run in their tenant. The answer is almost always a guess. “Maybe 20 or 30.” “A handful.” “Not many.”
Then you run an actual Power Automate flow inventory. In one org I audited, 40% of flows were owned by people who had left. The number is 300. Or 800. Or 2,000. Many were created by people who no longer work at the company. Some haven’t run successfully in months. Others connect to external services that IT never approved. Several are sending data to personal OneDrive accounts.
This isn’t hypothetical. This is what happens in every organization where Power Platform adoption grew organically without governance. Users discover Power Automate, solve their own problems, and move on. Nobody tracks what was built. Nobody reviews what’s running. Nobody knows what happens when those flows break.
You can’t govern what you can’t see. The inventory is step one.
Why Do You Need a Power Automate Flow Inventory?
Without a flow inventory, you cannot identify orphaned flows, enforce naming conventions, audit connector usage, or verify license compliance. A flow inventory gives administrators a single source of truth for every automation in the tenant, enabling informed governance decisions instead of guesswork.
Discovery Methods
There are four ways to discover flows in your tenant, from simplest to most comprehensive.
| Method | Effort | Scope | Automation | Best For |
|---|---|---|---|---|
| Power Platform Admin Center | Low | Per environment | Manual | Quick spot checks, small tenants |
| PowerShell cmdlets | Medium | Per environment or all environments | Scriptable | Bulk export, one-time audits |
| Admin connectors in Power Automate | Medium | All environments | Fully automated | Ongoing monitoring, custom reporting |
| CoE Starter Kit Core module | High (initial setup) | All environments | Fully automated, continuous sync | Enterprise-scale governance |
1. Power Platform Admin Center
The simplest approach. Navigate to admin.powerplatform.microsoft.com, select an environment, go to Resources, and click Flows. You get a list of all cloud flows in that environment with owner, status, and creation date.
Limitations: you can only view one environment at a time. Filtering is basic. There’s no export button for custom analysis. For a tenant with 3 environments, this is manageable. For a tenant with 30 environments, it’s not practical.
Best for: quick spot checks and small organizations.
2. PowerShell Cmdlets
The Get-AdminFlow cmdlet from the Microsoft.PowerApps.Administration.PowerShell module returns detailed information about flows. You can script it to loop through all environments and export the results.
# Install the module
Install-Module -Name Microsoft.PowerApps.Administration.PowerShell
# Get all flows across all environments
$environments = Get-AdminPowerAppEnvironment
$allFlows = @()
foreach ($env in $environments) {
$flows = Get-AdminFlow -EnvironmentName $env.EnvironmentName
foreach ($flow in $flows) {
$allFlows += [PSCustomObject]@{
FlowName = $flow.DisplayName
FlowId = $flow.FlowName
Environment = $env.DisplayName
CreatedBy = $flow.CreatedBy.userId
CreatedTime = $flow.CreatedTime
LastModified = $flow.LastModifiedTime
State = $flow.Enabled
}
}
}
$allFlows | Export-Csv -Path "FlowInventory.csv" -NoTypeInformation
PowerShell returns the most up-to-date data because it queries the platform APIs directly. Get-AdminFlow returns all cloud flows in an environment. You get flow name, ID, creator, creation date, last modified date, and enabled/disabled state.
Best for: one-time audits, scripted bulk operations, and organizations comfortable with PowerShell.
3. Admin Connectors
Power Platform provides admin connectors that you can use inside Power Automate flows themselves. This means you can build a flow that inventories all other flows. Recursive? Yes. Useful? Extremely.
The relevant connectors:
- Power Automate Management - list flows, get flow details, list flow runs
- Power Automate for Admins (Microsoft Flow for Admins) - disable flows, delete flows, administrative actions
- Power Platform for Admins - environment operations, DLP policies
You build a scheduled flow that runs daily or weekly, calls the admin connector to list all flows across environments, and writes the results to a Dataverse table or SharePoint list. This gives you a continuously updated inventory without manual effort.
Best for: ongoing monitoring with custom logic. You can add classification rules, anomaly detection, and alerting directly in the flow.
4. CoE Starter Kit Core Module
The Center of Excellence Starter Kit is Microsoft’s reference implementation for Power Platform governance. The Core module includes inventory flows that automatically sync all apps, flows, connectors, and environments to Dataverse tables.
The inventory flows run on a driver/sync pattern:
- Admin | Sync Template v4 (Driver) - orchestrates the sync process
- Admin | Sync Template v3 (Flows) - gets cloud flow information using the Power Automate Management connector
- Admin | Sync Template v3 (Flow Action Details) - (optional) gets the actions and triggers for every flow
The CoE Starter Kit stores inventory in Dataverse and includes Power BI dashboards for visualization. It handles the heavy lifting of discovery, deduplication, and incremental sync. The inventory flows only update objects modified since the last sync, reducing API consumption.
Best for: enterprise-scale governance. If you’re serious about Power Platform governance, the CoE Starter Kit is the starting point. You’ll likely customize it, but it provides the foundation.
What to Capture Per Flow
Running a discovery query is step one. Making the data useful is step two. Here is what you should capture for every flow in your inventory:
| Data Point | Where to Get It | Why It Matters |
|---|---|---|
| Flow display name | Get-AdminFlow / Admin connector | Naming convention compliance check |
| Flow ID | Get-AdminFlow | Unique identifier for programmatic management |
| Owner (user or service principal) | Get-AdminFlow / flow details | Orphan detection, license compliance |
| Environment | Environment enumeration | Which environment the flow lives in |
| Trigger type | Flow definition / Flow Action Details | Understanding what starts the flow |
| Connectors used | Flow Action Details (CoE) | Connector audit, DLP compliance |
| Last successful run date | Flow run history | Detecting abandoned flows |
| Flow status (enabled/disabled) | Get-AdminFlow | Finding flows that silently stopped |
| Solution membership | Solution component query | Identifying loose flows vs solution-aware |
| Created date | Get-AdminFlow | Age analysis, finding legacy flows |
| Description | Flow details | Documentation compliance check |
Classification Framework
Raw inventory data is overwhelming. A flat list of 500 flows isn’t actionable. Classification turns data into decisions.
| Classification | Criteria | Governance Level | Examples |
|---|---|---|---|
| Business-critical | Supports a core business process. Failure impacts revenue, compliance, or operations. | Highest. Service principal ownership, managed solution, monitored 24/7. | Invoice approval, regulatory reporting, customer onboarding |
| Team productivity | Department-level workflow. Failure impacts a team's efficiency but not the whole organization. | Medium. Solution-aware, named correctly, owner tracked. | Leave request approvals, team status reports, document routing |
| Personal | Individual automation. One person uses it for their own work. | Low. Track in inventory, ensure no PII exposure. | Email sorting rules, personal task reminders, calendar sync |
| Experimental | Testing, learning, proof of concept. Not intended for ongoing use. | Minimal. Track, auto-disable if inactive for 60 days. | Hackathon projects, training exercises, connector testing |
Classification should be a field in your inventory, not a separate spreadsheet. If you use the CoE Starter Kit, add a custom column to the flow inventory table. If you use a SharePoint list, add a choice column. The classification drives the governance response.
The Orphan Problem
An orphaned flow is a flow whose owner no longer has a valid account. The owner left the organization, their account was disabled, and the flow keeps running. Or tries to. Usually it starts failing because the connections tied to the owner’s account no longer authenticate.
How to Detect Orphans
In the Power Platform Admin Center, orphaned flows show no owner in the Owners column on the environment’s flow resource page. In PowerShell, you can cross-reference the flow creator’s user ID against Microsoft Entra to check if the account is still active.
The CoE Starter Kit does this automatically. Its inventory flows track the maker’s status and flag flows owned by disabled or deleted users.
How to Fix Orphans
- 1
Identify the orphan
Use admin center, PowerShell, or CoE inventory to find flows with invalid owners.
- 2
Assess business impact
Is the flow still needed? Check the last run date and whether the business process it supports is still active.
- 3
Assign a co-owner
In the admin center or via PowerShell (Set-AdminFlowOwnerRole), add a new co-owner to the flow.
- 4
Fix the connections
The new owner needs to re-authenticate any connections that were tied to the previous owner's account.
- 5
Consider service principal ownership
For business-critical flows, change ownership to a service principal to prevent future orphaning.
Prevent Orphans by Design
The best way to handle orphans is to prevent them. Service principal ownership is the answer for any flow that supports an organizational process.
A service principal is a non-human identity in Microsoft Entra. It doesn’t have a user account that can be disabled when someone leaves. It doesn’t take vacation. It doesn’t change roles. When a flow is owned by a service principal, the ownership is stable regardless of personnel changes.
Key facts about service principal flow ownership:
- Service principals can own and run flows
- For solution-aware flows, connections don’t need to be shared separately with the service principal
- Premium service principal flows need a Power Automate Process or per-flow license
- Standard (non-premium) service principal flows get 25,000 base requests per tenant per 24 hours
- Service principal flows in context of Dynamics 365 applications get higher limits from a tenant-level pool
Connector Audit
Your inventory should tell you which connectors each flow uses. This matters for three reasons:
-
DLP compliance. Data Loss Prevention policies restrict which connectors can be used together. A flow that combines a SharePoint connector (business data) with a personal Dropbox connector (personal storage) might violate your DLP policy. Your inventory should flag these combinations.
-
External service exposure. Which flows connect to services outside your organization? HTTP connectors, custom connectors, and third-party connectors can send data anywhere. You need to know which flows use them and what data they transmit.
-
Premium connector licensing. Flows that use premium connectors require premium licenses. Your inventory should identify which flows use premium connectors so you can ensure license compliance.
The CoE Starter Kit’s optional Flow Action Details flow captures connector and action details for every flow. This is resource-intensive to run but provides the deepest visibility.
Output Format
Where do you store the inventory?
| Storage | Best For | Pros | Cons |
|---|---|---|---|
| Dataverse (via CoE Starter Kit) | Enterprise tenants, ongoing governance | Rich querying, Power BI integration, automated sync | Requires Dataverse capacity, CoE setup effort |
| SharePoint list | Small to medium tenants, simpler governance | Easy to set up, familiar interface, Power Automate integration | Limited to 5,000 item threshold for views, no complex queries |
| Excel / CSV | One-time audits, snapshots | Simple, exportable, shareable | No automation, stale immediately after creation |
For ongoing governance, Dataverse via the CoE Starter Kit is the right answer. It gives you a continuously updated, queryable inventory with Power BI dashboards out of the box. For smaller organizations or initial assessments, a SharePoint list with a weekly sync flow is a pragmatic starting point.
Keeping It Current
An inventory that’s accurate on the day you create it and wrong the next week isn’t governance. It’s a report.
| Approach | Frequency | Effort | Accuracy |
|---|---|---|---|
| CoE Starter Kit automated sync | Daily | Zero (after initial setup) | High. Only misses items created since last sync |
| Scheduled PowerShell script | Weekly or monthly | Low (scheduled task) | Good. Depends on run frequency |
| Admin connector flow | Daily to weekly | Low (after flow is built) | Good. Customizable to your needs |
| Manual audit | Quarterly | High. Someone has to do it | Low. Outdated within days of completion |
The CoE Starter Kit’s incremental sync is designed for this. By default, it only updates objects modified since the last inventory run (configurable via the InventoryFilter_DaysToLookBack environment variable, default 7 days). If you need a full re-sync, set the Full inventory environment variable to Yes, run the driver flow, then set it back to No.
Quarterly manual audits are the baseline. If you do nothing else, run a PowerShell export once per quarter, compare it to the previous quarter, and flag new flows, orphaned flows, and flows that stopped running. It’s not ideal, but it’s infinitely better than not knowing what exists.
From Inventory to Action
An inventory isn’t the end goal. It’s the foundation for governance decisions:
- Flows without naming convention compliance? Reach out to the makers, help them rename.
- Loose flows that should be in solutions? Prioritize migration based on classification.
- Orphaned flows? Fix or decommission based on business need.
- Flows using unapproved connectors? Review, approve, or disable.
- Flows that haven’t run in 90 days? Candidate for decommission.
- Flows owned by users without proper licenses? Fix licensing or reassign ownership.
The inventory gives you the data. Your governance process gives you the actions. Without the inventory, you are governing blind. With it, you are making informed decisions.
Start Here
If you’re starting from zero, here’s the pragmatic path:
- 1
Run a PowerShell export
Use Get-AdminFlow across all environments. Export to CSV. This takes 30 minutes and gives you a baseline.
- 2
Count and categorize
How many flows? How many environments? How many unique owners? How many are enabled vs disabled? Get the high-level numbers.
- 3
Identify orphans
Cross-reference flow owners with your user directory. Flag flows owned by departed employees.
- 4
Classify the top 20
Take the 20 most-used flows (by run count or business impact). Classify them as business-critical, team, personal, or experimental.
- 5
Make the case for CoE Starter Kit
Use the numbers from your audit to justify the investment in the CoE Starter Kit. 'We have 400 flows, 60 are orphaned, and we had no idea' is a compelling governance story.
- 6
Implement continuous sync
Deploy the CoE Starter Kit or build your own admin connector flow. Move from point-in-time snapshots to continuous inventory.
The inventory is the foundation. Naming conventions tell you what a flow is. Environment strategy tells you where it lives. Solution awareness tells you how it deploys. But the inventory tells you what exists in the first place. Start there.
Power Automate Governance - The Enterprise Playbook
This article is part of a 10-part series:
- Naming Conventions That Scale
- Environment Strategy - Dev Test Prod
- Solution-Aware Flows
- Flow Inventory
- Pipelines - Dev to Prod
- CoE Starter Kit
- AI-Powered Flow Review
- Versioning and Source Control
- The Governance Repo
- Weekly Governance Digest
AZ365.ai - Azure and AI insights for architects building on Microsoft. Follow Alex on LinkedIn for architecture deep dives.
Stay in the loop
Get new posts delivered to your inbox. No spam, unsubscribe anytime.
Related articles
Notification Architecture That Cannot Break Your Business Logic
Separate Power Automate notification flows from business logic. 14 flows, zero write operations, daily digests over real-time floods.
The 10-Minute Build: How Specs and AI Produced 14 Power Automate Flows
Power Automate flows built by AI in 10 minutes -- but only because two years of governance made specs machine-readable. The full architecture story.
Spec-Driven Power Platform: The Complete Series
7 articles on building Power Automate flows with specs, governance, and AI. From tag-based architecture to solution packaging to honest AI collaboration.