Skip to main content
GullySystem

How to Take Over Software Developed by Another Company

By Ganesh HS, Strategy and Technology, GullySystem

Taking over software built by another company starts with confirming legal authority and collecting every account and document, then reproducing the application in an isolated environment to see what actually runs. Only after dependencies, data and security are assessed should anyone touch the code — fixing continuity risks first, cosmetic changes later.

Confirm Authority and Collect Everything First

Before any technical work starts, confirm who has the legal authority to hand the software over — this usually means the business itself, or someone it has formally authorised, requesting access directly from the current or previous vendor rather than a new team acting on assumption. Once authority is clear, request everything at once rather than piecemeal: source code repositories, database access, hosting and domain credentials, third-party API keys, deployment scripts, and any existing documentation, however incomplete.

Imagine a furniture showroom whose previous development agency built its online catalogue and quoting tool, then closed down with no notice. The showroom's new team should not start writing code the moment they receive a code export — the first job is simply inventorying what has actually been received against what the application needs to run: is there a database backup, are there API keys for the payment and SMS services the site uses, is there a working deployment script, or does the export only contain application code with nothing to connect it to?

Reproduce the Application in an Isolated Environment

The next step is to get the application running somewhere isolated — a staging environment separate from whatever is currently live in production — using only what was handed over. This step matters because it is the fastest way to discover what is genuinely missing: a build step that fails without an undocumented environment variable, a dependency version that no longer installs cleanly, or a piece of configuration that only ever existed on the previous vendor's own machine.

Reproducing the application away from production also means this discovery work carries no risk to the live system customers are currently using. Any gaps found here — a missing key, a broken build script — become the first concrete items on a punch list, rather than surprises discovered later during an actual production incident.

Assess Dependencies, Data, Security and Deployment

With a working copy in hand, assess what the application actually depends on: which third-party services it calls, which of those accounts the business controls versus the previous vendor, what data the application stores and where, and how deployment to production actually happens. This is also the point to check for basic security hygiene — whether credentials in the codebase are still the ones actually in use, whether they need rotating now that a new team has seen them, and whether any obvious vulnerabilities are visible in the dependencies.

None of this assessment needs to be exhaustive on day one. The goal is a working list of what the application relies on and who currently controls it, so nothing keeps running silently on an account or subscription only the previous vendor can access.

Fix Continuity Risks Before Anything Else

Once the assessment surfaces risks, the priority is continuity, not improvement. A credential still under the previous vendor's control, a domain registration close to expiry, an SSL certificate about to lapse, or a backup process that quietly stopped running — these are the items to fix first, because they threaten whether the software keeps running at all, regardless of how good or outdated its code turns out to be.

Bigger changes — refactoring old code, upgrading a major framework version, redesigning a workflow — should wait until continuity is secured. Making structural changes to a system whose full dependency picture is still being discovered raises the odds of an outage the new team does not yet have the context to diagnose quickly.

Produce a Takeover Report and a Staged Support Plan

The takeover process should end with a short written report: what was received, what was found missing, what continuity risks were fixed, and what remains as open technical debt for later. This report becomes the shared reference point between the business and its new support team, rather than something that lives only in one engineer's memory.

From there, a staged support plan makes sense — an initial period of closer monitoring while the new team builds confidence in an unfamiliar system, moving to a standard maintenance cadence once the highest-risk unknowns from the takeover have been resolved.

Application takeover checklist

A checklist covering access and credentials to request, what to verify by reproducing the application in an isolated environment, dependency and security items to assess, and what belongs in the final takeover report — usable as a running list during the handover itself.

Frequently asked questions

Can takeover proceed without documentation?

Yes, though it takes longer and carries more risk. Without documentation, the reproduce-in-isolation step described above becomes the main source of truth — the new team learns what the application needs by trying to run it, rather than by reading a written explanation, which is slower but still workable.

What access should the business supply?

As close to everything as exists: source code repository access, hosting and server credentials, domain registrar access, database access or a recent backup, third-party API keys, and any deployment scripts or CI/CD configuration. Missing pieces can be identified once the application is reproduced in an isolated environment, but starting with as complete a set as possible shortens that discovery step considerably.

Next step

Have a specific situation to work through?

This article covers the general case. Tell us what you're actually dealing with and we'll respond directly.

Discuss Your Requirement