AWRA OpsHub Search
AWRA Field 05 screens 11 min read

Four Photos, and the Sixth the Server Would Take

The server will take six photos on an asset movement. The phone stops you at four, compresses every one to 1280 pixels, and shows you the total in kilobytes while you shoot. All three of those are the same decision.

Written by
AWRA OpsHub TeamOperations Insights
Issued
Build
Initial

A signature says a named person accepted custody. It says nothing about the state the thing was in when they did — which is the entire subject of a disputed handover, and the whole of what a damage report is. That is the job a photo does, and on a phone in a loading bay with no signal it turns out to be a storage problem before it is a photography one.

The chain is short and unforgiving. A movement captured offline is one row in the device's key-value store, written whole. A photo has to travel inside that row, as text, because a multipart upload cannot be paused for six hours and replayed on Monday. Text means base64, and base64 costs a third more bytes than the picture it encodes. And a phone camera, left alone, will hand you eight megapixels of loading bay.

Multiply that out honestly and you arrive at the failure worth designing against: a queued handover that cannot be written to disk at all. Not a photo lost — the movement lost, with the photos it was carrying.

The arithmetic that sets the cap

What a full set of evidence costs a queue row

Long edge, after capture 1280 px
JPEG quality 0.6
A typical shot at that setting 150–300 KB
Base64 overhead Plus one third
Photos allowed per movement 4
A full set, encoded, in one row About 1 MB

Against a queue ceiling of six megabytes for everything the device is holding. One movement with a full set of evidence is a sixth of the whole budget — which is why the number is four rather than the six the server would happily accept.

Four rails against the six-megabyte queue ceiling. A single compressed shot is a fraction of a megabyte. Four of them encoded come to about one megabyte, a sixth of the whole budget. The server would accept six, which is why the device cap is lower than the API cap.
One movement with a full set of evidence is a sixth of everything the device may hold. That is the whole argument for four rather than six.

The cap that matters is not the server's

The API takes six. The phone stops at four, and the gap is the point: the constraint being respected is what a queued row can carry without risking the write, not what the endpoint will validate. Four still covers the shots that actually get taken — the damage, the serial plate, the wider context, and one spare.

Compression at 0.6 and 1280 pixels is aggressive by the standards of a photo library and exactly right for the job. This is evidence of a dent or a serial number, not a print. The test is whether a reviewer three weeks later can see what was wrong, and a 1280-pixel frame of a scratched panel answers that question as well as a four-thousand-pixel one, at a twentieth of the cost.

Which movements ask for a photo, and which insist

Movement What the prompt asks for Insisted on?
Check out The condition the asset is leaving in Offered
Check in The condition it came back in Offered
Transfer The condition at handover Offered
Retire The asset being retired, and its serial plate Offered
Mark damaged The damage — this is the record of what was wrong Expected
Mark lost Where it was last seen, or the paperwork about the loss Expected
Verify The asset as you found it Only for high-risk and critical assets
Seven movements. Check out, check in, transfer and retire offer a photo. Damage and loss expect one and warn without it. Verification prompts only for high-risk and critical assets.
Four offer, two expect, one is conditional. The conditional row is the one that keeps the other six worth reading.

That last row is the one with a real argument behind it. Verification is the highest-frequency action in the whole module — a scan resolves straight to it — and a photo prompt on every single one is a prompt people learn to dismiss without reading. Which costs you the prompts that matter, on the damage report three weeks later.

A prompt everybody dismisses is worse than no prompt, because it trains the dismissal.

So verification asks for a photo only where the photo is the whole record: a high-risk or critical asset, where the picture is the only evidence the thing was seen at all. On everything else, verification stays a two-second action, which is the reason people actually do it.

Expected, and never required

Damage and loss are the two where a report with no photo is a claim with nothing behind it. The app says so. It does not refuse the report.

The camera is dead, or the asset is already gone

Record it anyway

A damage report with no photograph is much better than a damage report that was never made because the person could not make one.

You have the shots but no signal

Capture and queue

The photos travel with the movement in the queue and land together. Nothing is uploaded separately and nothing can arrive half-attached.

You are on the fourth photo and want a fifth

Take the best four

The cap is a device constraint rather than an opinion about your evidence. A multi-select that overruns it is told which shots were attached rather than silently truncated.

Watching the number climb

While you are attaching, the app shows the approximate total in kilobytes. That is not a developer detail leaking onto a screen — it is the only warning available before a failure that would otherwise be silent and total.

The alternative is an operator finishing a handover in a bay with no signal, tapping save, and meeting a failed offline write with no explanation and no way to reason about it. A visible number turns that into "these are getting large", which is a thought somebody can act on while there is still something to do about it.

Why photos travel differently from documents

