Skip to content
yetkil.

Journal / Technical guide

What to check before taking over a legacy software system

What to inspect first in a working legacy system, when to build a test environment, and how to decide whether a rewrite is justified.

  • legacy systems
  • modernisation
  • software takeover
  • integration

The first step in taking over a legacy software system is neither reading every line of code nor recommending a new stack. Start by understanding the business outcome, the part of the system the change will touch, and the route back if it fails. The depth of the review should follow from those answers.

A one-line reporting correction and a module that will be developed over several years do not call for the same preparation. Applying a complete “ideal infrastructure” checklist to every job may look safe, but it can create cost and delay without reducing the risk that matters.

This checklist sets out the questions to ask, and the order in which to ask them, when improving a working legacy system.

1. Define the request before judging the technology

“The system is old” is not a problem statement. Find the concrete outcome the company needs:

  • Is a new integration required?
  • Is a report calculating the wrong result?
  • Does the system keep going down?
  • Will new modules be built over the coming months?
  • Has the original developer stopped providing support?

If the request is small and clearly bounded, the initial review can focus on the area affected by that change. A full security review, dependency upgrade and containerisation project may have no bearing on the requested outcome.

The picture changes when sustained development is planned. Running the code away from production, preparing test data, defining the release path and establishing a rollback method then become real requirements.

2. Do not dismiss a working system with the word “legacy”

Software used over many years contains more than source code. It carries accumulated business rules, exceptions, reports and connections to other systems.

Rewrite estimates often count only the screens people can see. The work grows around less visible areas:

  • migrating and validating historical data,
  • comparing old and new report results,
  • ERP, accounting and payment connections,
  • scheduled background jobs,
  • workflows users rely on but nobody has documented,
  • acceptance testing and the production cutover.

Finishing the code for the new application does not mean it is ready to replace the old one.

3. Is there a backup, and can you genuinely roll back?

If work will happen in production, “we have backups” is not enough. At a minimum, establish the answers to these questions:

  1. When did the database backup last complete successfully?
  2. Is a copy held on another machine or storage service?
  3. Can the files and database be restored together?
  4. How do you return to the previous working code?
  5. Has restoration ever been tested?

Not every small change requires a full disaster-recovery exercise. Changing live data without understanding the way back is still an avoidable risk.

4. A legacy system is more than its web pages

Important work often happens where the browser cannot see it. Windows Task Scheduler, cron, queues, file transfers or requests from other applications may keep the system moving.

Investigate dependencies such as:

  • scheduled jobs,
  • ERP and accounting connections,
  • supplier and marketplace data feeds,
  • email, SMS, courier and payment services,
  • files sent to or collected from other servers,
  • external systems tied to a domain name or IP address.

An endpoint that appears unused in the code may be the only entry point for a nightly import.

5. Inspect logs and infrastructure as far as the request requires

Logs can reveal where a system is struggling before every code path has been read. Server resources, database connections and recent errors are especially useful when the complaint involves performance or downtime.

It is equally wrong to turn a request for one extra field into an unsolicited infrastructure audit. The technical review should be proportionate to the risk of the work.

A useful first split looks like this:

RequestInitial focus
Small, bounded correctionRelevant code, data and rollback path
New integrationData format, authentication, scheduled jobs and error handling
Continuous feature deliveryLocal or test environment, version control, release and backup process
Performance or downtimeServer, database, logs, bottlenecks and monitoring
Full modernisationAll dependencies, data migration, acceptance testing and phased cutover

6. Do not turn the test environment into the objective

Many legacy systems will not run on a new developer’s machine with one command. Dependencies may be missing, server settings may be old, and some connections may exist only in production.

Moving the entire application into containers and reproducing every dependency for a one-hour correction can take many times longer than the correction. The result may be technically attractive and commercially pointless.

If the system will be developed for months, testing every change in production soon becomes unacceptable. A test environment, representative data and a repeatable release process should then be among the early investments.

The useful question is not “Should there be a test environment?” It is “At what point do the risk and duration of the planned work justify that investment?”

7. Real example: a Classic ASP system running since 2007

A B2B sales system I took over ran on Classic ASP and MySQL. It was fully integrated with Netsis ERP, had processed orders for years and held a substantial collection of operational reports.

The request was to import supplier inventory through JSON. Microsoft’s Classic ASP documentation describes the platform running VBScript or JScript on the server and using COM components for additional capabilities. Classic ASP with VBScript has no built-in JSON parser, so an external parser or a custom COM/.NET component was required. The integration was therefore more laborious than it would have been in a current stack.

That inconvenience still did not justify rewriting the B2B platform. Reproducing years of reports, Netsis flows and observed production behaviour would have created a much larger testing and migration problem.

