28 Jul 2026 · 9 min read

You don't have a backup problem. You have a reproducibility problem.

scada · ignition · architecture · automation

Here is a question worth being honest about. Pick your most remote site — the one with the pump station and the panel PC that has been running since handover. Tonight, it burns.

Could you rebuild it exactly?

Not "could you get something running by Thursday". Could you produce a gateway that is provably identical to the one you lost — same tags, same names, same scaling, same alarm limits — and could you demonstrate that it matches, rather than assert it?

Almost nobody can. The reason is not negligence, because almost everybody has a backup. The reason is that a backup and a rebuild are different things, and our industry has spent twenty years treating them as the same thing.

Restore is not rebuild

Engineering has always understood reproducibility. A drawing package is reproducible: hand the P&ID, the loop sheets and the panel schedule to a contractor who has never seen your plant, and they build the same panel. Not a similar panel. The same one. If theirs differs from yours, one of you is wrong, and the drawings settle which.

That is what reproducibility means, and it has nothing to do with IT. The definition exists separately from the instance, and the instance can be regenerated from it.

A gateway backup is not that. It is a photocopy of one instance at one moment. It cannot tell you what the site was supposed to be, only what it happened to look like at 2am on Sunday — including the change somebody made on Friday afternoon and never wrote down, and excluding the one that went through change control properly on Monday morning.

So when you restore it you do not get a correct site. You get a plausible one, and then you spend the afternoon working out the difference between plausible and correct while the plant waits.

THE SITE PC HAS DIED · TWO WAYS BACK

RESTORE FROM A BACKUP

  1. 1.Find the most recent .gwbk for this site
  2. 2.Work out how old it is
  3. 3.Restore it onto the replacement machine
  4. 4.Discover the three changes made since
  5. 5.Re-apply them from memory or from email
  6. 6.Hope nothing else drifted

hoursand you are never quite sure

REGENERATE FROM THE DEFINITION

  1. 1.Apply the definition
  2. 2.Wait

There is no “how old is this backup” question, because the definition is the same one every other site is running.

60 smeasured, tags intact

Measured on the right: gateway and its storage both destroyed, rebuilt from the definition, 31 of 31 tag resources present. Nothing was restored, because there was nothing to restore from.

The right-hand column is not aspirational — I measured it, and I will come back to how. What matters first is why the left-hand column is the normal state of affairs, because it is not laziness. It is a structural consequence of where the definition lives.

Everything that annoys you is the same disease

Once you go looking for the missing definition, the symptoms stop looking like separate problems.

Your sites no longer agree with each other.

THE SAME SIGNAL, THREE SITES, NOBODY WRONG

SITE 1commissioned 2019P1_Runoriginal contractor
SITE 2commissioned 2021Pump1_Runningdifferent integrator
SITE 3upgraded 2023PMP_01_RUNin-house, new standard

The fleet report that joins all three carries a hand-written mapping table in the middle of it. One person understands that table. It is not in the change-control system, because it is not a change — it is a translation.

Nobody made a mistake here. Each site was built correctly, by a competent person, to the convention that existed on the day. Drift is not a discipline problem — it is what happens when the definition lives in ten places instead of one.

Site 1 was commissioned by the original contractor to their house style. Site 2 went to a different integrator because procurement went to tender. Site 3 was upgraded in-house after somebody finally wrote a naming standard, which the first two predate. Every decision was reasonable on the day it was made. The result is an estate that cannot be queried without a translation layer nobody controls.

That is what happens when "what a pump station is" lives in ten places with no mechanism for disagreeing out loud. It is not a discipline problem and you cannot train it away.

A trivial change costs three days.

ONE NEW TAG ON EVERY PUMP · TEN SITES

BY HAND, SITE BY SITE

Read the change request, agree the tag name1h
Open site 1 in the Designer, add the tag, test2h
Repeat for sites 2 – 1018h
Find the two sites where someone renamed things3h
Update the report that joins all ten2h
Write down what you did, somewhere1h

27 hroughly three working days

FROM A DEFINITION

- name: BearingTempC
  dataType: Double
  engUnit: degC

Edit the pump definition once. Every site that owns a pump agrees with it.

98 smeasured, 36 tags, 9 sites

The hand-built column is a sympathetic estimate: it assumes nobody is on leave, every site is reachable, and no two sites disagree. The right-hand column is measured, on eleven real gateways.

Almost none of that is engineering. It is transcription — one decision, typed carefully into ten places by someone senior enough to be trusted with a Designer session on a live plant. And the line that turns one day into three sits in the middle: find the two sites where someone renamed things. You are paying for the drift, in hours, every time you touch the fleet.

