We have discussed many different ways of leveraging Power Automate flows for your everyday work life. Most of those flows have been very basic, with only a few steps in each of them. What happens when your flows become more complicated, and you want to be able to understand what each step is doing?
Our Senior Developer, Jon, joins us today to show us how to manage our flows, and errors in Power Automate.
What are Scopes?
Scopes are a special kind of action in Power Automate that, unlike other actions, do not perform any actual work. What makes them so special is that they can contain other actions. Almost like a flow within a flow.
This unique trait opens the door to all kinds of interesting behavior in your flow. The two I want to highlight today are:
Organizing your Flow
When creating a complex flow, it doesn’t take long for the sheer number of actions to get out of hand. Rather than scrolling up and down to navigate your Flow (or even worse, side to side!), you can drag-and-drop actions into a scope then click the title to collapse it. The scope and all the actions within will roll up into a single step, hiding sections of the flow you’re not currently working on. This helps clean up your workspace and lets you focus on the actions you’re actively editing.
To make your flow easier to follow, I would also recommend giving the scope a name that describes the behavior of the actions inside. For example, you could name a scope containing several approval actions “Request approval from all stakeholders”.
Improving Error Handling
When designing a flow, a commonly overlooked scenario is what happens when things go wrong. If you weren’t already aware, Power Automate gives us the option to handle errors by running a different set of actions when an action fails by using the “Configure run after” menu. While this is perfect for a simple flow, in more complex flows there may be instances where we want to handle errors from multiple actions or errors from anywhere in the flow.
By placing actions in a scope, we can “catch” any errors that occur within. This is because errors that occur on an action within the scope propagate “up”, causing the scope to fail as well. If we configure a “Send an email” action to run if the scope fails, we now have a flow that notifies you if anything within the scope fails.
Note: If you have a background in programming, you can think of a scope as a function or a method. It’s a way of encapsulating related actions together into a single logical unit. If you don’t have a background in programming, fear not, it will make more sense after we walk through an example.
My Dogecoin Transaction Calculator
Here’s a flow I’ve been working on: it sums my Dogecoin earnings, subtracts my Dogecoin expenses then posts my balance to a Teams channel (much to everyone’s chagrin).
This is not the most complex flow, but it still has a few distinct steps that are a natural fit for scopes. Namely:
- Get my Dogecoin earnings from a SharePoint list then sum them
- Get my Dogecoin expenses from a SharePoint list then sum them
- Calculate the total
- Post to Microsoft Teams
The last two steps are fairly simple, so we’ll leave those alone, but steps 1 and 2 could benefit from a scope. Let’s create a new scope for step 1.
Now, we drag and drop each action into the scope then rename the step (click on the menu "..." then "Rename") in a way that describes the behavior of the actions within. In this case, “Retrieve and sum Dogecoin earnings”.
Note: In a scope, actions are performed sequentially from top to bottom, just like the outer Flow. Be sure to drag-and-drop your actions in the same order they appear outside the scope.
We will repeat this process for Step 2 by dragging and dropping actions followed by renaming the scope. After collapsing our two newly created scopes (by clicking on the title bar of the scope), the resulting flow now looks like this:
This wasn’t a particularly complex flow, but we’ve still reduced the number of actions visible without sacrificing readability. The benefit of this technique becomes even more apparent when editing larger, more complex flows.
Adding Error Handing to Our Dogecoin Calculator
Now that we’ve re-organized our flow it’s time to add some error handling. In its current state, any errors that occur will be recorded in your flow’s run history. You may receive the occasional email from Power Automate notifying you that a flow is failing but you won’t receive any real-time notifications. For some scenarios, that might not be necessary but for mission-critical flows it’s important to be aware of issues as soon as possible.
To start, we add another scope and drag all actions (other than variable initializers) into it.
Next, we’ll add the handler. In our case, this will be an email notification, but this could be anything that fits your organization’s needs; from posting a message in a Teams channel, to creating a new ticket with your support team.
Now we configure this notification to run if the scope fails, or if it times out by clicking the menu "..." and selecting “Configure run after” on the notification action (not the scope). This tells Power Automate to run the action after the previous one fails or times out. Do note, you can add a parallel branch to run actions if the scope succeeds as well.
And finally, the flow has been re-organized for readability and notifies us instantly if something goes wrong. Note the dashed red arrow pointing to our new error notification, this is a nice visual cue that it only runs when the scope errors.
Organize Your Flow with Scopes
As you can see, Scopes are an amazing tool for keeping your flows organized and helping manage and mitigating errors. Thank you again, Jon, for writing this piece and letting users see the behind the scenes, and what we can do here at Bloom Software.
This flow can be used for much more than just Jon telling us how much Dogecoin he has. You could use it for projects, making sure that you stay within budget, with just a few simple tweaks to your flow. If you have a business idea, contact us at Bloom Software, and we can have people like Jon working with you to make your idea a reality.