X

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

Enabling the Future Today - Feature Flags in Oracle Integration

Antony Reynolds
Senior Director Integration Strategy

Enabling the Future Today

Last Updated: Tuesday 31 March 2020

***UPDATE March 2020***

We are now moving most new features directly to production status.  We will have a more limited set of customer visible flags, but will still have other flags that we use internally.  We are currently validating and moving existing flags to full production status.

We have added an ETA (Estimated Time of Arrival) column to the available flags table.  This will show the current estimate for when this may be available in production.  This is an estimate and is not a commitment by Oracle to deliver the feature into general availability on the date given.

Feature Flag Overview

Within Oracle Integration we are moving to a model that allows us to trial new features without making them available to everyone.  Everyone runs the same codebase but feature flags control what is available to a specific instance.  Why would we do this? For multiple reasons:

  • Gain feedback on new features before rolling them out to the whole user base.
  • Test new features in "the wild" in a controlled manner.
  • Be able to rollback new features that may have unforeseen problems.

How It Works

Each new feature is given a flag that is used to control its availability.  For instance the flag for the small footprint OIC agent was oic.adapters.connectivity-agent.light-weight-agent.  If this flag was enabled for a given OIC instance then they could download the lightweight connectivity agent.  Other OIC instances running the same code but with the flag turned off would not offer the new agent.

Flags are controlled from a central system and can be updated in real time by Oracle development and operations.  This means that feature flags can be turned on very quickly, and also if a problem occurs they can be disabled.

Feature Flag Lifecycle

Feature flags have a lifecycle as illustrated below.

The different stages are:

Internal Only

You may see a product manager demo features on an instance that are not currently available, if using a production pod these may only be available to internal users.  This is where we try things out internally before turning them on for any customers.  Once we are happy with the feature internally we are ready to share it with selected customers and move the feature to Feature Controlled.  Note that this change in stage does not require any code changes, it just alters our internal approval process to enable the feature.

Feature Controlled

Once a feature enters the feature controlled stage then a customer may request that the flag be enabled for one or more of their OIC instances.  If approved then those instances will have the flag enabled and the feature will become available within a few minutes of being enabled.  Again there are no code changes to the customer instance, just the change in the flag status from disabled to enabled in the central feature flag server.

Feature Controlled General Availability

Once we are happy with the stability of a feature we will enable it for all instances.  This again does not require a code change.  We leave the flag in place so that if a specific customer has a problem we can disable the feature just for them or roll it back.  This is a safety measure in case problems occur that were not caught by internal users or early adopters of the feature.

General Availability

Eventually the flag controlling the feature will be removed.  This has no impact on the end user, it just allows us to keep the code paths clean and remove unused code that has been made obsolete by the new feature.  End user will see no difference between this stage and the previous one.  So I mention it here only to explain how we keep our codebase clean.

What Flags are Available?

The following flags are currently available in the Feature Controlled stage.  We will be blogging about these features and as we do we will update the detailed explanation with a blog entry explaining the feature in detail.  As we add new features we will update this blog.  Check the first line of the blog to see when it was last updated.

Feature Flag Name Description Detailed Explanation Earliest Version ETA
oic.cloudadapter.adapter.otac.export Extract bulk data from OTAC   20.33491 April 2020
oic.cloudadapter.adapter.rest.openapiurl Enable OpenAPI URL for REST adapter connection Accelerate API Integration With the Power of OpenAPI 19.31520 March 2020
oic.cloudadapter.adapter.rest.useopenapiparser Use new parser for parsing swagger documents   19.31520 April 2020
oic.cloudadapter.adapters.salesforce.ecwu Eliminate connection wsdl upload on salesforce adapter connection page   19.33290 April 2020
oic.cloudadapter.adapters.salesforce.elementnames-curation Salesforce adapter element names curation   19.31521 April 2020
oic.ics.b2b.document.customize Enables B2B Document Customization   20.34860
oic.ics.b2b.edi.translate Enables EDI Translate action in an Integration   20.34860
oic.ics.console.integration.complex-variables Variable Visibility Improvements   19.1.3 May 2020
oic.ics.console.integration.generate_analysisjson Generation of analysis.json document   18.4.1 March 2020
oic.ics.console.integration.invoke-integration-support Allows user to test a REST trigger based integration Testing REST trigger-based Integrations in OIC Console 19.32380 March 2020
oic.ics.console.integration.stitch-action Stitch action in Orchestration

Use Data Stitch to simplify integrations

Use Global Variables and Data Stitch to log request payloads

