Technology Insights
Unmaintained System? Legacy Takeover, Refactor, or Rewrite
The original vendor is unreachable, the engineers have left, and nobody dares touch the system? This article walks through how to take over an orphaned system: code health checks, criteria for refactoring vs. rewriting, typical costs, and how to prevent it from happening again.

Contents
A system that is "still running" but that nobody dares to change is the most dangerous kind of stability. After the original vendor becomes unreachable, the engineers leave, or the documentation disappears, a company should not immediately ask a new vendor to add features; the first step is to regain control over the source code, environments, data, and operational knowledge.
How can you tell a system has become an orphaned system?
JoinX's takeover experience shows that missing documentation, inability to deploy, unclear access rights, uncontrolled versions, and dependence on a single person are all warning signs. The more warning signs appear at once, the more a full health check is needed before taking over.
- Only one person knows how to deploy, and there is no backup.
- The source code is not in a repository the company controls, or it cannot be confirmed as the production version.
- Cloud, domain, certificate, and third-party accounts are held by former employees or a vendor.
- Packages have not been updated for years, and error logs, backups, and restores have never been verified.
- Users still depend on the system, but any change could cause unknown chain reactions.
These problems do not necessarily mean the system must be rewritten, but they show the company has lost the ability to make predictable changes.
What should you check before taking over a legacy system?
JoinX recommends taking inventory across five areas: code, infrastructure, data, security, and operational processes. The purpose of the health check is not to rewrite immediately, but first to establish a baseline of risk and cost on which decisions can be made.
Code
Confirm the languages, frameworks, versions, repositories, branches, licenses, dependencies, tests, and build process. The point is not to make it pretty, but to judge whether it can be reproduced, modified, and verified.
Security
Take inventory of known vulnerabilities, hard-coded secrets, excessive permissions, personal data, logs, backups, networking, and third-party packages. Deal first with high-risk items that could cause data leaks or service outages.
Architecture and integrations
Map out the frontend, backend, databases, scheduled jobs, messaging, storage, and external APIs. Identify which services are single points of failure, which interfaces have no retries, and which system is the source of truth for the data.
Data
Analyze data volume, growth, fields, quality, history, backups, and restores. Taking over is not just about getting the code; data is often the system's most irreplaceable asset.
Documentation and on-the-ground knowledge
Interview operations, customer service, finance, and management, and record the main workflows, exceptions, reports, and periodic work such as month-end closing. Operating habits may hide rules that cannot be seen in the code.
The four-stage takeover process
- Gain control: Collect the repositories, servers, databases, domains, certificates, third-party accounts, and contracts.
- Establish a reproducible baseline: Complete build, deployment, backup, and restore in an isolated environment, and record the production version.
- Add a minimum safety net: Set up smoke tests, monitoring, logs, alerts, and recovery steps for core workflows.
- Schedule improvements by risk: Address security and operational risks first, then talk about features, refactoring, or replacement.
To understand why AI-written code still cannot replace these responsibilities, see AI Writes Code Now: Do You Still Need a Software Company?.
Maintain, refactor, or rewrite: how to choose?
| Option | When it fits | Main risk |
|---|---|---|
| Take over and maintain | The system is reproducible, the core is stable, and support must be restored in the short term | Technical debt keeps accumulating |
| Partial refactoring | Problems are concentrated in specific modules that can be isolated with tests | Misjudging boundaries affects existing workflows |
| Incremental replacement | The system is important but cannot be shut down all at once; modules can be moved one by one | Running old and new in parallel and syncing data is more complex |
| Full rewrite | The technology cannot run, risks cannot be remediated, or the business has fundamentally changed | Highest risk of missed rules, migration, and cutover |
Do not equate "we can't understand it" with "it should be rewritten." A legacy system may contain business rules accumulated over many years; without tests and user interviews, a new system can easily miss key exceptions.
How much does it cost to take over and maintain a legacy system?
Based on JoinX's project experience, costs depend on how reproducible the system is, its technical debt, data risk, and the expected scope of work. Complete a diagnosis first, then separate budgets for urgent fixes, ongoing maintenance, and refactoring.
| Work | Reference cost |
|---|---|
| Initial code and system health check | NT$50K–200K |
| Monthly maintenance | NT$30K–150K |
| Rebuilding documentation and handover | NT$100K–400K |
| Refactoring a single module | NT$500K–2M |
| Full rewrite | Re-estimated based on the new system's scope |
A full rewrite is not "building the screens again." It also adds the cost of understanding the old rules, cleaning and migrating data, parallel-run verification, training, and cutover. You can use System Development Cost in 2026 to build a budget.
AI can help with a legacy takeover, but it cannot replace verification
Where access rights and data policies allow, AI can help:
- Summarize modules, functions, and data flows.
- Find likely dependencies, duplication, and high-risk areas.
- Draft architecture, API, and operations documentation.
- Create test cases and refactoring lists based on existing behavior.
But AI does not know whether an odd branch is a historical bug or an important business exception. Every inference must be verified through running the code, data, users, and engineering review, and sensitive code must not be sent to unapproved services.
How do you avoid ending up with an orphaned system next time?
Contracts
Confirm the delivery of, and rights to, the source code, design files, data, accounts, deployment configuration, and documentation; define termination, transfer, and assistance periods.
Technology
Use repositories and cloud accounts the company controls, and set up automated testing, deployment, monitoring, backups, and regular restore drills, so knowledge does not live only on someone's personal computer.
Operations
Designate internal product and system owners, keep a backup vendor contact, and regularly update the system inventory, access rights, and disaster recovery procedures.
Legacy System Takeover: Frequently Asked Questions
Can a system be taken over without its source code?
You first have to recover the source and the rights to it; if only executables exist, you usually need to keep the environment running or plan a replacement, and safe modification is difficult.
Can a legacy system with no documentation be taken over?
Yes, but rebuild the minimum knowledge from the code, data, logs, and interviews before making changes.
Should a legacy system be refactored or rewritten?
Decide based on whether it can run, its risks, and how the business has changed; in most cases, you can start with partial refactoring or incremental replacement.
How much does a legacy system health check cost?
An initial health check typically costs about NT$50K to NT$200K, depending on size and how complete the data is.
How much does monthly maintenance for a legacy system cost?
For small to mid-sized systems, typically about NT$30K to NT$150K; SLA and how scarce the technology skills are affect the price.
How long does it take to take over a legacy system?
An initial inventory takes about 2 to 6 weeks; establishing a baseline for safe modification depends on the environment and risk.
Can AI help make sense of legacy code?
It can help with summaries, documentation, and draft tests, but engineers must still verify business rules and security.
Is rewriting always better than maintaining a legacy system?
Not necessarily; a rewrite also carries the risks of missed rules, data migration, and go-live.
How can we avoid ending up with an unmaintained system again?
Make sure rights and accounts are transferable, and establish testing, deployment, documentation, backups, and an internal owner.
What should we prepare before a new vendor takes over?
Prepare the code, accounts, data, domains, third-party services, contracts, a list of issues, and workflow contacts.
About the author
Jack Lee
Founder & CEO, JoinX
Jack founded JoinX in 2016 and leads a team of 80+ people across Taiwan and Japan. JoinX has delivered 520+ projects for 220+ clients, including 56 mid-to-large systems.
More about JackRelated articles
What Advantages Can System Maintenance Bring to Enterprises? Master 5 Key Benefits to Ensure Stable Growth of Digital Assets
2026 Enterprise Tech White Paper: Software Orphan Projects and System Refactoring
2026 Digital Resilience: The Complete Guide to System Maintenance and Project Takeover-Ending the "Software Orphan" Crisis