Automation

Power Automate patterns we reuse on every project

28 Apr 2026 · 2 min read

A Power Automate flow that works in a demo and a flow you can run a business on are different things. The gap is almost entirely boilerplate: the parts that handle the day something goes wrong. These are the patterns we add to nearly every flow we ship.

Wrap the work in a scope with a fallback

Put the real work inside a Scope action. Add a second Scope configured to run only after the first one fails, times out, or is skipped. That second scope posts a message to a Teams channel with the flow name, the run link and the error, and — where it matters — opens a ticket. Nobody finds out about a broken flow from an angry user two days later.

Make retries deliberate

Turn off the default automatic retry on actions where a repeat could double-process something (a payment, an email, a record creation). Where a retry is safe, set an explicit policy with a sensible count and interval. Idempotency first: check whether the work is already done before doing it.

Validate the trigger input early

The first thing a flow should do is check its own input. Is the record in the expected state? Are the required fields present? Is the requester who they say they are? Bounce bad input back to the source with a specific message instead of failing halfway through.

Log every run to a list

Write one row per run to a SharePoint list or Dataverse table: timestamp, trigger, key identifiers, outcome. It costs one action and gives you an audit trail, a way to answer "did it run for this person?", and the raw material for a Power BI view of how the automation is actually performing.

Keep approvals out of the critical path

For anything that needs a human decision, use a first-response approval, capture the outcome, and let the flow resume from where it paused. Route by value or type so routine items don't sit in an executive's inbox.

Put it in a template

Once these are in place, save the flow as a solution and a template. The next automation starts from a known-good baseline instead of a blank canvas — which is most of why our later projects ship faster than the first one.

Have a process like this one?

Tell us the steps. We'll tell you what automating them looks like.

An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin. Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session. Please retry or reload the page.