2026-10-23 · migrations, tooling, reliability

From manual migrations to self-serve tooling

How we turned engineer-run ScriptSure migrations into an operational capability: 33 migrations, zero reported incidents.

Every migration used to need an engineer: elevated permissions, direct access to sensitive patient data, careful manual steps, and a customer holding their breath through a freeze window. It worked, but it did not scale, and every run carried the same risks.

The constraint that shaped the design

The non-negotiable was privacy. Whoever ran a migration should not need elevated production permissions or direct access to patient data. That single constraint pushed us away from “better runbooks” toward real tooling: a guided flow a non-technical teammate could execute independently.

What we built

Working from an initial approach developed with a teammate, I designed and led the automation initiative around three properties:

The outcome

At the time of my assessment, the tooling and process had supported 33 migrations with zero reported incidents, all completed inside promised customer freeze windows. Those are historical snapshots, not guarantees, but they describe the shape of the change: toil converted into capability.

The lesson I keep

The pattern repeats everywhere: an incident becomes a CI check, a manual procedure becomes a tool, an unknown becomes instrumentation. Fix the immediate problem, then build the safeguard so the class of problem stops recurring. That is what reliability engineering means to me in practice.

Metrics above are snapshots at the time of assessment.

Blog