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:
Other possible environment might include
When promoting code between environments some key features are worth bearing in mind.
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 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.
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.
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.