Case Study · Phase 1

Coldstream Distribution Workflow — PowerApps Dispatch Platform

Replacing spreadsheets, WhatsApp, and a depot kiosk with a single Power Platform dispatch surface for a UK chilled-distribution operator — and closing a long-standing audit gap on every in-shift driver and vehicle change.

60%
Faster Shift Handover
90%
Audit Gap Closed
100%
In-Shift Changes Logged
16 Custom
Dataverse Tables
Dispatches, Drivers, Vehicles, Routes, Load Lists, Change Logs +10 more
14 Production
Canvas Screens
Landing, Drivers, Vehicles, Debrief, Attendance, Reports, mobile views
3 Live
Power Automate Flows
Customer Deliveries, Supplier Collections, Loading Violations
5 Distinct
User Roles
Admin · Dispatcher · Loader · Debriefer · Driver

The Challenge

Coldstream was running 80–120 dispatches a day across four depots on a stack of Excel workbooks, a depot kiosk, and a WhatsApp group for last-minute swaps. The system worked — until anything went wrong.

!
Excel + WhatsApp dispatch
Today's board lived in a workbook the dispatcher emailed to themselves at the start of every shift. Changes were announced in a 40-person WhatsApp group.
!
No audit trail for in-shift swaps
When a driver called in sick at 04:30 and someone else covered, the only record was a chat message that scrolled away by 09:00.
!
Paper proofs of delivery
Drivers carried printed run-sheets. Lost or smudged PoDs led to disputed deliveries and chargebacks compliance had no defence against.
!
Half-day Monday reconciliation
The Operations Manager spent every Monday morning reconciling four spreadsheets against the WhatsApp scroll to produce a weekly compliance report.
!
Fragmented Teams notifications
Customer-facing teams found out about delivery issues by phone calls from drivers — never the same channel twice.

Before: The Old Way

📊 dispatch_2026-04-25.xlsx
Route
Driver
Vehicle
Status
101
James M.
AB12 CDE
on route?
103
Tom??
???
❌ Driver swap not reflected · vehicle missing
💬 Coldstream Dispatch · 40 members
04:32 · Tom called in sick, James will cover 103
04:48 · AB12 has fuel issue, swapping to EF77
06:14 · Who took 102? Anyone??
❌ No structured record · scrolled away by Monday

The Solution

A Microsoft Power Platform dispatch surface that lives where the dispatcher already lives — Microsoft 365 — and writes every operational change straight into Dataverse.

Power Apps · Coldstream Distribution Workflow · Play Mode
v1.18
Dispatch Date2026-04-25
DepotDartford
colDispatch:7
Available Drivers
Allocated Drivers
Drivers Mates
Driver Training
Dispatch
Route
Driver
Vehicle
Driver Mate
Status
Action
D-2841
101
James Miller
AB12 CDE
Alex B.
Loading
Open
D-2842
101
Chris O'Neil
EF77 QRS
On Route
Open
D-2843
102
Sarah Chen
XY99 FGH
Loading
Open
D-2844
102
Anna Kowalski
GH33 TUV
Completed
Open
D-2845
103
Omar Hassan
LM55 JKL
Tom D.
Scheduled
Open
D-2846
103
— unassigned —
AB12 CDE
Draft
Open
D-2847
104
Elena Rossi
PQ88 RST
Scheduled
Open
App.OnStart · varCurrentUser.FullName · ClearCollect(colDispatch, …)
Dataverse · Dispatch Tables · 7 records

LandingScreen · galDispatchList · Allocated Drivers tab. Demo data shown — real driver and route identifiers are not displayed.

One command surface

Date · depot · dispatch list · driver / vehicle / mate swap on tap. The dispatcher never leaves this screen during a shift.

Dataverse as record-of-truth

16 custom tables with role-based security. Every Patch from the canvas writes through native createdon / createdby — no shadow audit.

Power Automate fan-out

Three production flows fire Adaptive Cards into Teams when a delivery slips, a collection moves, or a loading violation lands.

Key Features

Dispatch Landing

Date-scoped dispatch gallery with Available Drivers, Allocated Drivers, Drivers Mates, and Driver Training pivots.

Single source of truth for the shift

