The Application Handover Checklist: What Documentation Should Your Development Team Provide?

The development team says the application handover is complete.

You have the source-code repositories. Production credentials have been transferred. There is a folder called “Documentation,” and somebody has walked the incoming team through the system on a video call.

Then the first real change needs to be made.

The new team discovers that the repository does not explain how to build the application locally. Nobody has documented which scheduled jobs run in production. One third-party integration belongs to an account controlled by a former developer. The mobile signing certificate is stored somewhere else, while an important database migration procedure exists only in an old chat thread.

Technically, the code was handed over.

Operationally, the application was not.

A proper application handover transfers enough technical, operational and contextual knowledge for another capable team to understand the system, run it, change it, release it and respond when something fails without remaining dependent on the outgoing developers.

That requires more than a source-code dump.

DORA's research treats documentation quality as an important software-delivery capability, emphasizing qualities such as clarity, findability and reliability rather than simply the amount of documentation a team produces. DORA: Documentation Quality

For Levelworks, a successful handover is closely connected to Well Documented App Health, with important links to Version Controlled, Explainable & Debuggable, Supported and Seamlessly Updatable. If the next team cannot confidently operate or change the application, ownership has not really transferred.

Start with an application overview

The incoming team should not need to understand the repository structure before understanding what the application does.

Begin with a short application overview that explains:

  • the application's purpose;
  • primary user groups;
  • major business workflows;
  • major technical components;
  • supported platforms;
  • production and non-production environments;
  • links to deeper technical documentation.

This can live in a repository README or central documentation index.

GitHub recommends using a repository README to explain what a project does, how people can get started, where they can get help and who maintains it. GitHub: About repository README files

For a handover, the README should function as the front door rather than attempting to contain every technical detail.

A useful opening structure might be:

Application

├── What it does

├── Architecture

├── Repositories

├── Local setup

├── Environments

├── Deployment

├── Integrations

├── Operations

└── Ownership / contacts

The incoming maintainer should be able to start there and know where to go next.

1. Source-code repositories and version-control structure

Hand over every repository required to operate the application—not only the main application repository.

Depending on the system, this may include:

  • frontend applications;
  • backend services;
  • mobile applications;
  • infrastructure-as-code;
  • deployment configuration;
  • database migration projects;
  • shared libraries;
  • scheduled workers;
  • automation scripts.

Document the purpose of each repository and how the repositories relate to one another.

The handover should also identify:

  • primary branches;
  • branching conventions where relevant;
  • release tags;
  • protected branches;
  • pull-request requirements;
  • repository administrators.

Do not leave the incoming team trying to work out whether legacy-api, api-old, and api-prod-v2 are all still relevant.

Repository ownership matters too. GitHub's CODEOWNERS mechanism, for example, allows organizations to associate parts of a repository with responsible individuals or teams and can be combined with review requirements. GitHub: About CODEOWNERS

After a handover, those ownership references should point to people who still exist in the operating model.

[Internal Link: “How Git Makes Application Maintenance Safer”]

2. Architecture diagrams

Source code provides implementation detail. It does not provide an efficient map of the system.

The incoming team should receive architecture documentation showing the major components and their relationships.

At minimum, document:

  • user-facing applications;
  • backend services;
  • data stores;
  • queues or event systems;
  • external integrations;
  • major communication paths;
  • important infrastructure boundaries.

The C4 model is one useful approach because it separates architecture into understandable levels rather than putting the entire system into one enormous diagram. A system-context view shows how the application fits into its wider environment, while container and component views progressively add detail.

For many handovers, two diagrams are especially valuable:

System context diagram: What external users and systems interact with the application?

Container or service diagram: What applications, services and data stores make up the system internally?

The objective is not architectural artwork. The next engineer should be able to look at the diagram and understand where to begin investigating a problem or change.

3. Local development and setup instructions

One of the quickest tests of documentation quality is asking a new engineer to run the application without verbal assistance.

The development team should document:

  • prerequisites;
  • runtime and framework versions;
  • package installation;
  • local database setup;
  • required services;
  • environment variables;
  • test-data setup;
  • startup commands;
  • common setup problems.

