The Integration blog covers the latest in product updates, best practices, customer stories, and more.

  • July 4, 2020

Promoting Your Code

Antony Reynolds
Senior Director Integration Strategy

A few years ago my wife and I were honored to be invited to our friends promotion ceremony. By hard work, dedication and outstanding leadership he was promoted to a full Colonel in the US Air Force. Fortunately when promoting integrations between environments it is a lot less work.


We usually have multiple environments for our code. Some possible environments are listed below:

  • Development for building integrations.
  • Test for testing integrations.
  • Production for running integrations.

Other possible environment might include

  • QA for final acceptance testing
  • Load Test for performance testing.

Promotion Requirements

When promoting code between environments some key features are worth bearing in mind.

  • Same code should be deployed to production that was tested - no changes.
    • This is important because we want to deploy to production what we tested in development and test/qa.
  • Configuration data should be separate from code - each environment will have its own unique endpoints.
    • This is important because we don't want to accidentally store production data in test or development systems.

OIC Features to Support Code Promotion

OIC allows individual integrations to be exported. Each integration includes dependent artifacts such as lookup tables, JavaScript libraries and connection types. Note that it does not include connection endpoints or credentials as these will vary between systems. To simplify deployment multiple integrations can be bundled into a package.

Connections are identified by a name and a time. When imported if a connection of the same name and correct type already exists then OIC will use that connection for the integration. If a connection of the correct name and type does not exist then it will be created but will require configuring as no configuration data is carried across in the integration. This is important because it precludes us from accidentally using dev or test connection sin a production environment.

APIs exist to support export and import and also configuration of connections and update of lookups.

OIC supports versioning of integrations. Once an integration has been promoted to another environment then if it needs to be changed in development then a new version should be created. Changes to numbers before the first decimal point are major version numbers and integrations with different major version numbers can be active at the same time. Changes to numbers after the first decimal point are classed as minor version changes and only a single minor version of a major version can be active.

The Promotion Process

The code promotion process is illustrated in the diagram below. A package is exported from production and then the same package is used for both test and production environments. The configuration of connections is separated out and the connections can be manually configured or they can be configured through an API.

Continuous Integration & Continuous Delivery

Using the Oracle Integration API it is possible to include OIC packages and integrations in a CI/CD pipeline. For an example using Jenkins please check out this CICD Implementation for OIC article by Richard Poon.

Cloning an Environment

Note that it is possible to create an exact copy of an OIC environment by using the Export and Import Oracle Integration Design-Time Metadata capability of OIC. Unlike the code promotion discussed, this approach clones the connection endpoint and credential information as well as the integrations. This is NOT FOR CODE PROMOTION. This is to allow you to create an exact copy of an environment for historical backup or to clone an environment to create an environment with the same endpoints, for example for load testing or for diagnosing a production problem. If you have these requirements then I have created some wrapper scripts to simplify the process that can be deployed as a docker image.


Use the export and import package capability of OIC to promote code from lower environments to higher environments. Use the export/import design time meta-data to create exact copies of an environment at the same level, do not use it for code promotion from dev to test to production. All of this can be scripted and embedded into a CI/CD pipeline.

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.