In-Shift Change Tracking

Every driver / vehicle / second-person swap captured to a Dispatch Change Logs entry with mandatory reason from a fixed enum.

Reason Capture mandatory

Adaptive Cards to Teams

Three Power Automate flows push structured cards into the relevant Operations channel within seconds of a Patch.

3 production flows

Driver / Vehicle / Mate Swap

Single-tap re-assignment from the gallery row. Lookup-backed so swaps stay consistent with the rest of the schema.

No free-text drift

Dataverse-backed Audit

Native createdon and createdby on every change-log row. Compliance can pull a clean report without calling a developer.

Audit-ready by default

Role-aware Screens

Admin, dispatcher, loader, debriefer, and driver each land on a screen tailored to their primary task.

5 roles · one app
The audit surface

In-Shift Change Tracking

The single feature that paid for the engagement. Before this shipped, ~10% of in-shift driver swaps had any documented reason. After, every change carries one — captured before the dispatcher can move on.

The five-step write path

01
Dispatcher taps swap
Single-tap action on the dispatch row in the Allocated Drivers gallery.
02
Patch commits to Dataverse
Dispatch Tables and the local colDispatch update immediately. Dispatch Change Logs record is created (still missing reason).
03
Reason Capture blocks
Mandatory popup appears. Save button stays disabled until a Vehicle or People Reason is picked from a fixed enum.
04
Reason saved · log finalised
Patch updates the Dispatch Change Logs record with the picked reason and optional notes. Audit row is now complete.
05
Teams Adaptive Card fires
Power Automate flow pushes a card to the Operations channel within seconds. Stakeholders see the change without polling the app.
Steps 02 and 03 are atomic — if Reason Capture is dismissed without saving, the change log row stays in a `pending-reason` state and surfaces on the Operations Manager's Monday review.

Step 03 · The blocking popup

The Reason Capture overlay is the one piece of friction we deliberately introduced. It can’t be cancelled. Save stays disabled until the dispatcher selects a reason from the appropriate enum:

  • Vehicle Reason — Breakdown · Accident · VOR · Cleaning Required · Fuel Issue · Flat Tyre · Mechanical · Other
  • People Reason — Sick · No Show · Swap · Injury · Training · Personal · Late Arrival · Disciplinary · Other
  • Optional notes field for free-text context — does not block save.

Native Dataverse createdon and Created By carry the audit metadata. No duplicate text columns, no drift between the audit log and the underlying record.

Reason RequiredDriver change · D-2845
Sick
Called in 04:30 — flu. Replacement assigned from spare drivers list.
Notify Operations Manager via Teams
Save disabled until reason picked

Step 05 · What compliance sees

Any dispatcher or operations manager can open the Change History panel for any dispatch and see the full audit trail — every swap, every reason, every captured-by, sorted DESC by createdon.

Change HistoryDispatch D-2845 · 5 changes captured
When
Change
Reason
Captured by
Today · 04:32
DriverTom DaviesJames Miller
Sick
OPOperations
Today · 04:48
VehicleAB12 CDEEF77 QRS
Fuel Issue
MTM. Thompson
Today · 05:12
Second Person— none —Alex B.
Training
MTM. Thompson
Yesterday · 18:04
DriverPriya NairOmar Hassan
Late Arrival
HOH. O'Connor
Yesterday · 14:50
VehicleGH33 TUVPQ88 RST
VOR
OPOperations
Source: Dispatch Change Logs · createdon · createdby (native Dataverse)Filter(.., 'Dispatch '.DispatchID = ThisItem.DispatchID)

Power Automate · Three Production Flows

Each flow triggers on a specific Dataverse field update and pushes a Teams Adaptive Card into the right Operations channel — within seconds of the Patch.

Customer Deliveries — Notification

on dispatch.deliveryIssues update

Fires when a driver flags a delivery exception (refused, partial, damaged). Operations sees the issue before the driver finishes the route.

Collection Notification v2

on dispatch.supplierCollections update

Tracks supplier-side collections — late, missed, rescheduled — and routes the card to the procurement Teams channel automatically.

Loading Violation Flow

on dispatch.loadingViolation update