19.33490 May 2020
oic.ics.console.library.importexport Control the import and export Library (Library Jar + Metadata XML) functionality   19.33490 March 2020
oic.ics.featureflag.spa.designer Integration designer JET pages Integration Designer Pages - Progressive Web App UI Experience 19.32380 March 2020
oic.ics.featureflag.spa.settings Integration settings JET pages   20.33493 March 2020
oic.ics.mapper.jetmap-enablement New Jet UI based mapper New JET based OIC Mapper 18.2.5 March 2020
oic.ics.stagefile.firstclass.encrypt-decrypt Allows user to encrypt or decrypt files using stagefile action

How to Encrypt/Decrypt Files in OIC

19.33050 March 2020
oic.ics.stagefile.pgp.key.support Support encryption/decryption in stage file read/write operation How to Encrypt/Decrypt Files in OIC 19.31130 March 2020
oic.intg.uiapi.package.configurator Enables package configurator feature Configurators - One stop solution for all your dependency configuration needs 20.33490 March 2020
oic.processdt.decision.drd Decision requirements diagrams support in process   19.33493
oic.suite.settings.certificate Common certificate and key management UI One Stop Solution for OIC Certificate Management 19.31521 March 2020
oic.suite.settings.dbspace Common simplified data retention settings OIC Space Management simplified 19.31521 March 2020

How to Request a Feature Flag

To request a feature flag be enabled for one of your environments raise a Service Request via My Oracle Support.  First make sure that the version of your environment matches the minimum required version for the flag to be available.  Provide the following information in the SR:

  • Name of the feature flag that you want to be enabled.
  • URL of your OIC instance
  • Content of the About Box from your OIC instance which should include the following:
  • Service Instance Name e.g. myinstance (obtain from about box)
  • Identity Domain e.g. idcs-xxxxxxxxxxxxxxx (obtain from about box)
  • Justification, explain why you want the feature enabled, providing a use case.

Your request will then be submitted to a product manager for approval.  Once approved then the feature will be enabled on your requested environment.

Caveats

Features are in controlled availability because they may still have some defects in them.  Be aware that by using feature flag controlled items ahead of general availability means that you are being an early adopter of new features and although we do our best to ensure a smooth ride you may experience some bumps.  Occasionally we may have to make changes to the functionality enabled in the feature flag before it becomes generally available.  Just something to be aware of.  However the feature flag enables us to release new features to customers whose use cases will benefit from them before we are ready to make a feature generally available.  We think this is good for both you, the customer and us, Oracle,  A win-win situation!

Previous Flags Now Generally Available

The following flags are no longer used as the features they controlled are now available to all instances of Oracle Integration Cloud. Note that if you are using User Managed Oracle Integration Cloud then you may need to upgrade to the latest release to get these features.  THe Delivered column shows when the feature became generally available.  This field has only been completed started in March 2020.

