A system nobody understands any more
An undocumented system is still a working system, and most of what you need to know can be read from it. We investigate what is there, write it down and make it safe to change.
An inheritance nobody asked for
The system arrived with the job, the acquisition or the reorganisation. It runs the orders, the bookings or the month-end, and has done for years. The person who wrote it left long ago, their successor has gone too, and the only documentation is a folder of screenshots from a training session. People use it every day and nobody would dare change it.
That caution is reasonable. Without knowing how a system works, any change is a guess. The answer is to find out how it works, and that is more achievable than it looks.
What is there to be found
A working system is its own record. Everything it does is written down somewhere on the server, in a form a developer can read:
- The code says what happens on each screen and in each calculation.
- The database schema shows what is stored and how records relate to each other.
- The scheduler lists the jobs that run when nobody is watching: the overnight import, the Friday invoice run, the email that goes to the warehouse at six.
- Configuration files name the other systems it talks to.
- Logs show which parts are used daily and which have not been touched in years.
That last point matters. Old systems carry dead weight: screens for a product line dropped long ago, a report nobody opens. Knowing what is unused shrinks the problem.
The gaps are usually in the reasons. Code shows that orders over a certain value are held for approval. It does not say who asked for that or whether it still applies. For those answers we talk to the people who use the system.
Why it is usually still maintainable
Undocumented does not mean badly built. Many of these systems are conventional applications on a mainstream platform, and a developer who knows that platform can find their way around. The work is slower at first because every assumption has to be checked. It speeds up as the documentation grows.
What makes a system hard to maintain is something else: missing source code, a platform nobody can build any more, or logic scattered so widely that no change stays contained. An investigation establishes which of these apply, if any.
Your options
Leave it alone. If the system works and needs no changes, doing nothing costs nothing today. The risk builds quietly: the server ages, the platform goes out of support, and the first failure arrives with nobody able to respond.
Investigate and document it. A period of structured investigation turns an unknown into a known. Your own IT staff or provider can do part of it: listing the servers, scheduled tasks and backups needs no programming. A code audit covers the rest and gives you a written report.
Replace it. Tempting, but a replacement must do what the old system does, and that is exactly what nobody knows. A replacement project that skips the investigation tends to discover the missing rules after it has gone live.
What we would do first
We would take a copy of everything and work on the copy. On it, we establish that the system can be built from its code, restored from a backup and released. Then we write down what we found.
Before changing any behaviour, we add automated tests around the parts that matter most, such as pricing, invoicing and permissions. The tests record what the system does today, so a later change that alters a result is caught before your customers see it.
From there the system can be taken over and maintained like any other, or modernised in stages if the investigation shows it needs it.
Talk to us
Describe the system and what you need. You will hear back from someone who can answer technical questions.
Discuss your undocumented system 0800 433 7990What a running system can tell you
- The code
- The source code if it can be found, or the files deployed on the server. Where only compiled files survive, .NET applications can usually be decompiled into readable code.
- The database schema
- Tables, columns, relationships, stored procedures and triggers. The structure of the data shows a good deal about the rules of the business.
- Scheduled jobs
- Tasks set to run on the server or in the database: overnight imports, invoice runs, emails and clean-ups.
- Configuration
- Connection settings, addresses of other systems and email settings, which together show what the system depends on.
- Logs
- Web server, application and database logs show which screens and jobs are used, how often, and what fails.
- The people who use it
- Staff know what the system is supposed to do, which reports matter and which workarounds they rely on.
How we investigate
Take a copy
We copy the code, database and server configuration to a separate environment, so that nothing we do can affect the live system.
Map what exists
We list the applications, databases, scheduled jobs and connections to other systems, and which of them are still in use.
Build and run it
We get the system building from its source and running on the copy. This shows whether the code you hold is complete.
Write it down
We document how the system is built, released and operated, and how the main business processes pass through it.
Pin down key behaviour
We add automated tests around the calculations and rules the business depends on, before any change is made.
A good fit when
- You inherited the system through an acquisition, a reorganisation or a predecessor's retirement.
- The people who built it left long ago and no documentation survives.
- Staff avoid asking for changes because nobody knows what else might break.
- You have been asked what the system does and what it depends on, and cannot answer.
Probably not for you if
- You have no access to the server or the database the system runs on. That access has to be regained first.
- The person who knows the system is still available. Our page on a departing developer covers a handover with them.
Questions we are asked
Can a system be supported with no documentation at all?
Usually, yes. The code and the database are a complete description of what the system does, even if they are slow to read. Documentation makes the work quicker and safer, so producing it is the first job.
What if we cannot find the source code?
Look on the server first. Many web applications run from files that are the source, or close to it, and compiled .NET applications can usually be decompiled into readable code. Some older desktop technologies cannot be recovered this way, and then the choice is to run the system unchanged or replace it.
How long does the investigation take?
It depends on the size of the system and how much access you have. A small application can often be understood in a few weeks; a large one with many connections to other systems takes longer. We give a specific estimate after a first look.
Would it be safer to replace it?
Not necessarily. A replacement has to reproduce what the old system does, and if nobody knows what that is, the new system will miss things. Understanding the existing system comes first whichever way you go.
What do we have at the end?
A written description of the system: what it consists of, how to build and release it, what it connects to and where the risks are. It belongs to you and is written so that any competent team could use it.
Tell us about your system
Say what it does, what it is built on and what is worrying you. We will reply with what we would look at first and whether we are the right people to help.