Handover is an act of faith.

THE ENGINEER WHO BUILT SITE 3 HAS LEFT

WHAT THEY HAND OVER TODAY

  • ·A gateway backup, of uncertain age
  • ·A folder of screenshots
  • ·A spreadsheet mapping tag names between sites
  • ·“Ask Dave, he did the Hemel one”
  • ·Whatever is still in their head on their last Friday

Onboarding cost: months. Confidence: never quite.

WHAT THEY HAND OVER INSTEAD

  • ·One repository
  • ·Eleven site files a new starter can read in an hour
  • ·Six equipment definitions — the house standard, enforced
  • ·A history of every change, who made it and why
  • ·The ability to rebuild any site and check it matches

Onboarding cost: an afternoon of reading.

The second column is not better documentation. It is the same information, in the one place that cannot go stale — because it is what the sites are actually built from.

Documentation rots because it is a parallel description of the truth maintained by goodwill, and goodwill loses to a busy quarter every time. Nothing forces it to stay true. When the definition is the thing sites are built from, it cannot drift from them — if it were wrong, the sites would be wrong, and somebody would be shouting by Wednesday.

Three complaints, one cause. None of them get fixed by better backups, more process, or a stricter naming standard, because none of them are caused by the absence of those things.

The definition is smaller than you think

The objection I would raise, in your position, is that writing down a definition for an entire estate sounds like a project nobody will fund.

It is much smaller than it looks, and this is the number that convinced me.

HOW BIG THE DEFINITION ACTUALLY IS

TAGS IN THE FLEET

364

Each square is a tag somebody would otherwise have created, named and bound by hand. The dark ones are the only distinct decisions in the set.

ACTUAL DISTINCT DEFINITIONS

26

pump7 points
chiller6 points
feeder4 points
tank2 points
flowmeter2 points
+ site metadata5 points

Write these 26 down and the other 338 tags are generated, identically, at every site that owns the equipment.

Every tag here is real and has to work. But the estate is described by twenty-six points, not three hundred and sixty-four objects — the rest is those same points repeated with a different prefix in front. Writing down twenty-six things is an afternoon. That is the whole barrier to entry.

Ten sites: pump stations, a reservoir, a treatment works, two district cooling plants. Between them, 364 tags. Every one real, every one has to be right, every one will page somebody at 3am if it is wrong.

The number of distinct decisions in that estate is twenty-six.

Seven points describe a pump. Six describe a chiller. Four describe an LV feeder. That is not a criticism of anyone's work — pumps genuinely are alike, which is why they are pumps. But it means the thing you would have to write down is twenty-six points, not three hundred and sixty-four objects. That is an afternoon, not a project.

The reason it currently feels like three hundred and sixty-four objects is that the tooling makes you express the similarity by repeating yourself, and repetition performed by humans across years and contractors does not stay identical. It stays approximately identical. Which is the same disease again.

So I built it, to find out what breaks

Arguing this from a whiteboard is easy, so I didn't. I built a small water utility for real — one head-office gateway and ten site gateways, running on a cluster, every one generated from a definition.

Ignition 8.3 is what makes this possible. Gateway configuration moved out of an internal database and onto the filesystem as plain JSON: not only project resources, but device connections, tag providers, tags, OPC connections, security settings. If all of that is text, a site can have a definition again. I argued the case for this in the abstract before building anything; this is where it meets a keyboard.

The entire description of a site is this:

site: edge-04
name: Manchester Treatment Works
code: MAN
role: edge
region: UK North
equipment:
  - { type: pump, count: 6, prefix: P }
  - { type: feeder, count: 2, prefix: FDR }
  - { type: flowmeter, count: 3, prefix: FM }

Eleven of those, plus six equipment definitions, generate 630 Ignition configuration resources: every tag, every folder, each site's device with its full point list, head office's connection to all ten.

ONE DEFINITION, ELEVEN GATEWAYS

THE DEFINITION11 site files6 equipment typesreviewed as a diffRENDER630 resourcessame in, same outapplyTHE FLEETHEADOFFICELDN34NWK23RTM24MAN56BRS16HAM25ANR18LDS36DXB54SIN78each number is thatsite's own tag count134 s from nothing
The arrow only ever points one way. A gateway is an output, not a place where decisions are stored — which is the entire difference between this and a folder of gateway backups.

Two properties do the work. The arrow only points one way — a gateway is an output, not a place where decisions are stored, exactly as the panel was an output of the drawings. And the generator never touches a gateway. It reads files and writes files, so the same input always produces the same bytes, and that output can be committed and reviewed. A tag rename across ten sites becomes a diff a second engineer reads over coffee, rather than a thing Dave is careful about.

