JKODEZ_
// modernisation

Modernising an old application: how to do it safely

How I work out an application nobody understands any more, how the migration proceeds, and how we make sure the new one does the same things as the old one.

Contents01 Who this is for02 Why now03 Four possible outcomes04 Stage by stage05 Assessment without documentation06 Verifying results07 What kind of applications08 AI and your data09 One-person supplier10 FAQ
FOR THE BUSINESS OWNER

One important application, one old machine

The application has done its job for 15–25 years. Everyone knows that one day it will not start. You do not have to specify anything again, the first step is fixed-price, and not everything always needs rebuilding.

FOR THE CTO / IT MANAGER

A dozen applications, no overall picture

Custom tools from the early 2000s are blocking a server upgrade or an ERP change. We start with a survey that ranks them by risk and cost.

Why keeping an old application on life support is not enough

"It still works" is true right up to the day it does not. Typical situations after which there is little time left:

  • The machine dies, or the Windows version it runs on stops receiving security updates. Windows 10 support ended in October 2025 and Windows Server 2016 support ends in January 2027.
  • The database server, a printer or the other end of an integration changes, and the old application can no longer talk to it.
  • The only person who knew the application's workarounds leaves the company.
  • An auditor, a customer or an insurer asks how the calculations have been verified.
  • An ERP change or server upgrade stalls because one application will not come along.

A rebuild done in a hurry is the most expensive kind. One started in time is the cheapest.

Four possible outcomes. A new application is only one of them.

Extending its life
The application does its job; the machine is the only problem.
Move to a controlled environment, dependencies worked out. Often a quick job.
Partial migration
A couple of functions are critical, the rest are rarely used.
Critical workflows move to the new platform; the rest stay or are retired.
Full rebuild
The application is central and needs further development.
Everything is rebuilt on a suitable platform, for example .NET/React, the data is migrated and the results are verified against the old system.
Off-the-shelf product
An established product exists for the task.
I help with selection and data migration. I have no product of my own, so the recommendation is independent.

The work, stage by stage

STAGE 0
Initial conversation
YOUR PARTA description of what the application is used for and what worries you.
WHAT YOU GETAn assessment of whether to proceed, and a fixed price for the start-up assessment.
PRICE
€0
1–2 h
STAGE 1
Start-up assessment
YOUR PARTAccess to the application, code and database. One user for a short while. Data handling agreed in writing.
WHAT YOU GETApplication running, dependencies known, rules found, ready for you to confirm, recommendation and price estimates.
PRICE
fixed
a few weeks · credited against follow-on work
The results are yours, and you can take them to another supplier. If the application cannot be made to run by any means, I tell you straight. In that case results cannot be compared by parallel runs, which affects the price and risk of the next stage. You know this before the next decision.
STAGE 2
Pilot migration
YOUR PARTThe most important workflow, sample data, acceptance criteria.
WHAT YOU GETThe workflow on the new platform and the parallel-run results with differences.
PRICE
fixed
based on the assessment
STAGE 3
The rest, piece by piece
YOUR PARTAcceptance of each part.
WHAT YOU GETUsable parts in the agreed order. New requests are priced separately.
PRICE
per part
you can stop at any time
STAGE 4
Go-live and handover
YOUR PARTA go-live decision and time for training.
WHAT YOU GETData migration, parallel use, rollback plan. Source code handed to you. From here on the application can be developed normally.
PRICE
final instalment
after acceptance

How an application is analysed when there is no documentation

The specification of an old application is the application itself. I do not ask you to write it again. I combine four sources:

01

The user shows the work

A user enters an order, calculates a quote or runs a report the way they always do. I record it.

02

Source code, if there is any

I go through what the code does, including the branches not seen in the demonstration. AI speeds this up a lot, but every finding is checked.

03

Database and files

Structure, triggers, procedures and historical data reveal what the application has actually done over the years, exceptions included.

04

The running application

Once the application runs, it can be probed: what happens with this kind of input.

The result is a set of concrete statements for you to confirm:

"Customer group X gets a discount calculated with a different formula."
"This report excludes transactions whose status is Y."
"This function writes a file to a network share that another system reads."
"There is no firm evidence for this rule yet. Needs asking."

It is easier for you to say "yes, that is right" or "no, that changed in 2015" than to write a requirements specification from scratch. Rare situations, such as year-end runs, error cases and special customers, are hunted down separately because they do not show up in a single demonstration.

How we make sure the new system calculates the same results as the old one

I run the same data through both applications in isolated environments and compare the results: calculated values, rounding, reports and the changes written to the database. You get a list: these match, these differ, for this reason.

Three things I say plainly:

  • Comparison proves equivalence only for the cases examined. That is why the data should span several years and include the known special cases.
  • Bugs in the old application are not copied automatically. When a difference is caused by a bug in the old system, you decide which one is right.
  • The new application also needs its own security, performance and environment checks. These are not part of the comparison and are done separately.

The data used for comparison stays with you. It can be used to verify the next version, another supplier or another AI-built implementation.

What kind of applications I take on

