Skip to content
Buying softwareHandover

Handover: the checklist that proves you own your software

A zip file and a phone call is not handover. Eight things you should receive at the end of any build, and the one question that tests whether you actually got them.

Aman BooraFounder, ABM Tech3 min read

The short answer

You own your software only if a developer you hire next month could take it over without contacting the original vendor. That requires code in your Git organisation, documented environment variables, a seed script, a deployment runbook and every account in your business's name.

Most lock-in is not contractual. It is the quiet kind: the code lives in the vendor's account, the deployment steps exist only in one person's head, and nobody else can get a working copy running. No clause created that situation, and no clause will fix it.

The checklist

Print this and use it on any vendor, including us.

1. Source code in your Git organisation

Not a zip file, not a shared drive, not their GitHub with you added as a collaborator. Your organisation, your billing, your ability to revoke access. The full history should be there — a squashed single commit on handover day tells you nothing about how the thing was built.

2. Documented environment variables

Every key the application reads, what it is for, and where the value comes from. A .env.example with a comment per line. This is the single most common reason a new developer cannot get a project running.

3. A seed script

Something that creates a working environment from nothing: schema, reference data, one admin user. Without it, "set up a local copy" becomes a week of archaeology.

4. A deployment runbook

The actual steps, written for someone who was not there. Which service, which branch deploys, what the build command is, how migrations run, what to do when a deploy fails. If the answer is "we just push and it works", ask what happens when it does not.

5. Database schema documentation

Tables, relationships, and — more usefully — the two or three modelling decisions that are not obvious. Why invoices and invoice lines are separate. Why the status field is an enum and not a boolean.

6. A recorded walkthrough

Screen and voice, thirty to sixty minutes. Both the admin interface and the code structure. This survives staff turnover on your side, which written documentation often does not because nobody reads it until they urgently need it.

7. Every account in your business's name

Hosting, domain registrar, DNS, database, payment gateway, email service, error monitoring, Play Console, Apple Developer. Registered to your business, billed to your card, with you as owner and the vendor as a collaborator you can remove.

This is the one people discover too late, usually when a domain is about to expire and nobody can reach the person who registered it.

8. Signing keys, for anything mobile

The Android keystore and the Apple credentials. Lose these and you cannot ship an update to your own app — you have to publish a new listing and ask every user to reinstall.

The one question that tests all eight

"If we hired a developer next month, could they take over without calling you?"

Ask it before you sign, not at the end. The answer shapes how the project is built, and a vendor who intends to deliver all eight will say so immediately because they have done it before.

What good vendors do differently

They treat handover as a thing that happens continuously rather than an event at the end. The code is in your organisation from the first commit, not moved there on the last day. The runbook is written as the deployment is set up, because that is when the details are known. The environment variables are documented as they are added.

Handover assembled at the end is always thinner than handover accumulated throughout, because by then nobody remembers why the odd configuration value was needed.

Why a vendor would want this

The obvious objection: does this not make it easy to leave?

Yes. That is the point, and it is not altruism. A client who can leave at any time is a client whose vendor has to keep earning the work every month, and that produces better work than a contract that makes leaving expensive. It also removes the conversation about lock-in from every future decision, which is worth more than the leverage it gives up.

Related questions

Quick answers

The follow-ups this article usually prompts.

What should I receive when a software project is handed over?

Eight things: source code in your own Git organisation with full history, documented environment variables, a seed script that builds a working environment from nothing, a deployment runbook, database schema documentation, a recorded walkthrough of the admin and the code, every account registered in your business's name, and the signing keys for any mobile app.

How do I know if I am locked in to my software vendor?

Ask whether a developer you hired next month could take over without contacting them. If the code lives in the vendor's account, the deployment steps exist only in someone's head, or the domain and hosting are registered to them, you are locked in regardless of what the contract says. Most lock-in is operational rather than contractual.

Why do mobile app signing keys matter?

Without the Android keystore and Apple credentials you cannot publish an update to your own app. The only remedy is creating a new store listing and asking every existing user to find and reinstall it, which loses your ratings, your install base and your reviews. The keys should be handed to you at release, not held by the developer.

Keep reading

All articles

Buying software

When custom software is the wrong answer

We talk clients out of builds regularly. Here is the actual test for whether your process justifies custom software, and the four cases where buying something wins outright.

4 min read

Next step

Tell us what's slowing
the business down.

One call, a written scope, a fixed price. If a tool you can simply buy would do the job better, we'll say so.

  • Free first consultation
  • Fixed price, written scope
  • Reply within one working day
  • No obligation to proceed