Best practices for Production flows

Over the years, we’ve introduced a number of features for ALM (administration & lifecycle management) for flows in Power Automate. But, as they say, the shoemaker’s children always go barefoot. Our team has a number of flows that we rely on internally for day-to-day operations, but they were scattered about with little central management or oversight. It took some changes from our own Power Platform admins (yes, we have admins too!) to encourage us to get our house in order. Here’s what we learned in the process.

Use a production environment

That doesn’t mean stop using Preview! The Preview region is a great place to try new features and hone your skills. But once a team flow reaches a level where people are relying on it, we recommend exporting and importing it into a production environment in order to benefit from the added robustness.

Add redundant owners

If you have a flow which is used by your entire team, you don’t want people calling you up while you’re on vacation if it breaks. Make sure you add a couple co-owners so that they can update the flow in your absence. Who you add depends on how the flow is used. Probably at least your direct manager who can act as your proxy. Maybe your manager’s manager if all of their reports are relying on it. If your group is large enough and/or if you have a lot of team flows, you may consider creating a Security Group of 2-3 people who are willing to set aside a small amount of time to keep an eye on all the team flows. Don’t add your entire org as a co-owner though; that just invites more people to mess up the flow.

Also keep in mind that the access applies to not just the flows themselves but to the connections they use. For example, if your flow sends mail from a shared mailbox, make sure that the co-owners have access to that mailbox in case they need to recreate the connection while you’re gone.

Use solutions

Solutions are a great way to organize flows so that they don’t end up in a big long list. You’ll need to start by adding (or asking your admin to add) a Common Data Service database to your environment. After that’s done, you can go to the Solutions tab to create a new solution for your team, or you can create multiple solutions if you have a lot of flows that you’d like to further organize. There are a number of other benefits too, such as native storage for your data, child flows to reuse functionality, and solution export as backup. There are also some known limitations to solutions though, so this may not apply to all of your flows.

Mark it as prod

Solutions are the recommended way to organize flows. But sometimes your flow can’t go in a solution, or sometimes your solution will get crowded with other drafts and proofs of concept. Either way, we recommend prefixing the names of your production flows with “[PROD]” so that co-owners know to leave it be unless it has issues.

Use shared senders

Sending messages from Power Automate as yourself is fine for smaller cases, but as the process gets more formalized we recommend changing it to a shared sender. This helps the recipients know that it was sent via automation rather than as personal nag. It has the added benefit that people won’t try to bug you directly in response to something that’s meant to be purely informational. For the Microsoft Teams connector, we have a few “Post as the Flow bot” actions that are well suited to this. Outlook has “Send an email from a shared mailbox”, though you’ll need to bring your own mailbox. This advice also applies to updating tickets, creating records, etc., but the specifics will vary by connector.

Add a signature

When using automation to send emails and post messages, you want people to know where it’s coming from. This may seem somewhat contradictory to the last one, but it’s really complementary. The shared mailbox helps the recipient identify that the message is not coming from you directly. But there are cases where the automation might break or start triggering too quickly, in which case you should be easily reachable to correct the problem. This is especially important if the automation works with people outside your org or external systems where the recipient may not be aware of your flow. People may even want to contact you to suggest ways to make your flow even better! We use a signature like “Sent with Power Automate. Contact <your email> with questions.” You may also find it helpful to link to the specific flow so that you can find it quickly if someone forwards you the email.

Opt-in to notifications

Notifications are one of the most popular uses of Power Automate. Maybe you want to get an email when someone uploads a new file to SharePoint or posts a new response in Microsoft Forms. Maybe you want to get a weekly status report of work items in Azure DevOps or charts in Power BI. One of most common types of internal flows was daily or weekly reports of SLAs, errors, and usage metrics from Azure Data Explorer, sent to individuals and teams. These types of flows are great for a number of scenarios. But keep in mind that not everyone is as excited to get yet another email as you are. These often quickly end up as Outlook filters, and suddenly you’re using up flow runs emailing no one. Before adding a distribution list to an automated email, we recommend making sure that the information is either need-to-know, or that the distribution list allows users to individually remove (and add) themselves. If you find yourself checking these metrics on an ad hoc basis rather than as they come in, the data may be better off in a dashboard (e.g. Power BI or Azure DevOps) so that it’s available on demand.

In closing

ALM is a problem that every organization has to deal with, even our own. So hopefully these tips help you more effectively manage your team flows. Any other suggestions from our Power Users out there? Any remaining questions or pain points? Let us know in the comments!