STARTING POINT
TYPICAL CASES
NOTES
Delphi, C++ Builder
Quoting, production control, registers
The development environment can often be restored even if it is no longer sold. Source code is what matters.
Visual Basic 6, VBA
Calculation tools, reporting, Excel-based applications
In Excel/VBA applications the logic is often scattered across formulas and macros. Both are reviewed.
Microsoft Access
Registers, order handling, inventory, invoicing
Forms, queries and VBA are separated from the data. The data moves to SQL Server or PostgreSQL.
Old .NET Framework, WinForms, Web Forms
Internal tools from 2003–2015
Often the cheapest case: part of the code can be kept.
Clipper, FoxPro, Paradox, dBase
1990s register and invoicing applications
File-based data needs a careful migration, but it works.
Classic ASP, PHP 4/5, old Java applications
Intranets, order portals, integrations
The server environment is usually the first thing to fail.
Database procedures and file integrations
Logic in SQL procedures, scheduled file transfers
The least visible and often most critical part. I always map it.
NEW IMPLEMENTATION

The technology is chosen to fit the situation, for example .NET and React with SQL Server or PostgreSQL. The criterion is always the same: widely known and supported for the long term, so that almost any software company can continue the work. If you have a preference or your organisation already uses something, we go with that. If needed, I suggest a suitable option. A desktop application can stay a desktop application if a browser does not suit the way it is used.

WHEN I DO NOT RECOMMEND A REBUILD

If the application can be replaced more cheaply with an off-the-shelf product, if its use will end within a few years, or if there is no source code and the application cannot be made to run. In the last case we are talking about building a new application, and I say so plainly.

The role of AI and how your data is handled

What AI does

Reads and explains old code, proposes rules, writes new implementation. It makes the work a fraction of what it would take by hand. That is why I can offer fixed prices even for small applications.

What AI does not do

It does not decide what is correct. The most dangerous mistake in this work is AI misreading an old rule and then writing both the new implementation and its tests from the same misreading. The tests pass and the result is still wrong. That is why the benchmark is always the old application's actual output and your confirmation, not the AI's interpretation.

Where your code and data are processed

  • We agree in writing before starting which material may be processed in AI services.
  • I do not send production data, personal data or pricing data to AI models. Testing uses anonymised or synthetic data unless otherwise agreed.
  • I use Anthropic's Claude (Claude Code) and OpenAI's ChatGPT with settings under which the data is not used for model training. These services process data on their own servers, which may be located outside the EU. If that is not acceptable, no data goes to external services at all.
  • During the work, source code and databases are kept in my own encrypted environment, separated from other clients. They are deleted after handover unless maintenance is agreed separately.
  • If source code may not be processed in external services at all, that works too. Slower and more expensive, but it works.

A one-person supplier. What if I am not available?

A fair question, and one you should demand an answer to from every small supplier. My answer:

Handover at every stage

The source code is in your hands at the end of every stage, not only at the end. Even unfinished work can be continued.

Mainstream technology

The technologies are kept as mainstream as possible, for example .NET and React, so anyone who knows them can develop the application further. You are not dependent on me.

No platform of my own, no product of my own

Nothing is locked into my systems.

If you already have an IT partner who runs your infrastructure, I am happy to work with them: they handle the environment and ongoing support, I handle the application analysis and migration.

Frequently asked questions

THE BUSINESS OWNER ASKS

I do not know what language the application was written in. Does that matter?

No. That is quickly established from the application's files. It is enough that you tell me what the application is used for.

Does everything have to be rebuilt?

Not necessarily. The first question is whether getting the application safely into a new environment is enough. That is often a quick job and can buy years of extra time. A rebuild is done only if it is the cheapest safe option.

Will old data be lost?

No. The data is migrated and the migration is verified. The old application is kept available alongside for an agreed period.

What does this cost?

The initial conversation costs nothing. The assessment is fixed-price and the price is stated before you commit. Follow-on work is priced once we know what the application contains. A price given by guessing would be either too high or a lie.

How much of my or my staff's time will this take?

The assessment needs one user for a short while and a named contact person I can ask when a rule or an exception needs confirming. The pilot takes some time for agreeing acceptance criteria and reviewing results. I tell you the time needed in advance.

The application has functions nobody uses any more. Do they have to be migrated too?

No. The assessment shows what is used and what is not. The database often reveals when a function was last used. Unnecessary parts are left out, and that lowers the price.
THE CTO / IT MANAGER ASKS

We have several applications. How do you prioritise them?

I start with a survey that establishes, for each application, its purpose, users, dependencies, the state of the source code and environment, and the next forced change. The result is a ranking by risk and cost. The survey is priced per application, and you can order it without committing to anything further.

How are results verified measurably?

By parallel runs on agreed data with acceptance criteria agreed in advance. You get a case-by-case list of matching and differing results. Criteria and data are agreed before implementation, not after.

Can we continue with another supplier midway?

Yes, after any stage. Everything produced is yours and built with mainstream technology.

How do you work with our existing IT partner?

The partner handles the environment, accounts and ongoing support; I handle the application. The division of work is agreed in writing. Many IT partners refer a client to me precisely because the application falls outside their services.

Is our source code processed in AI services?

Only as agreed, in writing. Production data is not sent to AI models. Fully closed processing is possible.

Can the new application be developed further?

Yes, and that is one of the main reasons to modernise. Nobody dares touch the old application; the new one can take new features, integrations and UI improvements as ordinary software work. That can be done by me or by anyone who knows the chosen technology.

Do you offer ongoing maintenance?

Maintenance is a separate agreement, and its scope is agreed at go-live. For small applications, ongoing support is often best handled through your existing IT partner, and I hand over the source code so that any competent developer can pick it up.

Next step

In the first conversation I can usually say whether it is worth proceeding and what the assessment costs. No source code needed yet.

+358 40 721 3761info@jkodez.com