Skip to content
Silver Shark Sdn Bhd
Legacy modernisation8 min read

When Should You Modernize a Legacy Business System?

Age alone is not a reason to replace a system. Plenty of software written fifteen years ago still does its job perfectly well. The question is whether it has become a constraint on the business — and there are specific signs that tell you it has.

Published

Most established Malaysian companies have one: an application that still runs an important part of the business, that only works properly on one machine, that was written by someone who has since left, and that everyone has agreed not to touch. It is usually stable. That is exactly why nothing gets done about it.

The useful question is not "is this old" but "what can we no longer do because of this".

The signals that matter

One person is the single point of failure

If one employee or one external contractor is the only person who can change or restore the system, you are carrying a business continuity risk that has nothing to do with technology. This is the most common and most underrated signal.

It is out of support

An unsupported operating system, database or framework stops receiving security patches. If the system holds customer or employee data, that is a compliance exposure under the PDPA as well as a technical one.

It blocks integration

When the answer to "can we connect this to our e-commerce platform" is always no, the legacy system has started to constrain commercial decisions. That is a business cost, even though it appears as an IT limitation.

It cannot be used where the work happens

Tied to one office PC, unusable from a phone, no remote access. Any of these means the software is shaping how and where your people work rather than supporting it.

Every change is disproportionate

A small change taking weeks and breaking something unrelated indicates the codebase has no test coverage and heavy internal coupling. The cost of every future change is now permanently inflated.

Four options, not one

Replacement is the option people jump to and often the most expensive. There are four, and the right answer is frequently one of the cheaper ones.

OptionWhat it involvesWhen it fits
Leave it, reduce the riskSupported infrastructure, tested backups, documentation, a second person trainedSystem works, meets business needs, risk is operational rather than functional
Wrap itBuild an API or integration layer around the existing system without changing itCore function is fine, but it needs to connect to modern systems
Replace in stagesBuild the new system module by module, run both, migrate progressivelyThe system constrains the business and must eventually go
Replace wholesaleBuild the replacement in full, migrate, cut overRarely the right answer — only for small, well-understood systems

Wrapping is underused. An adapter that exposes a modern API over an old application can unlock integration and automation for a fraction of the cost of replacement, and it buys years in which to plan a proper migration.

Why big-bang replacements fail

The pattern is familiar. Eighteen months of building against a specification. A cutover weekend. On Monday the business discovers the twenty undocumented behaviours that mattered — the exception for one large customer, the report the auditor requires, the field that was repurposed years ago to mean something else.

The root cause is that a legacy system’s real specification is not in any document. It is in the code and in the habits of the people who use it. Any approach that assumes otherwise is starting from a false premise.

Replacing in stages

The alternative is to let the new system take over one function at a time while the old one keeps running — commonly called the strangler pattern, because the new system gradually surrounds the old one until nothing is left inside.

  1. 01Assess: read the code and the database, watch how it is used, and document what it actually does — including the behaviour nobody wrote down.
  2. 02Choose a first slice: a self-contained function with a clear boundary. Reporting is often a good candidate because it is read-only and low risk.
  3. 03Build and integrate: the new module reads from or writes to the legacy database or files, so both systems stay consistent while the old one is still in use.
  4. 04Move users across for that function only, and keep the ability to fall back.
  5. 05Repeat, taking a larger slice each time as confidence and understanding grow.
  6. 06Retire the legacy system once it has nothing left to do.

Each slice is small enough to reverse. That property is what makes the approach safe, and it is worth the additional integration effort it requires.

Making the case internally

Modernisation is hard to justify because the system still works. The case that tends to succeed has three parts, none of which is about technology.

  • Risk: what a failure would cost per day, and how long recovery would take today.
  • Constraint: the specific commercial things you cannot do — integrate a sales channel, automate a process, let staff work remotely.
  • Drag: the recurring cost of the workarounds that exist only because the system cannot do something.

Presented that way, the decision stops being an IT preference and becomes an ordinary business one — which is what it always was.

From reading to doing

Recognise your business in this?

If something here described your operation a little too accurately, that is usually a sign there is a straightforward first project available. Tell us which part, and we will tell you what it would take.