Three vendor-built apps replaced by one Flutter codebase serving 412 technicians across 60 buildings.

A Gulf Facilities Contractor's Field Service Rebuild

The Objective

A UAE facilities contractor ran maintenance across commercial towers, retail malls and two hospitals on three separate apps, each bought from a different vendor over three years, and none of which could share a record with the other two. Technicians carried printed work orders because the field app died the moment a job took them into a basement plant room or a below-ground car park, and supervisors and inspectors were each locked into their own disconnected tool with no shared view of what had been done to any piece of equipment. We rebuilt the entire operation as one offline-first Flutter codebase: a sync queue that holds a full shift of work with no connection at all, QR and NFC asset scanning tied to real maintenance history, and a dispatch console that finally shows supervisors what is happening in the field in real time. Paper left the first vans in six weeks, and it left the last of them as the wider rollout across the estate finished.

Service Tags

Flutter Development Legacy Modernization System Integration UX Design

Industry Tags

Facilities Management Field Services

Tech Stack

Flutter .NET 8 Azure SQL Server SignalR

The Impact

3 → 1
Codebase Consolidation
Three legacy vendor codebases merged into one.
8 hrs
Offline Capacity
Field teams can work offline for up to 8 hours.
27%
Fewer Repeat Visits
Repeat visits dropped due to missing parts.
24 hrs
SLA Reporting
SLA breach reports delivered within 24 hours.
The Client

UAE Facilities Contractor Managing Commercial, Retail and Healthcare Properties

A facilities management contractor maintaining commercial towers, retail properties and two hospitals across the UAE, operating under SLA-bound contracts where response time is a contractual number tied directly to renewal, not just an internal service target. The company had grown through new property management wins arriving faster than its systems could absorb them, and each new contract came with its own inherited software: an Android app from one integrator, an iOS supervisor tool from a second vendor, a Windows tablet app from a third. By the time they came to us, they were paying maintenance fees to three vendors for three systems that had never been built to talk to each other. They wanted a partner who would consolidate what already existed into one system, not sell them a fourth app to run alongside the other three.

The Problem

Technicians Lost Connectivity Underground and Reverted to Paper Work Orders

Every morning the dispatch team printed work orders, because the field app lost its connection the moment a technician went below ground and no one trusted it to hold a job. Supervisors used a different app on iOS, inspectors a Windows tablet app from a third vendor, and none of the three shared an asset record. A technician standing at a chiller had no way to see what had been done to it last quarter unless someone found the file on the shared drive. SLA breaches surfaced in a spreadsheet the following week, which is a week after the client has already noticed.

Our Approach

Offline Capability Was Built Before Any Job Screens

We recognized this pattern from other field-service rebuilds: teams design the job workflow first and treat connectivity as an edge case, and the app then fails in exactly the places the work happens. The local database and the sync queue went in before a single job screen, and the rule we held was that a technician had to complete an entire shift with the radio off and lose nothing.

The asset register came second, ahead of the job workflow. A work order is only useful attached to a piece of equipment with a history, and the history was scattered across three systems and a shared drive. Consolidating it first meant every later screen had something real to read from.

Flutter was the deliberate choice for the client tier, not a default. Technicians carry ruggedized Android handhelds, supervisors run iOS phones, and inspectors work from Windows tablets that were also being replaced. A single Flutter codebase meant one team maintaining one set of business logic across every role and device type, rather than three separate native codebases drifting apart the way the three vendor apps already had.

SLA breach reporting went in last among the data-facing features, tied directly into the same job and asset stream coming from the field rather than built as a separate analytics layer someone would later have to reconcile against the operational system by hand.

The dispatch console came last overall. We knew the sequencing mattered: a console shows you what the field is reporting, and until the field could report reliably from a basement, the console would have been showing dispatchers a prettier version of the same guesswork.

What We Built

One Platform, Every Field Role

One Flutter Codebase Covering Three Field Roles and One Dispatch Console

Technician App
Supervisor App
Inspector Tablet App
Dispatch Web Console
Offline Sync Engine
QR and NFC Asset Scanning
SLA Countdown Tracking
Work Order Export to SAP
How It Was Built

Seven-Month Build with Field Testing Conducted in Live Buildings

Nine people: one PM, one BA, one UX designer, three Flutter engineers, two .NET engineers, one QA engineer and a shared DevOps engineer. Field testing ran in live plant rooms and basement car parks from sprint three onward, which caught a sync conflict pattern that never appeared in the office. Rollout went building by building rather than all at once, starting with two towers where the supervisor was willing to run paper and app in parallel for a fortnight. Those two towers were paperless inside six weeks. Coverage then moved across the rest of the estate over the following months, and the three legacy contracts were retired on their own renewal dates as it did.

Outcome

Every Van Now Runs One Application That Works Without Network Signal

A technician arrives, scans the asset, and reads what was done to it last time whether or not the phone has a bar of signal. Work completed underground syncs when the van reaches the ramp. Supervisors watch SLA countdowns across their buildings instead of assembling them afterwards, and dispatch reassigns a job in the console rather than by phone. Statutory inspections produce a completed certificate from the same app that raises the defect. Adding a building is a data exercise now, and the contract renewals that used to arrive from three vendors arrive from none.

Testimonials

"We had been told twice that offline was solved, and twice it was not. This time somebody sat in a basement with a technician for a day before writing anything. That is the only reason the crews trusted it."

facilities contractor

Operations Director

Ready to Fix Your Field App?

If your field app fails in the places your field team actually works, offline is the first thing to fix and everything else follows it.

Start the conversation