DEV Community

Cover image for How to Track Savings in Power Automate
david wyatt
david wyatt Subscriber

Posted on

How to Track Savings in Power Automate

The simple fact is Power Automate and other automation tools are not free, so the expectation is for a Return on Investment (ROI), but that (until now) has not been easy to calculate in Power Automate.

Microsoft has been listening to this feedback and recently added 'savings' to each flow.

savings

But how do we use it correctly, well that's what this blog is all about.

  1. Prerequisites
  2. Configuration
  3. How to Set up
  4. Viewing Results
  5. Deployments

1. Prerequisites

There are only 2 requirements to use savings:

Your environment/geo has been enabled by Microsoft (hopefully this is a limited time prerequisite).

unavailable

Second your flow has to be solution aware (in a solution), this shouldn't be an issue as all flows really should be in a solution.

2. Configuration

savings config

Your configuration can be set to either be just time or time and cash value.

Enable time-saving rule

Time saving rules work by allocating a time saved to the flow. As a simple example if the flow opened a email, categorised it and then forwarded it on, when a human carried out the action it save 45 seconds, that's our saving.

You have 4 options to configure the saving:

Successful run
The most common I suspect, and just like the example above, if the flow was triggered on email arriving, this would mean each run saved us 45 seconds.

Hour with at least 1 successful run
Records the time if ran once in an hour, but no subsequent runs are logged.

Day with at least 1 successful run
Records the time if ran once in a day, but no subsequent runs are logged.

Week with at least 1 successful run
Records the time if ran once in a week, but no subsequent runs are logged.

The per successful run is a little obvious but what the other 3, well a couple of examples when to use them would be:

Spin up time, in these cases there is a large investment in first run setup, with all future runs neglable (think traveling, logging in, etc).

Compliance, not completing a legal requirement can lead to fines per non compliant time span.

Day rates, some job roles are not hourly paid for per callout, so one call covers all future calls that day.

Enable money-saving rule

Money saving converts time saving to a cash value and follows a similar 2 option approach

Calculate money savings based on hourly rate
A simple per hour cost, which then uses the time saving to calculate the total saving.

Calculate money savings with user-defined baseline
A simpler approach that sets a flat rate per action, it follows the same pattern of:

  • Successful run
  • Hour with at least 1 successful run
  • Day with at least 1 successful run
  • Week with at least 1 successful run

3. How to Set up

So this is the interesting bit, levaging savings might not be as simple as just turning it on, with a redesign of your flows required. These are the most common approaches you can use:

Simple Trigger

This is the easiest and works when one of your flows is triggered by an event directly linked to a piece of value. The example I used about a email being categorised and forwarded is an example of this. This one flow is one to one match to a task, so can be used to generate savings.

simple trigger

Queue

One of the main reasons to use a workqueue was to track value (wanted to know more about them check these blogs out How to use a Workqueue in Power Automate and Power Automate- The Power of a Workqueue), with the key point splitting looped actions into items in a table to trigger a flow. With the table then used to track value.

The queue approach drops the need for another table and just calls another flow during a loop. This is where a rebuild maybe required, moving in loop actions to a childflow.

queue

This does come with the negative of extra api calls, and if you are handling a lot this can be high (as it adds an extra 2 calls per iteration).

Queue Batch

A modification of queue is to batch and send the items in batches of 10 or 100. That way you save the api calls but get a close enough estimation of cost (with the last batch potentially rounding up).

batch queue

Key Flow

When a complex collection of flows another approach is find the key flow that can be used to represent the value. These won't use the calculate per hourly approach, just a set value on either a run or run per timespan.

key flow

4. Viewing Results

We now have everything setup, how do we see the value. Although there is a time and a link in the flow settings screen, it actually takes you to the Automation Center (another cool thing I probably need to blog about).

saving tile

Under the Automation Center you see all flow runs in that environment, any workqueues, and your savings. There are 2 tabs, Time and Money. Both showing timespan and a chart against time.

The quick link in the flow settings does apply a filter for you to see just that flows savings, but it's simple enough to do it yourself.

automation center savings

It also means you can see all savings, or filtered subset.

5. Deployment

So this is a strange one, good news it is solution aware, so when you create a savings rule it will be added to your solution to be deployed. But it also includes all of your old savings.

solution

See when you change the saving settings, you don't actually modify it (same when you cancel it). You update the saving rule in the saving rule table and add a 'ended on' timestamp, and create a new rule. I'm guessing this is so past savings are plotted against the value at the time, which makes sense. But why include them in a solution export?

There is one added benefit, you can't delete old savings rules in the table or flow, but you can do it in the flow (great for when you accidentally create 10 like me 😎).


Adding savings may seem like another admin job, but recognising the value the platform generates is key to ensure future investment within your org.

If the Dataverse table storage and has made you think about bulk updating current flows, it's not quite that simple, as just creating a record in the table doesn't seem to activate it. I'm still working on it so watch this space if I figure it out.


If you would like to get notified every new blog (I also do a few in the Power Platform Community), subscribe below

Top comments (0)