Vendor lock-in with custom software: what to agree before the first line of code

Een open hangslot op het toetsenbord van een laptop
Date
October 19, 2026
Author
Isatis Group
Category
Tips
Read time
10 min read

Vendor lock-in with custom software starts in the contract: source code, repository, cloud accounts and data in your name. Plus the signs and an exit plan.

Vendor lock-in with custom software means you can no longer switch supplier without serious cost or risk, because the code, the knowledge or the environment effectively sits with that supplier. You prevent it before the first line of code: agree what is yours and make sure everything lives in your own accounts from day one.

This article covers what lock-in looks like, what to agree in the contract and the way of working, which safety nets work, the signs that you're stuck and how to switch.

What vendor lock-in looks like in custom software

Most people think of lock-in as a cloud problem. In custom software it more often sits in the agreements and habits around the code. A customer portal can be well built and still impossible to move, because nobody outside the supplier knows how to build and release it.

Type of lock-inWhat it looks likeExample
LegalThe supplier keeps the rights, you get a limited right of useAnother agency may not change your ERP integration
TechnicalThe application runs on the supplier's own frameworkYour planning app relies on an internal base package without source code
KnowledgeNo documentation, the knowledge sits in a few headsNobody else knows how the webshop calculates prices
OperationalRepository, cloud, domain and app store account are in their nameNo update of the field-service app without their account
DataData only through the supplier or in their own formatAn export from the customer portal takes a quote and three weeks

Operational lock-in is often the most stubborn. You can renegotiate a contract, but not a domain name registered to a supplier you've fallen out with. If you build on a low-code platform or a supplier's own platform, your application also depends on that platform's runtime and licence. See low code vs custom software for when that's a fair trade.

What to put in the contract before any code exists

Ownership or licence of the source code

The Dutch Copyright Act (Auteurswet, in Dutch) names computer programs and their preparatory material as protected works (Article 10). For work done in employment, the employer counts as the author (Article 7). If a supplier builds your software with its own developers, the supplier is the author, not you. A transfer of copyright requires a written agreement and is made by a deed drawn up for that purpose (Article 2(3)).

With a licence instead of a transfer, make sure it is perpetual, transferable if your company is sold, includes the source code and lets another party or your own team change the code. For libraries the supplier reuses across projects, such a licence is a fair solution.

General terms

NLdigital (in Dutch) says more than 3,000 IT companies use the NLdigital Terms. They apply only where the parties have not made explicit written arrangements to the contrary (Article 1.2 of the 2025 version). For the transition to a third-party supplier or to you, the supplier endeavours to cooperate with exit activities at its applicable rates (Article 8.5). It only performs data conversion if that was explicitly agreed in writing (Article 8.6). If you want more, put it in the agreement.

Third-party licences and exit terms

At every delivery, ask for a list of third-party components, such as libraries, a paid PDF module or a maps service, with their licences and registered owner. A licence in the supplier's name doesn't move with you. Add the supplier's own framework too, with what you may do with it afterwards. Agree how many hours of knowledge transfer you get at exit, and at what rate. Include documentation, scripts and tests in your acceptance criteria, so "done" also means "transferable".

The way of working from day one: everything in your name

Much lock-in starts in week one, when someone sets up a repository or cloud account "for now" under their own account. Agree that you own the accounts and the supplier gets access.

ItemWhat you agreeHow you check it
Code repositoryIn your company's organisation on GitHub, GitLab or Azure DevOpsYou are an administrator and can make a copy yourself
Build and deploy scriptsThe pipeline is code in the repository, with no manual stepsSomeone outside the team deploys a test version using only the README
Test suiteAutomated tests run on every changeYou see the results in the pipeline
DocumentationArchitecture, setup, integrations and a log of architecture decisionsLives in the repository and changes with the code
Hosting and cloudAccount and billing in your company's nameYou can revoke access
Domains and app storesRegistrations and developer accounts in your nameYou log in yourself
Third-party servicesEmail, payments and monitoring in your nameThe API keys sit in your vault

For architecture decisions, use a short record per choice, as Michael Nygard described it: context, decision, status and consequences. A new team can then read why the ERP integration runs through a queue. What the software should do belongs in the functional design.

Every six months, have someone outside the team build the application from the repository onto a test environment. If they need to phone the supplier, you know what's missing.

Safety nets: data export, the Data Act and escrow

Data in open formats

Agree that you can get a full export at any time in open formats: a dump of a mainstream database, or CSV and JSON with a description of the fields, plus files and documents. A documented API helps with a later migration. Restore the export into an empty environment now and then. An export that has never been restored is a promise.

The Data Act for cloud services