Sensitive values should not be placed directly in ordinary documentation. Instead, explain where approved credentials and secrets are obtained.

Where the application contains multiple services, document startup dependencies clearly.

For example:

1. Start PostgreSQL

2. Start Redis

3. Run database migrations

4. Start API

5. Start background worker

6. Start frontend

A setup document that simply says “run the project locally” is not a setup document.

A useful handover test is whether an engineer unfamiliar with the system can reach a working development environment by following the instructions.

4. Environment and configuration documentation

The incoming team needs to understand where the application runs.

Document environments such as:

  • local;
  • development;
  • QA/testing;
  • staging;
  • production;
  • disaster-recovery environments where applicable.

For each environment, record the appropriate information about:

  • hosting platform;
  • application services;
  • databases;
  • storage;
  • queues;
  • environment-specific configuration;
  • domains;
  • network dependencies.

You do not need to duplicate configuration that already exists accurately in version control. Link to the authoritative configuration instead.

That distinction matters.

Documentation should explain the environment and point maintainers to the source of truth rather than creating a second configuration record that will inevitably drift.

DORA recommends keeping configuration and other important delivery artifacts in version control to improve traceability and reproducibility. DORA: Version Control

5. Deployment and release documentation

The handover should explain exactly how a code change becomes a production release.

Include:

  • CI/CD platform;
  • build process;
  • deployment triggers;
  • required approvals;
  • deployment environments;
  • configuration management;
  • release tagging/versioning;
  • post-deployment checks;
  • rollback procedure.

A diagram is often useful:

Pull request

     ↓

Automated tests

     ↓

Merge

     ↓

Build artifact

     ↓

Staging

     ↓

Validation

     ↓

Production approval

     ↓

Production

If production deployment still contains manual steps, document them precisely.

Statements such as “Alex usually handles production releases” are warning signs during a handover. The new team needs the process, not merely the name of the person who knows it.

[Internal Link: “CI/CD for App Maintenance: How Automated Releases Reduce Risk”]

6. Database documentation

Database handover should go beyond providing a connection string.

Document:

  • database technology and versions;
  • major databases and schemas;
  • migration mechanism;
  • backup process;
  • restore process;
  • important retention requirements;
  • scheduled database jobs;
  • sensitive or especially critical data areas.

You do not need prose describing every table if the schema itself is clear and maintained.

Focus documentation on what is difficult to infer.

For example:

customer_status_history must not be deleted during normal customer removal because historical records are required by the reporting service.

That information can prevent a future maintainer from making a seemingly harmless cleanup that changes important behavior.

If migrations require a particular sequence or have historically caused operational issues, record that as well.

7. API and integration documentation

Third-party integrations are common handover failure points because the code is only one piece of the relationship.

For every significant integration, document:

  • provider;
  • purpose;
  • API documentation;
  • authentication method;
  • account ownership;
  • environments;
  • webhook endpoints;
  • rate limits or important constraints;
  • retry/failure behavior;
  • contact/support route.

Typical integrations include:

  • payments;
  • email;
  • SMS;
  • identity providers;
  • analytics;
  • cloud storage;
  • mapping;
  • CRM;
  • accounting systems;
  • external APIs.

Pay particular attention to ownership.

If a production payment account, OAuth application, domain or cloud resource belongs to the personal account of an outgoing developer, that should be corrected before the handover closes.

The incoming team should control the application infrastructure it is expected to maintain.

8. Secrets, accounts and access inventory

Do not create a spreadsheet containing all production passwords and call it a handover.

Instead, provide an inventory showing which access exists and where credentials are securely managed.

The inventory may include:

  • cloud accounts;
  • source-control organizations;
  • CI/CD platforms;
  • monitoring systems;
  • domain registrars;
  • DNS providers;
  • certificate systems;
  • app-store accounts;
  • API-provider accounts;
  • secret stores;
  • production databases.

For each system, confirm:

  • organizational ownership;
  • administrator access;
  • incoming-team access;
  • removal of unnecessary outgoing-team access;
  • recovery mechanisms.

The handover should leave no business-critical account dependent on an individual's personal email address or authenticator.

For mobile applications, explicitly include ownership of Apple and Google developer accounts, signing keys and release credentials where applicable.

