Connection references are the mechanism that makes Power Automate solutions portable across environments — but ungoverned connection references turn every deployment into a firefight. This lesson teaches you a naming convention that scales, an ownership model that survives team turnover, and a promotion checklist your whole team can follow without expert help.

Picture this: your team has spent three weeks building a critical order-processing flow that integrates Salesforce, SharePoint, and an internal SQL database. The solution is packaged, tested in your dev environment, and ready to promote to production. You import the solution, and immediately hit a wall — Power Automate is asking you to map three connection references, none of which have clear names, two of which appear to be owned by a developer who left the company last month, and one of which nobody on the team recognizes at all. You spend the next two hours firefighting what should have been a five-minute deployment step.
This scenario plays out in enterprise teams every single week. Connection references are one of Power Automate's most important ALM (application lifecycle management) features, but they're also one of the most consistently mismanaged. When governed well, they make environment promotion smooth and predictable. When governed poorly, they turn every release into an archaeology expedition.
By the end of this lesson, you'll understand how connection references work under the hood, how to design a naming convention that survives team turnover, how to assign and maintain ownership in a durable way, and how to build an environment promotion checklist that your whole team can follow without needing a Power Platform expert in the room.
What you'll learn:
You should have a working understanding of what Power Automate solutions are and roughly how environment promotion works. If you're new to that landscape, read Deploying and Managing Power Automate Solutions Across Environments: ALM Pipelines, Solution-Aware Flows, and Environment Variables for Enterprise-Scale Delivery first. You should also have access to at least one Power Platform environment with maker permissions.
Before we talk about governance, let's make sure we're all working from the same understanding of what we're governing.
A connection in Power Automate is a live credential object — it stores authentication tokens or API keys and uses them to communicate with an external system like SharePoint, SQL Server, or Salesforce. When you authenticate with SharePoint inside a flow, you're creating a connection that's tied to your specific user account. That connection lives in a specific environment, and it belongs to you.
A connection reference is a layer of indirection sitting between your flow and the underlying connection. Instead of your flow hardcoding a pointer to "Sarah's SharePoint connection authenticated as sarah@contoso.com," the flow references a named connection reference object — something like cr_sharepoint_orderprocessing — and that connection reference is then separately mapped to an actual live connection. The connection reference is what gets packaged into the solution. The actual connection it points to can change between environments without touching the flow itself.
Think of it like a restaurant menu. The menu lists "house red wine" without specifying the exact bottle. In your dev environment, that might be a $15 bottle of Merlot. In production, it might be the $45 Cab. The menu (your flow) doesn't change. Only what "house red" resolves to changes per environment.
Key insight
Connection references are the mechanism that makes flow deployments portable across environments. Without them, every import would require you to manually edit the flow itself to re-point connectors — which breaks solution-based ALM entirely.
This portability only works if connection references are managed consistently. The moment someone creates an ad-hoc connection reference with a generated name like shared_sharepointonline_1a3f8b2c, gobbles up a credential from their personal account, and ships it to production, the whole model breaks down. That's what this lesson is about preventing.
Let's be concrete about what bad governance actually costs you, because the stakes inform how much rigor to invest.
Broken deployments. When a connection reference is owned by a personal account and that account is disabled or leaves the organization, any flow relying on that connection reference stops working. The failure might not be immediate — cached tokens can persist for hours or days — but it will happen.
Security exposure. As covered in detail in Securing Power Automate Flows in Production: Managing Credentials, Connection References, and Data Loss Prevention Policies, connections carry the full permissions of the authenticating account. A connection reference pointing to a developer's personal admin account in production is a significant blast radius waiting for an incident.
Audit failures. If your organization goes through a SOC 2 audit or an internal IT security review, you'll need to demonstrate that production integrations run under controlled, documented service accounts — not whoever happened to build the flow first.
Deployment paralysis. When nobody knows which connection references belong to which flows, or who's responsible for updating them, promotions get delayed, blocked, or skipped. Teams start working around the problem by building flows outside solutions entirely, which makes governance worse over time.
Warning
The "it works in dev, we'll sort out the connections later" approach almost always means the connections get sorted out in the middle of a production incident. Establish your connection reference standards before your first solution ships to staging.
A good naming convention has to serve two audiences simultaneously: the humans who read it (developers, administrators, auditors) and the tooling that queries it (ALM pipelines, the CoE Toolkit, admin API calls). That means the name should be both human-readable and machine-parseable.
A robust naming pattern for connection references should encode four things:
Here's a naming template that works well in practice:
cr_[connector]_[domain]_[purpose]
And here are real examples following that template:
cr_sharepoint_orderprocessing_documents
cr_sql_inventoryintegration_readonly
cr_salesforce_crmbridge_write
cr_office365_hrworkflows_email
cr_dataverse_supplychain_shared
cr_azureservicebus_eventpipeline_inbound
Let's break down why each segment matters.
cr_ prefix: This makes connection references immediately identifiable in the Power Platform maker UI and in exported solution XML. When you're looking at a list of 40 solution components, you want to see cr_sharepoint_orderprocessing_documents and immediately know what kind of object you're looking at.
Connector segment: Use the connector's common name, not the internal schema name. sharepoint is clearer than sharepointonline. sql is clearer than sql92. Keep it consistent across your team — pick one and document it.
Domain segment: This ties the connection reference to a business capability or team. orderprocessing, hrworkflows, inventoryintegration — these make it clear which team owns this reference and helps avoid creating duplicate connection references across teams.
Purpose segment: This disambiguates when a single connector has multiple references within the same domain. The order processing solution might need two SharePoint connection references: one for reading document libraries and one for writing to a separate restricted site.
Tip
Keep the full name under 50 characters so it doesn't get truncated in admin tool displays. If your domain names get long, abbreviate consistently: orderproc instead of orderprocessing.
In Power Platform, every connection reference has both a display name (what humans see in the maker portal) and an internal name (the schema name baked into the solution XML). You set the schema name at creation time and it cannot be changed afterward.
Use your full naming convention for the schema name. For the display name, you can be a bit more verbose since it doesn't need to be machine-parseable:
| Schema Name | Display Name |
|---|---|
cr_sharepoint_orderproc_docs |
SharePoint – Order Processing – Document Library |
cr_sql_inventory_readonly |
SQL Server – Inventory DB – Read Only Service Account |
cr_salesforce_crmbridge_write |
Salesforce – CRM Bridge – Write Operations |
The display name can include spaces and special characters, so use it to be genuinely descriptive. This is what developers and admins will see when they're troubleshooting at 11pm, so don't waste it.
The single most impactful governance decision you can make around connection references is this: never let a production connection reference point to a connection authenticated as a named individual.
Named individuals leave companies. They change roles. Their passwords expire. Their accounts get locked after a failed login. Any of these events breaks every flow that depends on their connection — often silently, and often at the worst possible time.
A service account is a non-personal identity — typically a mailbox or user account created specifically for automation purposes, not tied to a human being. Common naming conventions include svc-pa-orderproc@contoso.com or automation-crmbridge@contoso.com.
The service account owns the live connections in each environment. The connection reference in each environment then points to a connection authenticated as that service account. When a developer leaves, nothing changes in production because the service account credentials are managed independently.
Note
For connectors that support it, you should go further than service accounts and use managed identities or service principals. This approach is covered thoroughly in Integrating Power Automate with Azure Key Vault and Managed Identities: Complete Guide to Secrets Management and Zero-Trust Authentication. For connectors that don't support managed identity, service accounts are your next best option.
Service account credentials should be owned by a team, not a person. In practice, this usually means:
Document who has access to which service accounts in your team's runbook. This is the kind of information that saves hours during a production incident.
Beyond the live connection, you should also track ownership inside the solution itself. The best place to do this is in the connection reference's description field, which you can set when creating or editing the reference in Power Apps or Power Automate.
A useful description template looks like this:
Owner team: Supply Chain Integration
Service account: svc-pa-supplychain@contoso.com
Created: 2024-03-15
Reviewed: 2024-09-01
Approver: @jane.smith (Platform Admin)
Purpose: Connects to SharePoint Online as service account for supply
chain document automation. Read/Write to SCM-Documents library.
This description travels with the connection reference inside the solution package. When someone imports your solution into a new environment two years from now, they'll know exactly what this reference is for, who approved it, and which service account to authenticate with.
Before you can implement governance going forward, you need to know what state your existing connection references are in. This is the part most teams skip — and then wonder why governance efforts don't stick.
Navigate to Power Apps (make.powerapps.com) and select your environment. Go to Solutions and open the solution you want to audit. In the solution view, filter the component list by type — look for "Connection Reference." For each connection reference you find, check:
For tenant-wide auditing across multiple solutions and environments, the manual portal approach doesn't scale. The CoE (Center of Excellence) Toolkit includes inventory capabilities that pull connection references and their mapped connections across environments. This lets you produce a spreadsheet-style view of every connection reference in your tenant, who authenticated the underlying connection, and when it was last used.
Run this audit before any major release or on a quarterly basis. The output becomes your governance debt backlog — a prioritized list of connection references that need to be remediated (renamed, re-authenticated as service accounts, or documented).
Tip
Sort your audit results by "last flow run date" descending. Fix the connection references used by actively running flows first — those are the ones with the highest blast radius if they fail.
This is the practical output of everything above: a checklist your team runs through every time a solution is promoted between environments. The goal is to catch connection reference problems in staging, not in production.
Before you export or pipeline the solution, verify the following:
Connection Reference Inventory
cr_[connector]_[domain]_[purpose])Dependency Check
Environment Variable Alignment
When you import a solution into a new environment, Power Platform will prompt you to map each connection reference to an existing connection in the target environment, or create a new one.
Connection Mapping
svc-pa-dev@contoso.com, production uses svc-pa-prod@contoso.com)Post-Import Verification
Warning
It's very common for a developer to create a "temporary" connection in the target environment using their own credentials during an urgent deployment. This always becomes permanent. Make re-authenticating with the service account a hard gate before you close the deployment ticket.
This exercise takes about 30-45 minutes and requires access to a Power Platform environment where you have maker permissions.
Objective: Audit and remediate the connection references in an existing solution.
Navigate to your solution. Go to make.powerapps.com, select your environment, click Solutions, and open any solution that contains at least one cloud flow with connector actions.
Filter for connection references. In the solution view, look for a filter or search capability to show only "Connection Reference" component types. List every connection reference you find and its current display name.
Apply the naming standard. For each connection reference, determine what its name should be following the cr_[connector]_[domain]_[purpose] pattern. If the current name already follows your standard, mark it as compliant. If not, note what it should be renamed to. (Note: you cannot rename the schema name after creation — you'd need to create a new connection reference and migrate flows to it. For this exercise, just document what the correct name would be.)
Check the mapped connection. For each connection reference, find out which connection it's currently mapped to and who authenticated it. In the maker portal, go to the connection details and check the "Created by" or authenticating identity. Is it a service account or a personal account?
Update the description. For any connection reference that is missing a description, click into it and add one using the template from this lesson: owner team, service account, created date, and purpose.
Produce your audit output. Create a simple table with columns: Schema Name | Compliant Name? | Owner Account Type | Description Present? | Remediation Action. This is your governance debt register.
Mistake: Creating duplicate connection references for the same connector and purpose. This happens when multiple developers work in the same environment and each creates their own SharePoint connection reference without checking what already exists. The result is two or three cr_sharepoint_something references that all do the same thing, owned by different people. Prevention: before creating any new connection reference, search the solution for existing ones for the same connector. Establish a "one connection reference per connector per distinct purpose" rule.
Mistake: Assuming the connection reference name doesn't matter because it's internal. The schema name appears in solution XML, in pipeline logs, in the CoE Toolkit inventory, and in error messages when flows fail. A name like shared_sharepointonline_1a3f8b2c is actively harmful because it makes debugging impossible at a glance.
Mistake: Treating connection references as per-environment objects. Connection references are solution components — they travel with the solution. The connection they point to is per-environment. This distinction trips up many teams who try to create separate connection references for dev and prod, which is unnecessary and creates twice the maintenance surface.
Troubleshooting: A flow fails after promotion with "Invalid connection" error. This almost always means the connection reference in the target environment is either unmapped or mapped to a connection that's been deleted. Go to the solution in the target environment, find the connection reference, and check its status. If it shows "Not connected," click into it and assign a valid connection. If the mapped connection exists but shows an error, the authenticating account's credentials may have expired — re-authenticate the connection.
Troubleshooting: A pipeline deployment succeeds but flows don't run. Silent failures after deployment often indicate the connection reference imported successfully but the underlying connection hasn't been authenticated. Flows appear healthy but trigger executions immediately fail. Check the flow run history for auth errors, and verify the connection reference's mapped connection is in a "Connected" state.
Connection reference governance isn't glamorous work, but it's the difference between a deployment process that your team trusts and one that everyone dreads. The core disciplines are straightforward: name your connection references consistently and descriptively from the moment you create them, own them with service accounts rather than personal credentials, document the ownership metadata inside the description field, and run a structured checklist every time you promote across environments.
The naming standard (cr_[connector]_[domain]_[purpose]) gives every stakeholder — developers, admins, auditors — a shared vocabulary for talking about these objects. The service account ownership model ensures that personnel changes don't break production. The promotion checklist converts tacit expert knowledge into a repeatable team process.
From here, consider deepening your ALM practices in a few directions. If you're managing multiple layered solutions that share connection references, Structuring Power Automate Solution Layers for Enterprise ALM covers how to organize shared components across solution tiers. For the mechanics of how connection references actually behave during import, update, and flow binding, Implementing Connection References in Power Automate Solutions: Mapping, Sharing, and Updating Connector Credentials Across Environments Without Breaking Deployed Flows is the natural companion to this lesson. And when you're ready to automate the promotion process itself rather than running manual checklists, Building CI/CD for Power Automate with Azure DevOps and the Power Platform Build Tools shows how to encode your governance gates into the pipeline itself.