The Data Act has applied since 12 September 2025, and from 12 January 2027 it removes switching charges for data processing services entirely, including charges for data egress, according to the European Commission. Under Article 25, the contract with such a provider must include, among other things, a notice period of no more than two months to start a switch, a transitional period of in principle no more than 30 calendar days, and then at least 30 calendar days to retrieve your data. For a service where most of the main features were custom-built for one customer, some obligations do not apply, including those on switching charges (Article 31). Agreements about the copyright in your source code go in your own contract.

Escrow

With escrow, the supplier deposits the source code with an independent party, and you receive it on an agreed event, such as bankruptcy. That helps when the supplier keeps the code and you depend on it for a business-critical system. It helps little when:

  • nobody updates the deposit after each release;
  • build scripts and documentation are missing, so nobody can build the code;
  • your problem is a slow or expensive supplier, which usually falls outside the agreed events;
  • the code is already in your own repository.

If you choose escrow, have a third party check periodically that the deposited code can be built.

Signals that you're already locked in

  • Only the supplier can release. The pipeline runs on their servers, or there isn't one.
  • You don't have your own copy of the code. Or you have a zip file from two years ago.
  • Every question about how it works becomes a quote. Even how the webshop calculates prices.
  • The cloud invoice comes through the supplier. You don't know what runs or what it costs on its own.
  • Two developers know everything. When one is on holiday, the roadmap stops.
  • A data export takes weeks. Or it only comes in the supplier's format.
  • Nobody can estimate what a handover would cost. So nobody has ever priced an alternative.

If you recognise two or more, take the first two steps of the exit plan below, even if you don't plan to leave. Your own access to code, accounts and data also strengthens your hand in the next price negotiation.

An exit plan in six steps

1. Map what you have

For each item in the table above, note whose name it's in and who has access. Put your contract next to it: notice period, exit terms, intellectual property and third-party licences.

2. Secure access before you give notice

Move the repository, cloud accounts and domains into your name while the relationship is still running normally. That's ordinary good management. After notice, every request becomes a negotiation.

3. Have an outsider build the application

Ask a new party or your own developer to build, test and review the application from the repository. The list of gaps becomes your agenda for the handover. If you're choosing a new supplier, read how to choose a software company as well.

4. Plan a handover with overlap

Arrange a period with both the old and new party on board, recorded knowledge sessions per component and a handover of open issues and known bugs. Under the NLdigital Terms the supplier may charge its applicable rates for exit work, so budget for it. If you're taking development in-house, let your own developers make changes while the old supplier still reviews them.

5. Move data and hosting

Make a full export, restore it in a test environment and compare record counts with production. Only then move the hosting.

6. Replace what can't come along, step by step

If you may not keep a framework from the previous supplier, replace it in parts with the strangler fig approach: new components next to the existing system, old parts switched off once the new ones take over. If replacing the application is cheaper than taking it over, read about legacy systems.

Avoiding vendor lock-in with Isatis

Isatis builds custom business software, with teams in Nijmegen, in the Netherlands, and Sarajevo. We've been doing this for more than 30 years, with 30+ engineers and more than 100 projects, and we're certified for ISO 9001 and ISO 27001. Our page on custom software development shows how we work.

If you want to set up a new project so that you or another party can carry on later, or you want to know how locked in you are with your current supplier, book a conversation. We'll also tell you when switching would cost more than it brings.

Frequently asked questions

Do I own the source code if I pay for the development?

Not automatically. Under the Dutch Copyright Act, the employer counts as the author of work made in employment, so when a supplier builds with its own developers, the author is the supplier. A transfer needs a written agreement and a deed. A broad licence can also be enough.

Is escrow enough to prevent vendor lock-in?

Usually not. Escrow mainly helps in a bankruptcy, and only if the deposited code is current and can be built. If the code sits in your own repository from day one, you rarely need escrow.

Can I take development in-house later?

Yes, if code, pipeline, tests and documentation are in order and sit in your accounts. Plan an overlap period with the supplier. Choose mainstream languages and frameworks at the start, so it's easier to hire developers later.

Does the Data Act apply to my custom application?

Its switching rules apply to providers of data processing services, such as cloud services. For services largely custom-built for one customer, some obligations do not apply, including those on switching charges. Agreements about your source code go in your own contract.

Should I tell my supplier I'm preparing to switch?

Not at every step. Putting accounts in your own name and asking for a copy of the code is ordinary good management. Read your notice period first, then have an open conversation, because you still need the old supplier for knowledge transfer.

Share this article

Jack van Poll

Jack van Poll

Co-Founder, Isatis

Writes about nearshore engineering,
software partnerships and building teams that last.

Get in touch

Read next.

All articles