Skip to main content
GullySystem
A practical guide

Your code lives in a vendor’s repository: how to take it back

Ganesh HSStrategy and Technology, GullySystem
Practical advice · 4 min read

In this guide 6 sections
The short answer

List everything the vendor controls, then move each item to an account you own: repository, cloud account, domain, store listings, CI secrets and API keys. Mirror the code first. Switch pipelines second. Revoke vendor access last, only after one complete release, mobile signing step included, has shipped from the new setup and passed its smoke tests.

Audit what the vendor actually holds

Ask for a written list. Memory is not enough. Log in to each item, open the owner field and read who is administrator, because the name shown is often a developer’s personal email from three years ago.

The code is only half of it. The Apple developer account, payment gateway keys, DNS records and Play Console signing keystore often sit under one engineer’s login, and a repository audit never shows them. Check each by hand.

  • Git repository and its branches
  • Cloud account and billing owner
  • Domain and DNS registrar login
  • App Store and Play Console listings
  • CI pipeline secrets and signing keys
  • Third party API keys for SMS, maps and payments

Mirror the repository with history intact

Create an empty repository in an organisation you own, mirror-clone the vendor’s repository, then push every branch and tag so commit history, authors and dates come with it.

Build the copy on a clean machine, compare head commits on both sides and run the tests, so a missing submodule or ignored config file surfaces early. Keep the vendor’s repository live until then. No rush.

Move accounts in an order that avoids downtime

Start with the domain registrar and git hosting, which carry the least risk, then move cloud projects through the provider’s own transfer feature wherever one exists. Store transfers take days.

Rotate every secret after it moves. Every one. Database passwords, keystore passphrases and API tokens that a vendor engineer has seen should be treated as exposed, even when nobody suspects misuse.

  • Domain and registrar first
  • Git hosting second
  • Cloud billing and projects third
  • Store listings with the transfer review period
  • Rotate keys last, one at a time

Keep delivery running during the switch

Point the CI pipeline at the new repository on a test branch before you flip production, then run one full release through it, including the mobile signing step. The old pipeline stays as fallback.

Share the dates with the vendor team. A calm handover keeps their engineers helpful. A surprise lockout loses you whoever knows why the deploy script carries that odd flag, plus the unwritten reasons behind the release steps.

Write ownership into the contract and close it out

Add a clause giving the client ownership of code, accounts and credentials from the first commit, plus a monthly check where someone confirms the owner on every account.

Then revoke admin rights. File the audit list with the date. Keep the vendor as a collaborator if work continues, and a month later test a restore from the new backups, since nobody checks backups until something fails.

Ownership transfer tracker

The tracker has one row per asset, covering repository, cloud account, domain, store listings, CI secrets and API keys, with columns for current owner, new owner and transfer method. Further columns record the date moved, whether the key was rotated, and who verified the transfer on the day, with a footer logging the final access revoke.

Open a blank worksheet to print

Questions owners ask

Can the vendor refuse to hand over the code?

Read the intellectual property clause first. If the vendor refuses after that, speak to a lawyer, because ownership of bespoke code turns on what the contract says and on the law where you operate.

Will I lose commit history if I move?

No. A mirror clone carries every branch, tag and commit with its author and date, so the history stays complete and searchable in the new home. Export issues and review comments separately.

How long does a full transfer take?

Code and domain move in a day. Store listings and billing transfers take longer because Apple, Google and the cloud provider review each request before approving it, so their review period sets the overall pace.

Browse all guidesBack to top ↑
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.

Share Your Requirements