Because things in IT change fast, it’s sometimes difficult to distinguish the important trends from the less important. And that’s true for Oracle as well. It’s not that long ago when Oracle CEO Larry Elisson thought of Cloud Computing as just another short-living fashion trend (great audio by the way). But that began to change soon. And at least since Oracle OpenWorld 2015 we know for sure how serious Oracle became about Cloud Computing.
“The computer industry is the only industry that is more fashion-driven than women’s fashion.” – Larry Ellison, chairman, Oracle
Today, Oracle’s stack on the Cloud is complete. From infrastructure as a service (IaaS) to software as a service (SaaS) there is everything. But especially with all those wonderful SaaS products being available (and probably being used by your line of businesses) new challenges arise: How to keep all the data residing in those applications in sync? In other words: How to integrate those products? A neat way to address this is the Oracle Integration Cloud Service (ICS) which I would like to introduce to you in this blog post.
Besides ICS I’m also going to mention two other integration services provided by Oracle namely SOA Suite Cloud Service (SSCS) and Process Cloud Service (PCS). Though for this blog post I won’t go into much detail there.
Integration Cloud Service
The main reason to use Oracle ICS is to map and synchronize data between all different kinds of SaaS applications. For example, you might use Salesforce as your primary CRM application but another one for ERP activities such as order and invoice tracking. In such a case, if a new customer is created in Salesforce it should be created in the ERP application as well – automatically and immediately.
The attentive reader might be wondering whether Oracle ICS is limited to cloud integrations. The answer is no. Hybrid integrations are supported as well but more on this later.
Based on the main menu, functionality in ICS is organized into four main views: home page, designer portal, monitoring (dashboard) and administration. Before going into detail of monitoring functionality and administration, let’s have a look at the Designer.
As you can see, the designer portal in turn is organized into five views: Integrations, Connections, Lookups, Packages and Agents. You might notice as well how clear and simple the UI appears. That clearly indicates the target audience of ICS: not only developers and IT but LOB users as well.
As the UI suggests, let’s begin with connections. Each connection is based on one of the predefined adapters being available within ICS. Adapters exist for all kinds of SaaS applications (not only for those from Oracle) as well as for generic industry standards such as SOAP and REST. In other words, a connection is an adapter coupled with information required by the adapter to connect to a specific instance of the adapter’s underlying application. That data might include security credentials and a WSDL URL. You can create and configure a connection by clicking the button labelled “Create New Connection”.
Once created, the UI organizes all connections into several lists namely “All”, “Draft” and “Configured”. A connection appears in the “Configured” list only if its configuration status is showing 100 %. Using the search input field users can filter the list of connections by name or change sorting by choosing another criterion from the drop down list located next to the search input field. That UI layout and functionality I just described for the connections is very similar for all the other Designer components which is why I’m not going to describe it again for each of the following components.
Once some connections were successfully created it’s time to create integrations based on those connections. This is done by clicking the “Create New Integration” button on the Integrations page. The user now has to choose one of the supported integration patterns: Map my Data, publish to ICS and subscribe to ICS. Next, the user is requested to enter some basic information properties for the new integration such as a name, identifier and version. Clicking the “Create” button closes the dialog and loads the Integration Designer which might look a bit different based on the integration pattern selected previously. With that said, the following section describes the Map my Data pattern. To learn more about the publish/subscribe pattern, I’d like to refer you to the Oracle documentation.
At that point the Integration Designer shows a canvas visualizing the connection and a panel next to it listing the connections created previously. At the beginning the canvas shows two placeholders. One on the left hand side for the trigger (source) connection and one on the right hand side for the invoke (target) connection. The user is supposed to simply drag and drop connections from the panel to the placeholders. Doing that invokes a wizard dialog which firstly collects basic information properties such as a name and a description for the endpoint being created. Second, the wizard collects some adapter-specific information such as the business objects to be received or sent. Business objects might be ‘Account’, ‘Invoice’ or ‘Employee’. Note that the availability of business objects depends on the Adapter/WSDL file. Finishing the wizard results in the connection being displayed as a trigger or invoke along with some arrows outlining the message flow.
Also note how those concepts of wizard dialog/UI, operations and business objects hide away a lot of complexity such as session management, security or the whole WSDL file. That way, users can focus on the business logic of their integration. Once both placeholders on the canvas were replaced with connections the last step is to map data between those two connections. This is done by clicking the Mapper icon in the middle of the canvas. Another click on “Create” will bring up the Mapper.
The Mapper shows two panels. One for the source message types (left-hand side) and one for the target message types. In both panels, fields are organized into trees which allow you to collapse or expand all or parts of a tree. The mapping of fields itself is done by drag and drop. Drag a field from the source panel and drop it onto one of the fields of the target message structure. A successful mapping is then indicated by two green ticks next to the fields and a green line between them.
Depending on the message structure it’s possible to create for-each statements via drag and drop as well. To manually perform more complex data manipulations, click on any target field to open the Mapping Generator. The panel on the left hand side provides a list of XSL functions and XPath functions as well as access to the source message fields and variables. Those elements are dropped onto the previously selected target field (canvas on the right) to build a mapping as needed.
In general, mappings must be created for the request and response message flows. A mapping for the fault flow is optional.
For the integration to be considered complete, the one task that is left is specifying tracking fields. As the name implies, those fields are used to track messages at runtime. Note that though you can declare up to three tracking fields only one is required. At runtime the payload of those tracking fields can be investigated using the monitoring page.
After saving the integration and closing the integration designer the progress indicator shows 100% in which case the integration can be activated. To summarize the previous sections, an integration is eligible for activation if all of the following things have been specified:
- Source connection
- Target connection
- Data mappings
- Tracking fields
In addition to what was described above, Oracle ICS is capable of enrichments, lookups and packaging. Enrichments can be used to enrich business objects before applying the mapping. For example, to request an entity’s ID from the target application by matching a string value. Lookups are static tables used in mappings to map different terms or codes that describe the same thing. They are also known as Domain Value Maps (DVM). One use case for lookups would be currency codes. Last but not least, packages can be used to group one or more integrations. This accelerates the export and import of integrations as packages can be exported and imported as well.
Please bear with me that for now I won’t go into detail of monitoring and administration. Instead, I would like to draw your attention to another aspect of Cloud Integration: Hybrid Integration.
As mentioned before, Oracle’s ICS can be used to but is not limited to set up integrations between SaaS applications. It got support for hybrid integration scenarios as well: either from an on premise application to another SaaS application or the other way round. To set up such a scenario, an agent is required to be installed on-premises. That agent is provided by ICS and needs to be installed into the DMZ of your company’s network. The connectivity agent uses HTTPS (port 443) for communication with ICS. Further note that communication is always initiated from the agent on premise upstream to ICS e.g. the agent is polling for new messages.
ICS, SSCS and PCS
As you may know, besides ICS Oracle offers at least two more cloud integration products: SOA Suite Cloud Service (SSCS) and Process Cloud Service (PCS). For that reason, I’d like to help you in differentiating the three of them.
Whereas ICS is especially suited for simple data mappings, you’d be better off using SSCS for complex integration scenarios e.g. those that require intense service orchestration. Also if a comprehensive tool set is required such as ESB, B2B or developer tools, SSCS is the way to go. On the other hand, PCS is targeting process automation and scenarios that involve human workflows.
Besides functionality you can take the target audience into account as well. Whereas SSCS is targeting developers, ICS and PCS were designed for business users and power users respectively.
This should give you a rough idea of how Oracle ICS works. What I didn’t cover in detail was the publish/subscribe pattern, monitoring and administration. Also many of the functions provided by the Mapper were not described in detail. Furthermore, please keep in mind that Oracle ICS is still under development which means new functionality will be added in further releases.