9. Architecture decisions and known constraints

A new team can read the implementation.

What it cannot reliably infer is why important decisions were made.

Document significant architectural decisions such as:

  • why a queue exists instead of synchronous processing;
  • why particular data is duplicated;
  • why one service cannot yet be consolidated;
  • why a legacy compatibility layer remains;
  • why a particular database or framework was chosen.

Architecture Decision Records are useful for this purpose. Martin Fowler describes an ADR as a short record containing a decision, the context behind it and its significant consequences. When a decision changes, the original record can remain intact and point to the superseding decision, preserving the history of how the architecture evolved. Martin Fowler: Architecture Decision Record

This prevents the new team from “fixing” an unusual design decision without knowing what constraint originally created it.

10. Operational runbooks

The incoming team needs instructions for operating the live application, not only developing it.

Create or transfer runbooks for predictable operational situations such as:

  • restarting important services;
  • clearing stuck jobs;
  • rebuilding indexes;
  • rotating certificates;
  • restoring backups;
  • handling storage limits;
  • disabling a failing integration;
  • running important administrative tasks.

For each runbook, include:

When to use it.
What event or condition triggers the procedure?

Procedure.
What steps should be followed?

Verification.
How does the maintainer know the procedure succeeded?

Recovery or escalation.
What happens if it does not?

Google Cloud's operational guidance recommends maintaining incident runbooks or playbooks that document triage, investigation, resolution, communication, tools and important contacts—and reviewing them so they remain current. Google Cloud: Manage incidents and problems

Google's SRE guidance goes further: its experience found that thinking through and recording emergency procedures in advance produced roughly a threefold improvement in mean time to repair compared with improvising responses. Google SRE: Emergency Response and Playbooks

That makes operational documentation one of the most valuable pieces of a handover.

11. Monitoring, alerts and troubleshooting information

The incoming team should know how to tell whether the application is healthy.

Document:

  • monitoring platforms;
  • key dashboards;
  • alerting channels;
  • log locations;
  • application error tracking;
  • major health checks;
  • important operational metrics.

For significant alerts, include enough context to explain:

  • what the alert means;
  • probable causes;
  • first diagnostic steps;
  • related dashboards or logs;
  • escalation route.

Avoid dumping dozens of monitoring URLs into a document without explanation.

The useful handover question is whether a new maintainer receiving an alert can determine where to investigate next.

12. Backup and recovery procedures

Saying “backups are enabled” is not enough.

The handover should identify:

  • what is backed up;
  • backup frequency;
  • retention;
  • storage location;
  • restoration procedure;
  • restoration dependencies;
  • who can authorize or perform recovery;
  • evidence that restore procedures have been tested.

If disaster recovery relies on infrastructure, credentials or external accounts, those dependencies must also be included in the handover.

[Internal Link: “Backup and Disaster Recovery: What Every App Maintenance Plan Needs”]

13. Testing documentation

The incoming team should understand what automated and manual protection already exists before making changes.

Document:

  • how tests are run;
  • major test suites;
  • required test environments;
  • test-data approach;
  • CI test stages;
  • known flaky or disabled tests;
  • important areas with weak coverage.

Also identify any critical workflows that currently depend on manual regression testing.

The purpose is not to produce a testing textbook. It is to prevent the new team from assuming coverage exists where it does not.

DORA's test-automation guidance emphasizes fast, reliable testing throughout delivery rather than relying solely on a separate manual regression phase. DORA: Test Automation

A handover should make the existing confidence level visible.

14. Known issues, technical debt and temporary workarounds

Do not hand over only the idealized version of the application.

The next team needs to know where the weak spots are.

Document significant:

  • known defects;
  • recurring incidents;
  • technical debt;
  • temporary workarounds;
  • unsupported components;
  • deprecated dependencies;
  • fragile processes;
  • planned migrations;
  • performance bottlenecks.

Explain impact and context rather than creating a list called “technical debt” containing hundreds of vague items.

For example:

Reporting worker still uses Framework X version Y. Upgrade was postponed because library Z currently blocks compatibility. No immediate production impact, but the framework leaves support in Q2.

