Harraz Mohd Reza

Case 01 · Power Automate · Cloud flow

Conditional Notification & Routing Automation

An event-driven flow that reads every new record, filters out the ones that don’t need action, and sends each notification to the right reviewer — with a fallback so nothing is ever dropped silently.

Role
Solution designer & builder
Platform
Microsoft Power Automate
Trigger
SharePoint item created
Type
Automated cloud flow
Try the router
change a value → watch where it goes
Incoming record
Flow evaluation
route
Destinations
Reviewer A
reviewer.a@example.com
ALPHA · CHARLIE
FOXTROT · VICTOR
Reviewer B
reviewer.b@example.com
HOTEL · LIMA
WHISKEY · ZULU
Both
a@ + b@example.com
any unrecognized
ending — manual review
Logic mirrors the live flow exactly. Sample data; all addresses fictional.
0
Manual triage steps
3
Routing paths
100%
Records covered
<1s
To route a record

The problem

A person was the routing rule.

New records landed in a shared tracking list all day. Each one needed someone to read it, decide who owned it, and forward the details by hand.

It worked until it didn’t — and it didn’t scale. Adding a second reviewer turned a fuzzy mental rulebook into something genuinely easy to get wrong.

  • Every new record waited on a human before anyone was notified.
  • Triage was slow, easy to forget, and simple to get wrong.
  • Records occasionally reached the wrong reviewer — or no one at all.
  • Growing the team made the manual routing rules harder to keep straight.

The solution

One flow, five moves.

A single event-driven cloud flow replaces the entire manual triage step — running the moment a record appears, every time, without anyone watching.

01 — Trigger

Catch the new record

Fires automatically the moment an item is created in the SharePoint list.

02 — Validate

Filter out the noise

Records with a non-actionable status — Denied, Closed/Lost, Not Applicable, Competition — are ignored.

03 — Evaluate

Read the routing code

Extracts only the final segment of a code like REC-4014XX-ABCDEFG-ALPHA and normalizes its casing.

04 — Route

Match it to a reviewer

Sends to Reviewer A or Reviewer B by the code’s ending — or to both when the ending isn’t recognized.

05 — Send

Deliver a formatted notification

Emails the record’s key fields and a direct link back to the record, so the reviewer can act in one click.

Key technique

Extracting the routing code.

Instead of a brittle “ends with” check that false-matches on text earlier in the code, the flow isolates the exact final segment in a single expression.

toUpper(last(split(triggerBody()?['recordCode'], '-')))
split( … , '-')

Breaks the code into its hyphen-delimited parts.

last( … )

Grabs only the final segment — the routing key.

toUpper( … )

Makes the match case-insensitive and resilient.

Logic

How a record finds its reviewer.

New record created in list
DecisionIs the status non-actionable?
Yes
StopNo action taken
No
DecisionEnding in ALPHA · CHARLIE · FOXTROT · VICTOR?
Yes
RouteEmail Reviewer A
No
DecisionEnding in HOTEL · LIMA · WHISKEY · ZULU?
Yes
RouteEmail Reviewer B
No
FallbackEmail both reviewers

Outcome & impact

What changed.

Triage removed

The daily manual review-and-forward step is gone, freeing up coordinator time.

Right reviewer, reliably

Records consistently reach their owner instead of depending on someone remembering the rule.

Nothing slips through

Unrecognized codes are escalated to everyone rather than dropped silently.

Easy to grow

Adding a reviewer or a new code is a small, contained edit — not a rewrite.

Skills demonstrated

What this shows.

Cloud flow design — triggers, conditions, nested branching Expression functions — split · last · toUpper Designing for edge cases & graceful fallbacks Turning informal business rules into reliable logic

Notification

The email it sends.

Want this pattern in your workflows?

I adapt conditional routing and notification automations to the way your team already works. Tell me where the manual handoffs are.