When a loader records a violation (overweight, mis-stacked, temperature out-of-range), this flow surfaces it to compliance with full context attached.

Measurable Business Impact

Outcomes from the first nine months in production

60%
Faster Shift Handover
Dispatcher prep down from ~25 min to ~10 min per shift
90%
Audit Gap Closed
In-shift swaps with captured reason up from ~10% to ~95%
100%
Change Logging
Every driver / vehicle / mate change committed to Dataverse
~5h/wk
Manager Time Reclaimed
No more half-day Monday Excel reconciliation

Where the savings showed up

£18K–£25K
Manager Hours Reclaimed
Annualised at salaried rate
£12K–£20K
Disputed PoD Avoidance
Fewer chargebacks · fewer recalls
£8K–£15K
Audit Remediation Avoided
Findings closed at first review

Indicative ranges based on industry benchmarks for a mid-sized UK chilled-distribution operator. Actual savings vary with fleet size and pre-engagement compliance posture.

Built on Microsoft Power Platform

Power Apps Canvas

14-screen canvas app driving the dispatch floor. Custom galleries, role-aware navigation, and a hand-tuned Power Fx state model for the in-shift change loop.

  • Pre-filtered collections (no LookUp in galleries)
  • Concurrent Patch + UpdateContext blocks
  • Role-driven OnVisible routing

Dataverse

16 custom tables with relationship-driven lookups. Native createdon and createdby provide the audit metadata — no duplicate text columns to drift.

  • Lookup-backed change logs (Old / New)
  • Choice columns for fixed reason enums
  • Application-user security roles

Power Automate + Teams

Three Dataverse-triggered flows pushing Adaptive Cards into the right Operations channel. Webhook-based, rate-limited, and idempotent.

  • Adaptive Card payloads
  • Targeted channel routing
  • Retry-on-failure handling
"
The Reason Capture popup felt like friction the first week. By the second week it was the feature my team noticed they couldn’t live without. We finally have a defensible record of every swap — and Monday mornings stopped being an Excel job.
OM
Operations Manager
Coldstream · UK Chilled Distribution

Implementation Timeline

Weeks 1–2

Discovery & Schema

Three weeks shadowing dispatchers, an operations manager, and a route driver. Mapped the full lifecycle and inventoried every existing Excel sheet and Power Automate flow.

Weeks 3–4

Canvas v0.1 — Landing + Drivers

First playable build: dispatch gallery scoped to today, basic driver assignment, no audit yet. Shipped to one dispatcher for early feedback.

Weeks 5–6

Dataverse Cutover

Migrated dispatch records from spreadsheets into 16 custom tables. Deduped 9 months of historical data. Application-user role rolled out to the full team.

Weeks 7–8

Power Automate Flows

Built and tested the three production flows. Targeted Teams channels for Operations, Procurement, and Compliance. Retry handling and idempotency covered.

Weeks 9–10

In-Shift Change Tracking

Designed and shipped the Reason Capture popup, the change-log table, and the Change History panel. The audit gap closed.

Weeks 11–12

Production Rollout

Trained all four depots. Rolled out across the dispatcher pool over three days. Hand-off to the in-house Power Platform admin for ongoing iteration.

Phase 2 — The Rebuild

When PowerApps hit four hard walls, we rebuilt on Next.js + Firebase

Per-user licensing, gallery render performance, no real offline mobile, and an audit trail spread across three places. Read how we kept the same data model and walked Coldstream through a zero-downtime cutover.

Need a Power Platform build like this?

We design and ship Power Apps + Dataverse + Power Automate platforms for dispatch, field operations, and compliance-heavy workflows — with audit baked in from day one.

PowerApps-UAE logo

PowerApps-UAE

Your trusted partner for Microsoft Power Platform development in the UAE. We transform business processes through innovative low-code solutions.

Quick Links

Our Services

  • Canvas Apps Development
  • Model-Driven Apps
  • Power Automate Integration
  • AI CoPilot Enablement
  • SharePoint Integration
  • Custom Connectors

Contact Us

Office
Dubai, United Arab Emirates
Follow Us
© 2026 PowerApps-UAE. All rights reserved.
Microsoft, Power Apps, Power Platform are trademarks of Microsoft Corporation.