Skip to main content
Legacy ERP Migration

The Risk Is the Logic Nobody Wrote Down

Moving off a legacy ERP is rarely a data problem. It is the pricing rule somebody coded in 2009, the discount that only applies to three customers, and the report finance relies on that nobody can explain. We recover those rules first, then migrate.

50+ ERP and software projects. Zero failed projects since 2021.

Before You Commit a Date
Illustrative
Questions a legacy move has to answer first
1
Can we get the data out at all?
Proved with a real extract, not assumed
2
What rules are hidden in the old system?
Recovered and documented before rebuild
3
Which history is worth carrying?
Usually far less than people first assume
4
Do both systems agree on real transactions?
Proved during the parallel run
5
What is the way back?
Agreed before the freeze window opens
No date is committed until the first three are answered.
4-9 mo
Typical end to end
Rules
Recovered before anything is rebuilt
1+
Full cycle run in parallel
Archive
Instead of carrying all history
Why It Matters

Legacy systems hold knowledge that left with people

The rules are still running every day. They are just no longer written anywhere, and nobody notices until the new system gives a different answer.

Rule Recovery

We work out what the old system actually does

Where source code is available we read it. Where it is not, we test the system with known inputs and record what comes out, which is slower but works on anything. Then we interview the people who have quietly worked around it for a decade, because the workarounds are themselves part of the real process.

  • Source read where it exists, behaviour tested where it does not.
  • Workarounds captured, not dismissed as bad habits.
  • Every recovered rule documented and confirmed.
Reading legacy system code to recover business rules
Archive, Do Not Carry

Twenty years of history does not belong in the new system

Migrating closed transactions from a decade ago adds cost, extends testing and slows the new system, for data almost nobody queries. A read-only archive keeps that history searchable and reportable for audit or dispute, while the live system holds only what it needs to operate.

  • Open items and balances migrated, closed history archived.
  • Archive remains searchable for audit and disputes.
  • A smaller, faster system to test and to run.
Deciding which historical records to carry forward
What Makes It Hard

The problems specific to legacy systems

These are what separate a legacy migration from a straightforward implementation.

🔒
Closed or unsupported systems
No export, no vendor, no documentation. We find a read route and prove it with a real extract early.
📜
Undocumented business rules
Pricing, discounting and allocation logic that exists only in code, recovered by reading or by testing.
🗑
Data that outgrew its design
Fields reused for other purposes, notes holding structured data, codes that changed meaning mid-decade.
👤
Knowledge that left
The person who understood it has gone, so behaviour has to be reconstructed rather than asked about.
🔗
Hidden dependencies
Spreadsheets, scripts and reports feeding off the old database that nobody remembers building.
⚖
Audit and retention duties
History you are legally required to keep, which shapes the archive rather than the migration.
How It Works

From an opaque system to a cutover with a way back

1
Prove extraction
We pull a real extract early, because everything else depends on it being possible.
2
Recover rules
Code read, behaviour tested and people interviewed, then written up and confirmed.
3
Design and build
The new setup built around the documented rules, with archive scope agreed.
4
Parallel run
Real transactions through both systems, differences investigated on both sides.
5
Cutover
Timed runbook, agreed rollback route, old system to read-only afterwards.
What Is Included

What a legacy migration covers

🔍

Extraction proof

A real sample pulled from the old system early, so feasibility is fact not assumption.

📜

Business rule document

Every recovered rule written in plain language and confirmed with the people who use it.

📋

Dependency register

The spreadsheets, scripts and reports feeding off the old system, so none are orphaned.

📦

Archive strategy

What is carried, what is archived read-only, and how the archive stays searchable.

🔁

Parallel run comparison

Real transactions through both systems, with every difference explained.

📅

Cutover runbook

Timed steps, named owners, checkpoints and the rollback route agreed in advance.

What Changes

What getting off legacy gives you

Documented
Rules that were only in code
Supported
Platform with a future
Lower
Cost of keeping it alive
Searchable
History, without carrying it
Fewer
Single points of knowledge
Possible
Integration and change again
Why Us

Why teams choose TCB Infotech for legacy migration

