Skip to main content
GullySystem
A practical guide

Why field service apps lose data on weak mobile networks

Ganesh HSStrategy and Technology, GullySystem
Practical advice · 4 min read

In this guide 6 sections
The short answer

Field service apps lose data when they treat the network as always there, and a job card saved without signal is sent once and never retried. A good app saves to the phone first, queues every change, retries with duplicate checks and resolves clashes by a written rule.

The app sends before it saves

Many apps post a job card straight to the server when the technician taps Complete, and in a lift shaft or basement plant room the request simply dies. A green tick may still show.

The technician drives to the next site, the card never reaches the office, and nobody finds out until the customer asks for the service report, sometimes weeks later.

The cure is plain. Write to the local SQLite store on the phone first and send afterwards, because the phone must hold the truth until the server confirms receipt of every record.

  • Job card status changes
  • Meter and gauge readings
  • Parts used from the van stock
  • Time on site and travel time

Photos and signatures fail in their own ways

A photo of a nameplate is large, and a customer signature is a small image that must arrive with the card it approves. On a weak connection the upload stalls halfway through the nameplate photo and the app gives up without telling the technician, who has already driven away.

Some apps send the card without its photo, or the photo alone, leaving the office with an orphan image and no way to tell which job it belongs to.

A sound app compresses the photo on the phone, uploads in pieces, resumes where it stopped and ties every file to a job reference before it leaves the handset.

  • Compress the photo on the phone before upload
  • Resume a stalled upload, do not restart it
  • Attach the job reference to the file itself
  • Keep the signature and its job card in one package

Retries create duplicates

Now the opposite fault. The app sends a card, the server saves it, but the reply is lost in a dead patch, so the phone thinks it failed and sends again. Two reports and two invoices follow.

The fix is an idempotency key: each submission carries a unique identifier made on the phone, so when the server sees the same identifier twice it keeps one copy.

Retries should also back off, because a phone hammering the server every second in poor coverage drains its battery and wins nothing.

Two edits to one job need a rule

A dispatcher reassigns a job while the technician, offline in a basement plant room, closes it, and when the phone reconnects both changes arrive and someone has to win.

Decide the rule before the first release. Technician edits to the work done usually win, dispatcher edits to schedule and assignment usually win, and anything that cannot be settled by field is flagged for review.

A silent last-write-wins rule is the worst choice, because it overwrites a signed completion with a stale status and no one notices until the customer disputes the visit.

  • Field ownership: who may change which field
  • A visible conflict list for the back office
  • A history of every change with time and device
  • A clear message to the technician when a change was rejected

Test it the way a technician works

Do not test on office wifi. Put the phone in aeroplane mode, complete three jobs, add photos, kill the app, restart the handset, then reconnect inside a lift and count what arrives.

Have the vendor demonstrate the sync queue on screen, because technicians should see how many items are waiting rather than guess, and a pending counter ends many arguments.

Before you accept a build, run the same drill with your slowest, oldest handset and write down every item that went missing or doubled.

Offline sync test sheet

One line per test. Lines cover aeroplane mode job close, photo upload on a throttled link, signature capture, app killed mid sync, duplicate submit and dispatcher edit against technician edit. Each line records the handset model, the steps taken, the expected result, the actual result, and a pass or fail mark that the vendor and your team both sign.

Open a blank worksheet to print

Questions owners ask

How do I know if my app is losing jobs?

Compare jobs closed on technician phones with the cards that reached the office, because a gap or two records for one job reference shows the sync is failing.

Does offline mode need a native app?

Not always, since a well built installable web app can queue changes offline, although hardware access, large photo batches and background sync on iPhone can favour a native app.

Can lost photos be recovered?

Sometimes. The photo survives if the app keeps the file on the handset until the server confirms it, and is gone if the app deletes it after a failed send.

What should the technician see on screen?

Show a count of items waiting to send, a clear sent state and a red flag for anything rejected, because silent success messages are what hide this problem.

Browse all guidesBack to top ↑
Next step

Have a specific situation to work through?

This article covers the general case. Tell us what you’re actually dealing with and we’ll respond directly.

Share Your Requirements