Skip to content

Software Modernisation

Old software is usually old because it works. It carries rules that nobody wrote down: the rounding on a tax line, the customer who is always invoiced in a different currency. A rewrite from a blank page throws those rules away and rediscovers them, one angry phone call at a time.

We modernise in slices. The old system stays in service while new parts take over one function after another. Staff see small changes. The business never has a weekend where everything must work at once.

Isometric illustration of blueprint sheets, building blocks assembling into an application and a set square
Symptoms

How to tell a system is due

Age alone is not a reason. These are.

The runtime is out of support

PHP 5 or 7, Python 2, .NET Framework on an old Windows Server, AngularJS. Security fixes have stopped and hosting providers are dropping them.

Releases are rare and frightening

Deployment is a manual checklist carried out late at night. Each change breaks something unrelated.

Logic lives in the database

Hundreds of stored procedures and triggers hold the business rules, with no tests and no version history.

Nobody can be hired for it

The language or framework has fallen out of use and the one person who knows it is planning to retire.

It cannot talk to anything

No API. Other systems read its tables directly or exchange files by FTP on a timer.

It runs on one machine

A single server in a cupboard, or a desktop database shared over the office network.

Strangler approach

Replacing a system while it runs

The name comes from a fig that grows around a tree until it stands on its own. In software it works like this.

  1. Put a routing layer in front

    A reverse proxy or gateway receives every request. At first it passes all of them to the old application unchanged.

  2. Pin down current behaviour

    Before touching a function we record what it does today with characterisation tests: given this input, the old code returns that output, oddities included.

  3. Pick a thin first slice

    Something with clear edges and low risk, such as a report or a read-only screen. It proves the route, the deployment and the sign-in hand-off.

  4. Build the slice and redirect

    The new code goes live behind the router for that one path. If it misbehaves, the route is pointed back within minutes.

  5. Keep the data in step

    While both sides are alive they must agree. We choose per slice between a shared database, change-data capture, or writing to both.

  6. Repeat, then retire

    Slice by slice the old application handles less. When its traffic reaches zero it is archived and the server is switched off.

Data migration

Moving the data

Code can be redeployed. Data that was converted badly is much harder to repair, so this part gets its own plan.

  1. Profile

    Row counts, empty fields, duplicates, dates stored as text, character encoding. We report what is there before designing anything.

  2. Map

    A field-by-field document: source, target, transformation and the rule for records that do not fit.

  3. Rehearse

    Full runs against a copy of production, at least twice, timed from start to finish.

  4. Reconcile

    Totals, counts and sampled records compared between old and new. Your staff check the accounts they know best.

  5. Cut over

    A planned window, a written checklist and a named decision point at which we either proceed or roll back.

  6. Keep the archive

    The old database is kept read-only for the period your accountant or regulator requires.

Outputs

Documents the assessment produces

You can take these to any supplier. They are useful even if you decide to leave the system alone for another year.

  • An inventory of modules, scheduled jobs and integrations
  • A map of which tables each module reads and writes
  • Known security exposures, ranked
  • Dependencies that are out of support
  • A proposed order of slices with reasons
  • Data quality findings
  • A cost range for the first three slices
  • Risks we could not assess and why
Judgement

Modernise, rewrite or leave alone?

Incremental modernisation suits

  • Systems the business depends on every working day.
  • Code that has gathered undocumented rules over a long life.
  • Organisations that cannot stop trading for a migration weekend.
  • Budgets released in stages rather than as one sum.

Another route is better when

  • The application is small enough to rebuild in a few weeks.
  • A commercial product now does the same job. Migrate to it instead.
  • The system is stable, isolated from the internet and due for retirement anyway.
  • The source code is lost. That is reverse engineering, a different and costlier job.
Questions

Common concerns

How long will the whole thing take?

We will not give a date for the whole programme before the assessment, and after it we give ranges per slice. The point of the method is that value arrives with each slice, not only at the end.

Will users need retraining?

A little at a time. Screens change one area at a time, and we write short notes for each release.

Can you work without documentation?

Yes, that is the usual situation. We read the code, query the database and interview the people who use it.

What does it cost?

Work is charged at the published hourly rates for the roles involved. The assessment gives a cost range for the first slices so you can decide with numbers in front of you.

Will there be downtime?

Individual slices are switched at the router, normally without interruption. The final data cut-over may need a short planned window, agreed with you in advance.

Next step

Describe what the system does and what it runs on

Language, database, rough age and what worries you most. If you do not know the technical details, say so and we will find out together. You will hear from us within one business day.

Tell us about the old system

Goes straight to our team on WhatsApp and email. We reply within one business day.

Sahab AI OS