Once the integration was released, the company could display supplier inventory alongside the products held in its own warehouse. It could take orders for products before tying up cash in purchasing them. The working B2B system and ERP connection remained in place.

For the platform’s execution model, see Microsoft’s official Classic ASP overview. Its Windows Script Components documentation explains how components can be called from ASP pages.

8. How should you frame the rewrite decision?

The rewrite decision is less difficult than it is easy to rush.

Suppose a new module would take:

  • one week in a current system,
  • one month in the existing legacy system,
  • two weeks to reproduce the current product faithfully on a new stack.

A rewrite may then be worth considering. The saving applies to today’s module and continues into later development.

The third estimate is where most comparisons break down. Even when developers believe they can rewrite a long-running application in two weeks, acceptance testing, data comparison and the user cutover may take months.

Compare the complete totals:

The cost of continuing on the existing system against new development + data migration + integration work + testing + cutover risk.

Using current technology is not a business outcome in itself. If a rewrite is proposed merely to create a larger project and a larger invoice, both parties are likely to lose.

9. What should a takeover deliver?

Every takeover does not end with the same type of report. Depending on the business need, the useful outcome may be one or more of the following:

  • an integration released to production,
  • a corrected and stabilised existing system,
  • a test and release environment,
  • reliable backups and monitoring,
  • a prioritised modernisation roadmap,
  • one module replaced in stages,
  • a working portal or internal system.

I deliver this work through a fixed monthly retainer, rather than as a one-off project. The first call is free; once we agree to work together, review, planning, implementation and management all use the same monthly hours.

If your system still works but is getting harder to change, read about the legacy system takeover and modernisation service or book a free introductory call.

Let us start

One hour on a call clears up most of it.

Tell me what you are trying to do, and we will work out what can be done, how long it takes and whether it is genuinely needed. A free analysis, planning and introductory call.

Phone
Show number
Email
e-posta
Based in
Guimarães, PortugalSamsun, Türkiye Based in Portugal, in Türkiye every couple of months.

Legal

Privacy notice

Last updated: 24 September 2026

This site carries no advertising trackers, behavioural profiling or third-party marketing cookies. Personal data is processed only when you fill in the contact form, and only so that I can reply to you. Google Analytics, used for visit statistics, runs only if you accept it.

Who is responsible

Uğur Yetkil is the controller for the personal data processed on this site. The business operates from Türkiye; you can reach the controller through any of the contact channels on this site.

What is collected

Only what you type into the contact form: your name, company, email address, phone number if you give one, the tier you are interested in, and your message.

There is no sign-in, membership or payment on this site, so nothing else is collected.

Why it is processed

The sole purpose is to reply to your enquiry and run the conversation that follows. This data is not added to a marketing list, not used for newsletters and never sold to third parties.

Legal basis

Processing rests on Article 6(1)(b) GDPR, as steps taken at your request before entering into a contract, and on Article 6(1)(f) as a legitimate interest. For enquiries from Turkey, Article 5/2-f of the KVKK applies.

Who it is shared with

Form submissions are delivered through an email service and a messaging service used for notification. These providers are used solely to deliver the message; your data is not shared for advertising.

Cloudflare Turnstile is used for bot protection. Turnstile does not build a profile that identifies you.

If you accept measurement, visit data is passed to Google through Google Analytics. If you decline, that transfer never happens.

How long it is kept

If your enquiry does not lead anywhere, the record is kept for at most twelve months and then deleted. If we begin working together, the data is kept for the duration of the contract and any statutory retention period that applies.

Cookies and visit measurement

Visit counts are measured with Cloudflare Web Analytics. That counter uses no cookies, writes nothing to your browser and does not identify you, so it runs without asking for consent.

Google Analytics 4 is also used. Because Google Analytics sets cookies, it loads only if you accept it. Until you do, the script is never added to the page; declining takes no action on your part, as that is already the default state.

If you accept, the pages you visit, the link that brought you here, your approximate location and your device and browser details are sent to Google. Your name, your email address and anything you type into the form never enter this measurement. Google may also process this data on servers outside the European Union.

You can change your choice at any time: the “Measurement preference” link at the foot of the page reopens the consent strip. When you decline, measurement stops and the cookies Google Analytics left behind are deleted from your browser.

Apart from that, your browser may store a functional value such as your language preference; it does not identify you.

Your rights

Under the GDPR and the KVKK you may ask what data is held about you, request correction or erasure, object to processing, and ask for your data to be transferred.

To exercise any of these, write to the email address on this site; your request is answered within thirty days at the latest.

Data inside client projects

Delivering the service may require technical access to data held in a client’s systems. The confidentiality clause in my standard service agreement applies, and I will also sign the GDPR or KVKK data-processing agreement your company uses.