Feature Flag Name Description Detailed Explanation Earliest Version Completed
oic.adapter.connectivity-agent.ha HA support for connectivity agent The Power of High Availability Connectivity Agent 18.3.1
oic.adapters.fa-cloud.connection-simplification-support Connection Page Simplification feature in FA Family Of Adapters   20.33491
oic.adapters.hcm-cloud.atom-feed-support Atom Feed support for HCM Adapter Subscribing to Atom Feeds in a Scheduled Integration 18.1.3
oic.cloudadapter.adapter.aq.rawobjectqueues This feature enables RAW and Object type Queues for consuming and producing messages via AQ Adapter in OIC   18.3.3
oic.cloudadapter.adapter.database.batchInsertUpdate Oracle Database Adapter - Operation On Table - Insert and Update   18.2.3
oic.cloudadapter.adapter.database.batchSelect Oracle Database Adapter - Operation On Table - Select and Merge   18.3.3
oic.cloudadapter.adapter.db2database.batchInsertUpdateSelectMerge DB2 Database Adapter - Operation On Table - Insert, Update, Merge and Select   18.3.3
oic.cloudadapter.adapter.dbaasdatabase.batchInsertUpdateSelectMerge Oracle DBaaS Adapter - Operation On Table - Insert, Update, Merge and Select   18.3.3
oic.cloudadapter.adapter.dbaasdatabase.privateNetwork Allows direct connectivity with “No-SSL” and “No-Agent” – recommended for Private Networks only   ,19.3.1 March 2020
oic.cloudadapter.adapter.ebs.enableOpenInterface Support for Oracle E-Business Suite Open Interface Tables and Views in Oracle E-Business Suite adapter   18.4.1
oic.cloudadapter.adapter.erp.fileUpload File Upload functionality in ERP Adapter.   18.3.5
oic.cloudadapter.adapter.ftp.agent Allow FTP adapter to use agent A Simple Guide to Connect to a Private FTP Server using FTP adapter 19.32180
oic.cloudadapter.adapter.hcm.dataExtract Data Extract for HCM Adapter Configuring the Extract Bulk Data Option in an Integration 18.2.3
oic.cloudadapter.adapter.hcm.fileUpload File Upload functionality in HCM Adapter. HDL(HCM Dataloader)support in HCM cloud Adapter 18.3.5
oic.cloudadapter.adapter.mysqldatabase.batchInsertUpdateSelectMerge MySql Database Adapter - Operation On Table - Insert, Update, Merge and Select   18.3.3
oic.cloudadapter.adapter.netsuite.AsyncSupport Support for invoking Asynchronous methods in NetSuite A Simple Guide to Asynchronous calls using Netsuite Adapter 19.31520
oic.cloudadapter.adapter.netsuite.customfield-discovery Custom field discovery for Netsuite Adapter/td>   20.34310 March 2020
oic.cloudadapter.adapter.netsuite.customRecord CRUD and search support of custom record in Netsuite   18.4.1
oic.cloudadapter.adapter.netsuite.tba Token Based Authentication support in Netsuite Adapter   18.4.5
oic.cloudadapter.adapter.rest.inboundoctetstream Octet-Stream support for Rest Adapter Inbound support How To Configure an Integration flow with Binary Content Using Rest Adapter as Trigger in Oracle Integration 19.33390
oic.cloudadapter.adapter.rest.mvrp REST multiple resource support in inbound. How to use Pick action in OIC Orchestration 18.4.5 March 2020
oic.cloudadapter.adapter.rest_opa.inbound Enable inbound operation support in the Oracle Policy Automation adapter How to Integrate Oracle Policy Automation with Oracle Integration 19.31130
oic.cloudadapter.adapter.rest.awssignaturev4 Amazon Signature Version 4 Policy in Rest Adapter   19.2.1
oic.cloudadapter.adapter.rest.oauth10aPolicy OAuth for REST Adapter   18.1.5
oic.cloudadapter.adapter.rightnow.fileDownload Rightnow (Service Cloud) Adapter file download feature   18.1.5
oic.cloudadapter.adapter.rightnow.mtom.upload File upload as MTOM in Rightnow   19.2.1
oic.cloudadapter.adapter.rightnow.noSchema Design optimization for removing Design time artifact during runtime and generate new Runtime(RT) WSDL to improve performance   18.1.5
oic.cloudadapter.adapter.rightnow.queryCSV.Validation QueryCSV Validation is implicit query validation done by the system(ics) to check for normal syntax issues if user did not choose to Test Query button   18.1.5
oic.cloudadapter.adapter.soap.dynamicInvocation SOAP Dynamic Invocation   19.1.3
oic.cloudadapter.adapter.soap.enableMtom MTOM Support for SOAP Adapter   17.4.5
oic.cloudadapter.adapter.sqlserverdatabase.batchInsertUpdateSelectMerge SQL Server Database Adapter - Operation On Table - Insert, Update, Merge and Select   18.3.3
oic.cloudadapter.adapter.stagewrite.schema.generation Support JSON-ZIP-XML in stage file operations   19.2.3
oic.cloudadapter.adapter.utilities.wsdlupload Option to upload wsdl for inbound Utilities adapter   18.2.3 March 2020
oic.cloudadapter.adapters.aarpa Automation Anywhere Adapter   19.2.3
oic.cloudadapter.adapters.adwdatabase ADW Adapter   19.33490
oic.cloudadapter.adapters.apachekafka Apache Kafka Adapter   19.32560
oic.cloudadapter.adapters.atpdatabase Adapter for ATP CS OIC-integration-with-OracleATP 18.4.5
oic.cloudadapter.adapters.atpdatabase.privateNetwork ATP Adapter Private network   19.33290 March 2020
oic.cloudadapter.adapters.box New Adapter for Box Introducing the Box Adapter in Oracle Integration 19.31290
oic.cloudadapter.adapters.dbaasdatabase Oracle DBaaS Adapter   18.2.3
oic.cloudadapter.adapters.hcmsoapapis-ignore Ignore unsupported hcm soapapis for fa adapters Delisting of unsupported HCM SOAP APIs 19.31860
oic.cloudadapter.adapters.hybriscommerce SAP Commerce Cloud adapter   20.33910
oic.cloudadapter.adapters.mqjms New (JMS-based) Adapter for IBM MQ Series   19.30920
oic.cloudadapter.adapters.oraclehcmtbe Taleo Business Edition (TBE) Adapter   18.2.3
oic.cloudadapter.adapters.oraclemonetization Oracle Monetization cloud adapter   18.4.5
oic.cloudadapter.adapters.otac Oracle Talent Acquisition Cloud adapter   18.4.5
oic.cloudadapter.adapters.rest_opa Oracle Policy Automation Adapter   18.2.3
oic.cloudadapter.adapters.shopify Shopify Adapter   20.33350
oic.cloudadapter.adapters.slack Slack Adapter   19.32940
oic.cloudadapter.adapters.soaadapter New Adapter for Oracle SOA Suite/Service Bus (incl. support for SOA Cloud Service) How SOA Suite Adapter Can Help Leverage your On-premises Investments 19.30750
oic.cloudadapter.adapters.uipathrpa UI Path RPA Adapter   18.4.3
oic.cloudadapter.cloudsdk.zipcircularref Processing circular references in zip schema file   19.2.1
oic.cloudadapter.faadapter.custom-event Support for custom events in FA adapters   18.4.5
oic.cloudadapter.ftp.multilevelauth FTP Multi Level Authentication   19.2.3
oic.cloudadapter.sdk.enable.default.tls TLS version handling   18.4.5
oic.cloudadapter.sdk.return-owsm-ssl-policy-str Return owsm policy string   19.2.3 March 2020
oic.common.clone_service Allow cloning of an existing ICS or OIC instance