An ordinary attachment — a PDF somebody emailed, a signed delivery note — is moved into app-owned storage and travels as a durable path, because encoding a document into the queue row is precisely the failure the row-size ceiling exists to prevent. Photos are the exception, and only because they are small, compressed hard and capped at four. It is the same rule applied twice, not two different rules.

What a camera permission refusal should do

Backing out of a camera is the most common thing that happens in one, so a cancelled capture is not an error and is not reported as one. A refused permission is different: it is a state the person can change, so it is named, with the reason the app wanted the camera in the first place. And an image the picker hands back with nothing readable in it produces a message rather than a silently attached empty photo — the failure being avoided there is a movement that appears to carry evidence and does not.

Three questions about photo evidence

Can I attach photos to a movement with no signal?

What you will hear

"Photos upload in the background."

How to read it

Ask what happens if the app is closed before that background upload runs. A photo that uploads separately from the movement can arrive without it, or never — the honest design carries both in the same queued record so they land together or not at all.

How many photos, and what is the limit protecting?

What you will hear

A number, with no reason attached.

How to read it

The number matters less than whether anybody knows why it is that number. A cap chosen to protect the offline queue behaves differently from a cap chosen to protect the API, and only one of them prevents you losing a movement in a loading bay.

Does every action prompt for a photo?

What you will hear

"Yes, on everything."

How to read it

That is a system whose prompts get dismissed by reflex within a fortnight. Ask which actions insist, which offer, and what makes the difference — a prompt is only worth having where somebody will read it.

Our take

Photo evidence looks like a feature and behaves like a storage decision. Four photos at 1280 pixels is not a limit on what you may record — it is the number at which a movement captured in a bay with no signal can still be written to the device, which is the only property that matters at the moment it matters. We would rather ship a cap with the arithmetic printed beside it than an unbounded field that works in every demonstration and loses a handover on the day somebody photographs a whole pallet.

More we can add to your workspace

Evidence rules are among the most commissionable things here

What counts as evidence differs by industry more than almost anything else in the product. These are the extensions people ask for, and each has a known shape.

Required photos on chosen actions

Your own list of movements where a photo is mandatory rather than expected, so a regulated handover cannot be recorded without one.

Full-resolution originals kept alongside

The compressed copy travels in the queue and the original uploads when there is a connection, for assets where the detail in the picture is the record.

Stamped capture metadata

Time, place and device burned into the image at capture, for evidence that will be read by somebody outside your organisation.

Short video for a damage report

A few seconds of footage where a still cannot show the fault — with the same honest ceilings, sized for a queue rather than a gallery.

The caps, the compression settings and the action table each live in one place with the reason written beside them, which is what makes moving any of them a defined piece of work.

Tell us what your evidence has to prove

Try it in the worst place you have

Photograph a handover in the bay where nobody has a bar of signal, close the app, and open it again on Monday. What comes back — and whether the photos are still attached to the movement — is the answer.

Talk to us about asset evidence

Frequently asked questions

Why only four photos when the server accepts six?

Because the constraint that decides this is the offline queue, not the API. A movement captured with no signal is stored as a single row on the device, photos included, and the encoding adds a third to their size. Four compressed shots come to roughly a megabyte, against a six-megabyte ceiling for everything queued. Six would work most days and lose a handover on the day somebody photographs a whole pallet.

Are my photos compressed, and does that matter for a damage claim?

They are — 1280 pixels on the long edge at moderate quality, which puts a typical shot between 150 and 300 kilobytes. The test that matters is whether a reviewer weeks later can see the dent or read the serial plate, and at that size they can. Keeping full-resolution originals alongside the compressed copy is a defined piece of commissionable work for assets where the detail itself is the record.

Does verifying an asset ask for a photo every time?

Only for high-risk and critical assets. Verification is the most frequent action in the module — a scan goes straight to it — and prompting on every one produces a prompt people dismiss without reading, which costs you the prompts that matter. Where the asset is high-risk, the photo is the verification, so it is asked for.

Can I file a damage report without a photo?

Yes. Damage and loss are the two actions where a photo is expected, and the app says so, but it is a warning rather than a block. A report with no picture is weaker evidence; a report that was never made because somebody could not make one is no evidence at all.

What happens to the photos if the movement is queued for days?

They travel inside the queued movement itself and land with it, so there is no window where the movement exists on the server without its evidence. Ordinary file attachments work differently — those are moved into the app's own storage and referenced by a durable path, because encoding a PDF into a queue row is the failure the size ceiling exists to prevent.

Why does the app show me the size while I am attaching photos?

So the only warning available arrives while you can still act on it. Without it, the first sign of trouble is a save that fails on a device with no signal and no explanation to offer. Watching the number climb turns a silent total failure into an ordinary decision about which shots to keep.

Help Center

Need a quick answer while you read?

Run inventory, procurement, assets, sales, and field work with approved AWRA guidance for setup, migration, integrations, security, pricing, and support.

Search all approved AWRA public help articles.

Open Help Center