opinion
Assess, Don't Automate: The Migration ROI Most Tools Get Wrong
"90% automated" is a great pitch and a terrible plan, and the gap between them is where your migration actually lives.
Let’s do some honest arithmetic, because the migration-tooling market runs on a number that doesn’t survive contact with a calculator.
The pitch is always some version of “90% automated, you only handle the last 10%.” It sounds like a 10x productivity win. Ten percent of the work! And if that 10% were a random 10% (evenly distributed, equally hard), it would be. But it isn’t random, and that’s the whole game.
The 10% is not random. It’s the hard 10%.
In a heterogeneous migration, the work splits roughly into two buckets. There’s the mechanical stuff: syntax conversions, type mappings, the ROWNUM-to-LIMIT rewrites. A tool handles those well, and they’re genuinely most of the volume. Then there’s the dangerous stuff: the behavioral traps that compile fine and corrupt data, the magic numbers encoding business rules nobody documented, the stored-procedure logic that needs a human who understands the domain.
Guess which bucket the “10% you handle” is. It’s the dangerous one. Automation is best at the mechanical volume and worst at the judgment-heavy residue, so “90% automated” almost by definition means “we automated the easy 90% and left you the 10% that can actually take down production.” The percentage isn’t lying about the volume. It’s lying about the difficulty distribution, and difficulty is what costs you.
The part the percentage hides
And here’s the killer, subtle enough that smart people miss it. With a black-box automation tool, you don’t just inherit the hard 10%, you inherit the problem of finding it.
The tool hands you a migrated codebase. Most of it is right. Some of it is confidently, fluently wrong — a behavioral trap papered over, a magic number mistranslated, a COALESCE that changed your results. Which parts? The tool doesn’t know, because if it knew it was wrong it wouldn’t have done it. So you can’t trust the 90% it got right more than the 10% it got wrong, because they look identical. A correct rewrite and a plausible-but-wrong rewrite are both just well-formatted code.
Which means you end up re-reviewing everything. The “90% automated” tool didn’t save you the review; it just did the typing and then made you audit a machine’s guesses across the whole codebase, with no map of where the risk is concentrated. That’s not 10% of the work. That’s 100% of the review, on top of the anxiety of not knowing what you’re looking for.
What assessment buys that automation doesn’t
Now flip it. Instead of a tool that does the migration and leaves you to audit it, you use one that assesses it and leaves you to do it — with a map.
The assessment tells you, before you change a line: this is all your SQL including the dynamic and ORM-generated stuff; this ports clean (low risk, move fast); this one’s a behavioral trap (high risk, slow down, test the behavior); and this is the inferred knowledge a human has to confirm. Now your review effort is targeted. You spend your judgment where the risk is and rubber-stamp where it isn’t, because you know which is which.
That’s the ROI that actually compounds. A great assessment makes a developer maybe three times faster — not by doing the work, but by making sure every hour of human attention lands on the part that needs a human. And critically, you stay in control of the dangerous 10% the entire time, instead of discovering it in a finance report after cutover.
So the comparison isn’t “automation saves 90%, assessment saves less.” It’s “automation saves typing and adds an unbounded audit; assessment directs your effort and keeps the risky parts under human control.” For anything where being wrong is expensive — and a database migration is the definition of that — directed human effort beats undirected machine output. Every time.
This is the bet Swordfish makes, and it’s why “we don’t do the migration for you” is a feature, not a gap. The expensive part of a migration was never the typing. It was knowing what’s safe to change and what’ll quietly break, and that’s exactly what an assessment gives you and a black box takes away. Measure the tool by how well it tells you where the danger is, not by how big a number it puts next to “automated.”
Swordfish is an open-source (Apache-2.0) assessment harness for migrating Oracle, MySQL, SQL Server, Sybase, and DB2 to PostgreSQL — it shows you what’s in your codebase, what needs to change, and hands scoped tasks to the copilot you already use. Source: github.com/EnterpriseDB/swordfish-migrations