What a buying group must demand in its contract
Every clause below is negotiated once, at the moment both sides most want to sign. Three years later your room for manoeuvre is exactly the room the contract left you — no more.
A development contract is negotiated once, at the exact moment both parties most want to sign. Whatever is left out is not recoverable later: three years on, when the supplier no longer answers or their rates have doubled, your room for manoeuvre is precisely the room the contract left you. Here is the list we would keep in front of us during the review — including where it works against a supplier like us.
The general rule: buy the ability to leave
None of these clauses exists to prepare a divorce. They exist to make a divorce possible, which changes the entire balance of the relationship while everything is going well. A supplier who knows you can leave behaves differently from one who knows you cannot. The reversibility clause is not an act of distrust — it is what spares you from ever needing to feel any.
The second rule is more prosaic: a clause whose execution is not described does not exist. "The supplier shall provide documentation" commits nobody until the nature, the format, the recipient and the moment of delivery are written down. Every point below follows the same pattern — the wording to spot, and what to ask for instead.
What you are buying: rights, code, data
Assignment of economic rights, not a licence
The trap: "the client benefits from a perpetual, irrevocable, non-exclusive user licence". Perpetual sounds reassuring and is not: a licence lets you use the software, not modify it, have it modified by a third party, or transfer it. Ask for an assignment of the economic rights on the bespoke developments, listing the rights transferred — reproduction, adaptation, distribution — for the full legal term and for all territories. Vague, blanket assignments are unenforceable in French law, so a short generous sentence protects you far less than a long precise one.
Ownership of the repository and of the accounts
The trap: the code is "available on request" or held by an escrow agent. What to ask for: the repository is hosted on an account in the group's name, with an administrator on the group's side from day one, and the supplier works in it as a guest. The difference is not legal, it is practical — the day the relationship ends, you ask nobody for anything.
Ownership of the data, and a documented export format
The trap: "the client's data remains the property of the client". Nobody disputes that; the question is how you get it out. Ask for a complete export in an open format, with the corresponding data dictionary, runnable by you at any time from inside the application. Not on request, not as PDF, not as a chargeable service quoted on the day you leave.
No blocking proprietary component
The trap: an "in-house framework" or "proprietary technical foundation", presented as a productivity advantage. Ask for the list of components used, their licences, and a written commitment that no component required to run the application belongs to the supplier without a transferable licence. Source code that only builds against a private library is not delivered source code.
What you must be able to do without them
Operations documentation and environment rebuild
The trap: "documentation will be provided at the end of the project" — it never is, or it arrives as a user manual. What to ask for: a written procedure allowing a competent third party to rebuild the whole environment from the repository, with dependencies, configuration variables, database schema and test data. Make it an acceptance criterion: a developer from outside the project follows the procedure and the application starts. That is the only test proving the source code delivery means something.
Reversibility and exit
The trap: a "reversibility clause" with no content. What to ask for: a deadline, a list of deliverables (up-to-date code, data export, documentation, accounts and credentials, transfer of domain names and certificates), a price or an explicit free-of-charge statement agreed in advance, and an obligation to support the incoming supplier for a defined number of days. A reversibility quote negotiated on the day you leave is not a clause, it is a balance of power.
Continuity if the supplier fails
The trap: nothing at all, or professional indemnity insurance mentioned with no limits. What to ask for: the insurance certificate with its cover limits annexed to the contract, and a clause triggering automatic handover of the deliverables if insolvency proceedings open. If you can get nothing better, insist at minimum that the reversibility clause applies as of right, without prior notice.
What governs the relationship day to day
A written definition of acceptance, and of what signature triggers
The trap: "acceptance is deemed granted in the absence of feedback within eight days". What to ask for: an acceptance script listing the cases tested, a realistic period, a distinction between blocking defects and minor reservations, and an explicit statement of what signature triggers — payment of the batch, start of the warranty, closure of that batch's scope. Acceptance that closes nothing lets month six reopen what month two agreed.
Maintenance and correction commitments with actual deadlines
The trap: "corrective maintenance included for one year", with no response time. What to ask for: severity levels defined in writing (blocking, major, minor), an acknowledgement time and a restoration time per level, the hours covered, and what happens when a deadline is missed. Without written severity levels, everything is minor to whoever has to fix it.
A change-order clause
The trap: no clause at all, or "any request outside the scope will be invoiced separately". What to ask for: the procedure itself — written qualification, price given before the decision, arbitration, signature, update of the scope document — plus an explicit ban on starting out-of-scope development before signature. This clause protects you from a surprise invoice as much as it protects the supplier from unpaid work.
A named team in the contract
The trap: "a team of senior developers will be assigned to the project". What to ask for: the people, their roles, their allocation, and a replacement clause with notice, equivalent profile and an overlap period. And the cheapest question you will ever ask: is any of the development subcontracted, and to whom?
The three clauses never to accept
- A perpetual licence presented as equivalent to an assignment of rights. They are not comparable: one lets you use, the other lets you decide. A supplier explaining that "in practice it is the same thing" is telling you the exact opposite of what they believe.
- Tacit acceptance. A clause deeming a delivery accepted in the absence of feedback within a short window converts your workload into approval. During the annual close or a declaration campaign, your permanent team will read nothing for three weeks — and the contract will consider that you accepted everything.
- Hosting and domain names in the supplier's name. It is the quietest and most expensive clause of all: it mentions neither rights nor code, and on its own it makes an exit impossible without an outage. The hosting accounts, the domain name, the certificates and the database credentials are in the group's name, invoiced to the group, from day one.
None of these demands raises the price of a well-run project. They raise the price — or drive away — the supplier who was counting on your dependency to make a deal signed too low profitable. That is exactly what they are for: they do not sort contracts, they sort suppliers, and they do it before signature rather than three years afterwards.
Continue reading
What rebuilding a buying group's system really costs
Nobody publishes figures for this kind of project, which leaves general managers walking into board meetings empty-handed. Here are defensible ranges, batch by batch, and the three cost items no quote ever contains.
Rebates and year-end bonuses: what software must compute
The accounting difference between a rebate and a year-end bonus takes two paragraphs. The mechanics your software has to model — tiers, bases, pro-rata, versioned scales — take a project.