On my organization, we're doing the same thing as you do: Develop a product (core), and at the same time provide customization (integration). First of all, we have several environments per each customer. Development, Test, and Production. Development environment is for developers, Test for testers and Production for customers. Easy enough! Plus when we do a deployment in either Test or Prod, we first get the core, and then overlay the changes. And that overlay-ed source is installed in the environment. So the changes doesn't get lost. We need the Test environment between Dev and Prod because Dev is frequently changing, and not stable enough for testing, and we can't do whatever-we-want in the Prod environment. For our customization's (integration for you), we have a set of Dev/Test environments per customization project. No matter how many APIs you develop, your problems will remain there until your two teams develop in the same environment.