Thursday, January 14, 2016

#470 ICS --> Content Based Routing

FYI:
Content Based Routing for Asynchronous Source will be supported very soon.
Content Based Routing is not supported for Fire and Forget pattern yet.

Simple scenario here


ICS gets a request to retrieve customer details from on-prem DB.
Customer is classed as either domestic or foreign.
Requests for domestic customer details have to be routed to the domestic customer DB.
Requests for foreign customer details have to be routed to the foreign customer DB.

The custId of domestic customers always begins with 1.
The custId of foreign customers never begins with 1.

So you get the idea?

I have 2 DB tables -













These are essentially my 2 databases.

My integration looks as follows -














You see the icons representing the routing?
Here they are -






You can make out some of the routing condition I entered?
I use the string function starts-with

Here I check if the incoming custId starts with 1.
If so, I route to the "domestic DB".

Otherwise the request goes to the "foreign DB".

Here you see the icon to configure routing.













Here is the filter condition -

















Once this node is selected in the upper routing pane, we configure/edit the Target.
















Select the other node and you can do the same.


Full Example

Here is another of my integrations -










Here a customer input is mapped to an Oracle Sales Cloud contact.
I want to add a routing to my DB as well.
We can apply the same routing logic as above -

Here I check if the incoming custId starts with 1.
If so, I route to Sales Cloud.
Otherwise the request goes to the DB.

You can see the funnel icon on the request message line.
I click on this to begin -












I enter the Expression Builder -






























On the left we have the incoming message - the source.
Also the Components palette.






































With these I can build my expression.





Click on the Routing Drawer to configure Routing.





























The Conditional path is active and it defaults to the OSC target.

Now I need to specify the alternative route or path.

I click on the bullseye icon to make it active -













So now I just drop my DB adapter as the Target and
configure accordingly.














and the rest is just plain sailing...

#469 ICS DB Adapter Part 2

Here I have a simple integration that saves a customer to an on-prem DB.























The mapping is simple -







I deploy and test -












No response, as this is fire and forget.

I check in the on-prem DB -


#468 ICS --> Oracle DB Adapter

In this post I show how to leverage the new on-prem Oracle DB adapter on ICS.

Communication between ICS and the on-prem DB is via the ICS Connectivity Agent.

The ICS Connectivity Agent setup is covered in a previous post.
You can read it here

I have an XE DB running On-Prem.
I have a user - Niall and a DB Table - Customer








I create the DB connection in ICS using the new DB Adapter.















Here is the configuration of that connection.
As you can see, it requires more detail as a SaaS connection.

























note the Host entry above.

I also need to specify which Connectivity Agent I will be using.
I do this by specifying the Agent Group.

























My on-prem agent, running on the same environment as my on-prem DB, is a
member of this Agent Group.












Here is my simple Integration -







My Source is based on an abstract wsdl I created.
This contains an operation retrieveCustomer -






The input/output is as follows -



























The Target is leveraging the DB adapter -














note the syntax above - Check out the full DB Adapter doc here

My mapping is simple -

Request Mapping -





Response Mapping -








I deploy and test the integration.

Here is the result in SOAP-UI
left pane - request
right pane -response from my on--prem DB.


Here is the Tracking in ICS -










Monday, January 11, 2016

#467 ICS - Abstract WSDL example

Simple use case here -

I want a web service interface to an ICS integration that accepts a Customer object.
This is then mapped to a Oracle Sales Cloud Contact.









Here is my abstract WSDL







































I create a new SOAP connection in ICS -










Security: No need to specify username  / password.















I then leverage this in an Integration as the source -

















I use my Sales Cloud connection as the target.
I do the mapping of Customer to Contact and then Activate.

Test -
















I have returned the Sales Cloud Party Id.

I check in Sales Cloud



















Tuesday, January 5, 2016

#466 ICS 15.4.5 New Features - Connectivity Agent




















So what are agents?

According to the ORCL doc -

You must create an agent group and install the on-premises agent before you can create an integration in which messages are exchanges between your on-premises applications and Oracle Integration Cloud Service.

So now we have agents and agent groups as well, so time to explain -

An ICS connectivity agent will need to be installed on-premise and this will belong to the
agent group, i.e. an agent group can contain one or more agents. This is useful for loadbalancing, scalability etc.

So what does the agent do and how does the actual communication work?
Say I have a scenario where I need to integrate Sales Cloud and Siebel on-premise.

Here it is at a high level -

The agent is installed and running on the internal on-premise network.

The agent then establishes a secure communications tunnel to ICS. 

This allows ICS to send messages
(e.g. call the Siebel createNewOrder service with the following payload)  
via the secure tunnel to the on-premise agent.

The Siebel on-prem adapter has been installed as part of the on-prem agent and executes the service call to Siebel, thus completing the integration.

Installing the connectivity agent


Read from the horse's mouth here


In ICS, I click on the Agents icon and then do the following -

1. Create an Agent Group































Edit allows us to change name, description etc.

2. Download the Connectivity Agent installer.


















chmod -x on this file.
Then execute the following command -

./cloud-connectivity-agent-installer.bsx —h=https://yourICSInstance:443 —u=yourICSUser —p=yourICSPwd —ad=yourAgentGroupIdentifier –ph=yourProxyServer(if any) –pp=yourProxyServerPort(if any)

for the AgentGroup you use the Identifier value, e.g. NCTESTAGENTGROUP and NOT NCTestAgentGroup.

Once executed, you will see that the following files have been created -










So this agent is actually composed of a Weblogic+JRF domain + Java DB.
The adapters will also be deployed to this domain.

First, Weblogic will be automatically installed.












Then JavaDB -







Note, above we see registrationStatus = SUCCESS.
I login in to my ICS Instance and look at the agent group.
The on-prem agent has been registered in this group.
























SOABPM-VM is my linux host name.

One can log in to the weblogic server and see that the agent and the
on-prem adapters have been deployed -





















So how does the on-prem agent communicate with ICS?
Looking at the following .properties file will give us an idea.






I have deleted some of the values in the screenshot below!













But, as you can see, communication is via omcs (Oracle Messaging Cloud Service).
So the on-prem agent essentially polls the relevant omcs instance for its messages, and pushes
responses back to omcs.

Analogue to this, there is a cloud based agent, delivered with your ICS instance, which essentially does the same.

A very succinct solution for hybrid integrations.