That is actionable context.

“Reporting service needs modernization” is not.

15. Scheduled jobs and background processing

Background work is easy to overlook because it may not appear directly in the user interface.

Document:

  • scheduled jobs;
  • cron jobs;
  • queue workers;
  • event consumers;
  • batch processes;
  • data-sync jobs;
  • billing tasks;
  • report-generation processes.

Include their frequency, purpose and failure behavior.

The incoming team should know what runs automatically at midnight before somebody discovers it by receiving an alert at 12:05 a.m.

16. Business rules that cannot safely be inferred from code

Some maintenance risk comes from business logic rather than technical architecture.

Capture important rules such as:

  • billing calculations;
  • approval thresholds;
  • account-state transitions;
  • deletion restrictions;
  • compliance-driven retention;
  • unusual permission behavior.

Focus on rules whose rationale matters.

If code says:

if order_age > 90 days:

    prohibit_refund()

the maintainer can see what happens.

What they need documentation to explain is why 90 days exists and whether anybody is allowed to change it.

17. Ownership and escalation map

Even excellent technical documentation cannot answer every future question.

The handover should identify responsibility for major areas such as:

Area

Responsible party

Application maintenance

Team / vendor

Cloud infrastructure

Team

Database

Team

Security escalation

Role

Billing provider

Business owner

Domain/DNS

Account owner

Product decisions

Product owner

Critical incident escalation

Named role/process

Use roles and maintained team references where possible rather than building documentation around one individual's name.

Ownership should also reflect what has actually transferred. If the incoming team is responsible for production but cannot modify DNS or access the payment provider, the operating model is incomplete.

Do not accept documentation without verifying it

The most important step in a handover is testing the handover itself.

The incoming team should perform key activities before the outgoing team disappears.

Examples include:

  • clone and run the application from documented instructions;
  • deploy to a non-production environment;
  • trace one critical workflow through the architecture;
  • locate logs for a known application request;
  • execute an operational runbook;
  • access monitoring dashboards;
  • verify repository and cloud permissions;
  • confirm access to third-party systems;
  • restore a backup in an appropriate test environment where practical.

Any step that requires undocumented assistance reveals a handover gap.

Write the missing information down and repeat the exercise.

This is much stronger than asking the incoming team:

“Does everything make sense?”

Most documentation problems only become obvious when someone attempts to use the material.

A concise application handover checklist

Before accepting technical ownership, verify that you have:

Area

Required handover

Overview

Application purpose, users, major workflows

Code

All repositories, branches, ownership

Architecture

System and component diagrams

Development

Local setup and test-data instructions

Environments

Infrastructure and configuration map

Deployment

Build, release, validation and rollback process

Database

Schemas, migrations, backups, important constraints

Integrations

Providers, authentication, accounts, failure behavior

Access

Organizational ownership of infrastructure and third-party accounts

Decisions

Important ADRs and architecture constraints

Operations

Runbooks and recurring maintenance procedures

Monitoring

Dashboards, logs, alerts and troubleshooting paths

Testing

Test suites, execution, known coverage gaps

Known issues

Technical debt, workarounds and recurring problems

Background work

Jobs, queues, workers and schedules

Business logic

Important rules that require context

Ownership

Support, technical and escalation responsibilities

Not every application needs the same depth in every category.

A five-service SaaS platform requires more documentation than a simple internal web application. The handover should be proportionate to the consequences of misunderstanding the system.

The handover is complete when dependency on the old team ends

A development team can deliver every document in this checklist and still perform a poor handover if the material is inaccurate, fragmented or impossible to use.

The real test is what happens after responsibility changes.

Can the new team build the application without calling the previous developer?

Can they identify where a production error originated?

Can they release a small change safely?

Can they explain the major dependencies?

Can they restore service using documented procedures?

Can they access the accounts they are responsible for operating?

That is why Well Documented App Health is not about possessing documentation. It is about preserving enough reliable application knowledge for maintenance to continue when people, vendors and teams inevitably change.

A strong handover leaves the previous development team available as useful historical context, not as an undocumented runtime dependency of the application.

When that dependency has been removed, ownership has genuinely changed hands.

‍

Continue Reading