Docs for cloning an ICS instance into a new OIC instance.

Blog How to Migrate from ICS to OIC 

18.2.3
oic.common.clone_service.process Enables import/export for process artifacts   19.30010
oic.common.clone_service.sync_flow Clone service for synchronous flow   19.1.5
oic.ics.console.diagnostics.download-options Download options on ICS UI   19.1.5
oic.ics.console.diagnostics.oracle-litmus-support Litmus support for automated testing. How to use Asserter to create OIC Integration unit tests automatically and run them to catch regressions 18.2.5 March 2020
oic.ics.console.integration.inline-menu Allow user to add actions/trigger/invoke inline from canvas instead of drag and drop   18.3.1
oic.ics.console.integration.invoke.local.integration Integration calling integration activity How to invoke an Integration From another Integration in OIC without creating a connection 18.3.1 March 2020
oic.ics.console.integration.layout View integration as pseudo style layout. See How Easily You Can Switch Your Integration Views 18.3.1
oic.ics.console.integration.nested-try-scopes Allow user to create nested scopes A simple guide to use nested scope in orchestration 18.2.5
oic.ics.console.integration.throw-action Allow users to throw error in integration Working with Throw New Fault Activity 18.2.5
oic.ics.console.library.update Allow update of a registered library Update library in continuous manner even after being consumed by integration 19.30340
oic.ics.console.monitoring.dashboard.use-tracking-api-for-metrics Up-taking new tracking APIs for dashboard metrics   19.3.1
oic.ics.console.monitoring.tracking.filter.custom-date-range Filter by custom date range in Monitoring Custom time range filter for monitoring pages in OIC 19.2.1
oic.ics.console.monitoring.tracking.improved-activity-stream Improved activity stream UI Using the next generation Activity Stream 19.32180 March 2020
oic.ics.console.notification-attachment Allows user to add attachment to notification action How to send email with attachments in OIC 19.32001 March 2020
oic.ics.console.schedule.parameter-override-support Allows user to override the schedule parameters Overriding Schedule Parameters 18.2.3
oic.ics.console.schedule.use-scheduleparam-as-tracking-var Allow schedule parameter in business identifier dialog and use it as tracking variable Use schedule parameters as tracking variables 19.3.1
oic.ics.feature.new-version-check Control whether to use the new cversion based compatibility check or with old ICS version based compatibility check.   19.3.1
oic.ics.feature.parallel-for-each Support for Parallel For-Each   18.4.1 March 2020
oic.ics.mapper.encode-decode-on-files Base64 Encode/Decode for Files   18.1.3
oic.ics.monitoring.historicalMetrics.migration Historical metrics migration for OIC   19.2.3
oic.ics.stagefile.reference.processing Allow users to configure file reference in stagefile operations   18.3.3
oic.import.bulk.callback.event Support importing Bulk Data callback event   19.3.1
oic.intg.uiapi.integration-metadata-properties Support integration metadata and properties   20.34310 March 2020
oic.intg.uiapi.wait-action-in-seconds Allow user to define wait action in seconds   19.30750
oic.process.dt.customer-usage-email-notification Enables process to use notification   19.3.1
oic.process.dt.metrics.cache PCS projects metric cache   19.1.3
oic.process.form.externalui Enhanced integration with VBCS or other external UI   18.4.5 March 2020
oic.processdt.generic.microprocess Micro Process support in process for OIC   19.32000 March 2020
oic.processdt.generic.translation Translation editor support in process for OIC   19.32380 March 2020
oic.processrt.notify.comments Allow sending notification with comments   19.3.1 March 2020
oic.scheduler.throttle.adjust ESS support for auto-adjusting async throttling limit   19.30060 March 2020
oic.trigger.error.instance Creating failed instances in trigger   19.1.5

Join the discussion

Comments ( 2 )
  • AMIT SINGH Tuesday, October 16, 2018
    This is great.Do we have an updated version of the document.?
  • Antony Reynolds Sunday, March 31, 2019
    This document is updated on a regular basis, check the first line under the "Enabling the Future Today" title to see when it was last updated.
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.