The test that matters

I deleted a site's gateway and its storage — the panel PC dying with an unreadable disk, nothing local to recover.

Then I applied the definition again.

The site was fully back in 60 seconds, with all 31 of its tag resources present and its device running. Nothing was restored, because no backup was involved at any point. It was not an approximation of the site. It was the site, generated from the same definition every other station is running from.

MEASURED ON ELEVEN REAL GATEWAYS · SECONDS

Gateway process killed37s

self-heals, no human

Site + its storage destroyed60s

rebuilt from the definition

New tag on every pump, 9 sites98s

36 tags added

Whole fleet built from nothing134s

11 gateways

For scale: the shortest bar here is a site coming back on its own, and the longest is building the entire eleven-gateway estate from an empty machine. The manual equivalent of that last one is a week with a laptop in a van.

The maintenance numbers fall out of the same property rather than being a separate benefit. Adding bearing temperature to every pump — the three-day job from earlier — took 98 seconds and landed 36 tags across nine sites, with the arithmetic exactly right per site. London gained four because London has four pumps. Head office gained none because it has no pumps. Nobody visited a site, and nobody could have missed one, because missing one is not a thing that can happen when there is a single definition.

The first bar is the one I did not expect to care about. Kill a site gateway outright and it is back on its own in 37 seconds, with nobody involved. That is the standby-server dance OT has done by hand, badly, for twenty years.

What it costs to run

Before somebody tells you a fleet of gateways needs a server room:

WHAT A SITE GATEWAY ACTUALLY COSTS

240 MB

of persistent state per gateway

235 MB of it is jar cache

390 MiB

of memory per site gateway

at a 512 MB heap

630

configuration resources generated

from 17 short files

0

gateway backups taken

the definition is the backup

Worth knowing before anyone tells you a fleet of gateways needs a server room. Ten sites and a head office ran inside 5 GB of memory and 11 GB of disk on one modest machine.

Ten sites and a head office ran inside about 5 GB of memory and 11 GB of disk on one modest machine. The constraint here is not hardware, and has not been for years.

Where reproducibility stops

Head office should aggregate the ten sites, and this is the part that did not work.

THE BOUNDARY

GENERATES FROM A FILE

  • Device connections and their whole point list
  • Tag providers, tag groups, every tag
  • OPC connections to each remote site
  • Security settings and gateway identity
  • Which sites exist at all

NEEDS A HUMAN, ONCE PER SITE

  • Certificate trust between gateways
  • The API token CI would use to trigger a reload

Each gateway signs its own certificate the first time it starts. Head office cannot be told in advance to trust ten certificates that do not exist yet.

The line does not fall where a DevOps write-up would put it. Everything describing the plant generates cleanly. What refuses is the part that decides who is allowed to talk to whom — and on reflection that is the right thing to be stubborn.

The ten connections generated perfectly: present, enabled, correctly described, pointed at the right addresses, and head office could discover each site's server on demand. Every one sat in FAULTED, because each gateway signs its own certificate the first time it starts, and head office cannot be told in advance to trust ten certificates that do not yet exist. Out of the box, clearing that is a person answering a yes/no dialog, once per site.

I am not going to claim this is unautomatable, because I have not proven it. A two-phase rollout — stand the sites up, collect their certificates, distribute them, connect — is the obvious approach and is how the problem gets solved elsewhere. What I can say is that it does not fall out of the same pass as everything else, and that anybody promising a fully hands-off multi-site rollout has probably not tried one.

On reflection that is the right place for friction to be. Everything describing the plant reproduced cleanly. What refused was the part that decides who is allowed to talk to whom. I would be more worried if handing one machine authority over ten plants had been a single line of configuration.

The test to run on Monday

You are not going to rebuild your estate this quarter, and you shouldn't.

But there is a cheap and slightly uncomfortable experiment available. Take your most recent backup of one site, restore it onto a spare machine, and compare it with the live one. Not a spot check — a real comparison of tags, scaling and alarm limits.

Whatever you find is your actual recovery position. Most people find somewhere between three and a dozen differences they cannot account for, and that number is the honest measure of how reproducible your estate is today. It is also a far better thing to take into a management conversation than any argument about tooling.

Then pick the thing you own the most copies of — a pump, a booster set, an ETS skid — and write down what it is. Once. Not as a Word document; as the thing the next site's tags get generated from. You will find out very quickly whether your sites agree about what a pump is, and that answer is worth having even if you never generate anything from it.

The rebuild was always the goal. The backup was only ever a substitute for one.

Keep reading