The capability to ‘Invoke an Integration from another Integration’ is now GA – in other words, the ability to easily implement Modular Design is now GA.
This topic has already been covered some time ago here, but now the feature is GA, available to every OIC user, and it’s worthwhile a refresh!
What did it really change?
Before this feature, we could achieve the same result, but that would require to expose the desired Integration with a REST Trigger and we would need to create a Connection to enable calls to that Integration.
Now we can simply call the Integration and avoid the need to handle the Connection and the endpoint changes in different environments.
There is no need to configure the Connection in the Integration , where we would need to define request/response payloads, headers, parameters and many other settings available in the REST connector.
It is much more practical!
This is how it looks, we simply drag the Integration icon from the Actions Palette onto the canvas.
Why is this important?
Having the ability to call other Integrations allows us to divide parts of our work into smaller manageable blocks which gives flexibility and offers decoupling. Work re-usability is one of the most fundamental concepts in development.
Let’s see what Wikipedia has to say about modular design.
Modular design, or modularity in design, is an approach that subdivides a system into smaller parts called modules which can be independently created, modified, replaced or exchanged between different systems
A decoupled system allows changes to be made to any one system without having an effect on any other system.
Sounds about right to me!
Example Use Case
Recently I came across a use case that would benefit tremendously from this approach.
The customer I talked with, had a consolidated CRM (Oracle Engagement Cloud) that was synchronised with several legacy and on premise systems across several locations.
Let’s look to the synchronisation of Accounts. The activity CreateAccount can be complex, far beyond the actual API request CreateAccount. One may need to verify if the actual account already exists, and then decide to update an existing one or to create a new one. From a data modelling perspective, the entity Account can have many relationships – Contacts, Addresses, Child Accounts – etc – If we factor all of them, this can lead to a more complex set of steps to create/update an account.
It’s not important to delve on all the details, but just to understand that the activity CreateAccount has the potential to be complex.
Because the Customer’s on premise CRM’s had different interfaces, we had to create two different Integration workflows within OIC.
Best practices say that we should reuse the CreateAccount activity.
How to implement this?
For this use case, we need to implement an AppDriven Orchestration Integration called CreateAccount, with a REST trigger (so that it can be called from another integration).
As you can see below, in this Integration called CreateAccount_Demo we start with verifying if that account already exists in Engagement Cloud and then we decide if we create a new one or if we update an existing account.
Now we can create an AppDriven Orchestration (Or Scheduled) Integration that will connect to the on premise CRM’s. One will use the SAP adapter and the other the technology SOAP adapter and both will synchronise the accounts back to Oracle Engagement Cloud.
This diagram explains the result, where CreateAccount is used by both Integrations.
The ability to invoke an integration directly from within an integration is made possible with the Action: “Call Integration” as seen below.
Drag that icon onto the canvas and you will get a configuration Wizard.
Choose an appropriate Name and provide a Description.
All your Active Integrations of type Trigger are displayed.
The CreateAccount_Demo Integration only implements a POST operation.
In the end you would get something similar these Integration below, where the CreateAccount_Demo Integration is being reused by both Integrations with just a simple drag and drop ?
This is just an example use case of how this improved functionality could bring added value to your OIC implementation.
If you are interested in the new features already released please check the What’s New page!