This is the first blog in the FlexDeploy Loves OIC blog series:

Oracle Integration Cloud (OIC) provides the ability to develop an integration in the cloud.  The integration can connect cloud and/or on-premise applications, however, these integrations are maintained directly in the cloud and not in any Source Code Management (SCM) system.  Deploying an integration from one OIC instance to another OIC instance is a manual process. It requires exporting an integration from one instance and importing that integration into the next instance.  In addition, the associated connections must be sync’d between instances.  Due to the manual nature of managing the integrations, there is very limited delivery lifecycle management.

FlexDeploy provides build, deploy, release automation and delivery lifecycle management to eliminate the manual deployment process and easily show what integration version is in which environment.  In this blog, we will show how to configure FlexDeploy to

  • communicate with an OIC instance
  • export/import an integration
  • manage the associated connections in a single operation to simplify the integration deployment

FlexDeploy Configuration

The configuration starts with the creation of several topology components such as environments, instances and endpoints.  I won’t cover the creation of these components however each of the links will provide the user guide pages for each component.  Once the topology components are created and associated with each other, the environment/instances will be created on the topology overview and allow configuration of each environment/instance combination.  This will be the main configuration to be able to communicate with the OIC instance.  Select Topology->Topology Overview.  The page will show a colored circle per environment with red meaning not configured to green meaning fully configured.

Clicking on the circle allows the user to configure the env/instance with the necessary properties.

Once we have the environments created, we need to create an endpoint to communicate with the OIC instance in each environment.  Since we are communicating with OIC through REST services, we just need to have a server to make the calls from. We will utilize the LOCALHOST endpoint (FlexDeploy server) that is provided out of box.  No additional configuration is required.

Repeat this setup for QA and PROD based on the properties each OIC instance and the topology overview should look like the following with all green circles (completed configuration).

Now we can create the build and deploy workflows that will be utilized to run exportIntegration and importIntegration operations on the OIC instance.  Select Workflows and click on the plus icon in the upper left corner to create a new workflow.  This will be the configuration for the build workflow:

After clicking on Save, the Definition tab will be available.  Click on the Definition tab to configure the workflow.  Workflows are sequences of plugin operations that will be executed by FlexDeploy to achieve the build process.  Workflows can be as simple or as complicated as needed.  Since there is no SCM associated with an OIC instance, we only need to export the integration.  Drag the exportIntegration operation from the Oracle Integration Cloud plugin (lower right pane) on to the workflow canvas.  Once the operation is placed on the canvas, it will open up for additional configuration as shown below.

There are two inputs that can be configured. The first one provides the ability to name a specific version of the integration or to leave it blank to export the latest version.  The second input allows the user to decide if they want to let this operation manage the connections along with exporting the integration.  If unchecked, the user will have to manage the connections in a different manner such as using the exportConnections/updateConnections operations within the same or a different workflow.  We will utilize the defaults, so click OK.  Now back on the definition page, we need to activate this workflow so it can be executed.  The workflow should look like this:

Now we need to create the deploy workflow.  Select Workflows and click on the plus icon in the upper left corner to create a new workflow.  This will be the configuration for the deploy workflow:

After clicking on Save, the Definition tab will be available.  Click on the Definition tab to configure the workflow.  We only need to import the integration so drag the importIntegration operation from the Oracle Integration Cloud plugin (lower right pane) on to the workflow canvas.

There are two inputs that can be configured, the first one provides the ability to either overwrite an existing revision or create a new revision.  The second input allows the user to provide a connection plan file that would allow a connection property to be changed by environment through the use of FlexDeploy property replacement.  If no file is provided, the connection information will be the same in each environment.  We will utilize the defaults, so click OK.  Now back on the definition page, we need to activate this workflow so it can be executed.  The workflow should look like this:

Now we can create the project that will utilize these configurations and allow us to execute the build and deploy processes.  Select Projects to show the Project Explorer.

Open the project and select the second tab (light blue – Configuration).  We need to configure the following:

  1. SCM Type – select none as there is no SCM associated with OIC
  2. Build Workflow – select the build workflow that was created
  3. Deploy Workflow – select the deploy workflow that was created
  4. Build Instance – select the instance that was created
  5. Deploy Instance – select the instance that was created
  6. Save the configuration

Select the third tab (dark blue – Properties) on the project to see the available properties that can be configured per project.  The OIC Integration Identifier is defaulted to the name of the FlexDeploy project.

We are now ready to start executing the project.

Execution

Now that we have everything configured, it is time to execute the build workflow that will export the given integration and create the appropriate artifacts.  Then we will be able to deploy this artifact to any number of environments and understand what version of the integration is in an environment at any given time. On the project, click the Build button to initiate the Build Request Form.  Select the build environment and click on Submit Request to start the execution.

Upon completion of the build, a project version is associated to this build and an executionId link will be available that will allow you to see the workflow execution, created artifacts, logs and current state of properties.

Clicking on the artifact tab will show the artifacts that were created by the build process.  Since we had checked the input to manage connections on the exportIntegration operation, you will see the connection files (points 3 and 4) that were associated to this integration.  Point 5 shows the integration archive (iar) file that is exported for the integration, it will contain the integration name and the revision number that was exported.

Now that we have a successful build and artifacts created, we can deploy this artifact to the QA environment by clicking the Deploy button on the project.  Select the following options:

  1. project version that you want to deploy, the latest project version is the default project version, so it doesn’t have to be changed.
  2. the environment that you want to deploy to
  3. the instance that you want the deployment to use (defaulted from the project)
  4. Submit Request will execute the deployment to the selected environment

Upon completion of the deploy, an executionId link is available that will again show the workflow execution, artifacts that were deployed, deployment logs and property values at the time of deployment.  In addition, the status section of the page shows the project versions that have been deployed to each environment so there is an immediate indication of any discrepancies between environments.

Clicking on the executionId link shows details of the deployment as shown below. The artifacts that were deployed, the same artifacts as created on the build, are available.  Also, the workflow execution is shown, and the link under the operation will show the execution logs.

Conclusion

This was the initial blog for the FlexDeploy Loves OIC series and covered a large portion of the configuration that is required for the entire series.  Many of these configurations won’t change over time and we will build on the work done.  In this blog, we have shown how FlexDeploy can work with an application that doesn’t follow the standard build/deploy scenario and provide the lifecycle management that we desire.  In the next blog, we will build on this and cover how to manage connection properties that change per environment.

Previous Post: FlexDeploy Loves OIC: Series Overview

Next Post: FlexDeploy Loves OIC: Manage connection property replacement

Dan Reynebeau

I have been working with Oracle and IBM integration technologies, along with custom development, for over 20 years providing solutions to the customer. While working with the different platforms, I have developed deployment scripts along with utilizing 3rd party deployment products to automate the deployment process. As a Principal architect at Flexagon I work with customers to enable DevOps/CI solutions using FlexDeploy, as well as primary development of FlexDeploy.

More posts by Dan Reynebeau

Leave a Reply

Your email address will not be published. Required fields are marked *