1
We prove extraction first
No plan is worth anything until a real extract has come out of the old system.
2
Rule recovery is the project
We treat undocumented logic as the main risk, not as a discovery detail.
3
We interview the workarounds
How people cope with the old system tells you what the new one must handle.
4
We argue for archiving
Carrying all history is expensive and rarely useful, and we say so before you pay for it.
5
Differences get investigated
When the systems disagree we find out which is right. The old one often is not.
6
Proven delivery
50+ ERP and software projects across industries, with zero failed projects since 2021.
FAQ

Legacy ERP migration questions

Nobody here knows how the old system calculates things. Is that a problem?
It is the normal starting point and it is the real work of a legacy migration. We recover the rules by reading the code where we can get it, by testing the system with known inputs to see what comes out, and by interviewing the people who have worked around it for years. Those rules get documented before anything is rebuilt.
The vendor is gone or will not help. Can you still get the data out?
Usually. Even closed systems normally allow a database read, a report export or a printable output that can be parsed. It is slower and less pleasant than a supported export, but we have not yet met a system that held its data somewhere entirely unreachable.
What do we do with twenty years of history?
Not migrate it, in almost every case. Loading two decades of closed transactions into a new system adds cost and testing time for data nobody queries. The better answer is a read-only archive: keep the old data searchable and reportable without carrying it into the live system.
Can we keep the old system running as a fallback?
Read-only, yes, and we recommend it for a period. Keeping it writable is a different matter, because two live systems drift apart within days and you end up reconciling forever. The usual pattern is writable during the parallel run, then read-only, then archived.
How long does a legacy migration take?
Typically 4 to 9 months end to end, and the discovery phase is what makes it longer than a standard implementation. Recovering undocumented rules cannot be rushed safely, and every project that has tried has paid for it during the first month-end on the new system.
How do we know the new system produces the same answers?
By running both for at least one full cycle and comparing the outputs, not by reviewing a specification. We take real transactions, put them through both systems and reconcile the results. Where they differ we find out which one is right, because the old system is not always the one that was correct.

Plan Your Move Off the Old System

Book a free consultation. Tell us what you are running and what nobody can explain about it, and we will set out how the rules would be recovered and the data extracted.

Book a Free Consultation →

No commitment. An honest read on what the migration involves.

Legacy Migration Features

What Is Inside a Legacy ERP Migration

The difference between this and a normal implementation is discovery. Here is how we prove the data can come out, recover the rules nobody documented, and decide what history is worth carrying.

Core Features

From proving extraction to retiring the old system safely

Extraction and Dependencies

We prove it can come out before planning anything else

The first piece of work is a real extract from the old system, because a migration plan built on an assumption about data access is worthless. At the same time we map what else reads from that database: the spreadsheets, scripts and reports built over the years that will silently break the day it goes away.

  • A genuine extract taken early, not a promised one.
  • A register of everything feeding off the old system.
  • Extraction route documented so it can be repeated at cutover.
Extracting data from a legacy business system
Business Rule Recovery

Three ways to find out what the system really does

We read the source where it exists. Where it does not, we test the system with known inputs and record the outputs until the behaviour is clear. Then we interview the people who use it, because the workarounds they have built are part of the live process and will otherwise be lost entirely.

  • Source review where code is available.
  • Black-box testing where it is not.
  • User interviews to capture the workarounds.
Recovering undocumented business rules from legacy code
Archive and Cutover

Carry what you need, archive what you must keep

Open items and balances migrate. Closed history goes to a read-only archive that stays searchable for audit and disputes, which keeps the new system small and its testing manageable. The cutover itself is a timed runbook with owners and checkpoints, and the old system drops to read-only rather than being switched off.

  • A clear split between migrated and archived data.
  • Archive that satisfies retention and audit duties.
  • Old system read-only for a defined period after cutover.
Planning a legacy system cutover with a project team
What You Get

Everything the migration delivers

🔍

Extraction feasibility note

The route, a real sample, and whether it can be repeated reliably at cutover.

📜

Business rule document

Every recovered rule in plain language, confirmed by the people who rely on it.

📋

Dependency register

Reports, spreadsheets and scripts reading the old system, each with an owner.

📦

Archive design

What is kept, where, how it is searched, and how long it is retained.

🔁

Parallel run results

Real transactions compared across both systems, with each difference explained.

📅

Cutover runbook

Timed steps, owners, checkpoints and the agreed route back.