Monday, May 17, 2021

#853 SOA Suite to OIC --> how easy is it?


This is the first in a series of posts addressing current SOA Suite customers interested in leveraging Oracle Integration Cloud.

We currently have many SOA Suite customers adopting OIC. This adoption can take different forms -

1. "Migrating" existing SOA composites to OIC -

Here we are essentially talking about re-implementing the existing SOA Suite composites in OIC. I have many customers doing this and doing it very well. One of them had ca. 200 integrations to implement in OIC. This work was done by a team of 2 developers over a period of 6 months - that is from initial development to production. 

2. Lift and Shift SOA Suite on-premise to SOA on OCI - Net new integrations implemented on OIC -

Think of the following scenario - customer is doing a lift and shift of E-Business Suite on-premise to Oracle Cloud Infrastructure (OCI). SOA Suite is heavily used so it makes sense to lift and shift this component as well. Customer then adopts a cloud based CRM and now has net new integration requirements in respect of, for example, opportunity to order between CRM and EBS.

3. Co-existence - Net new OIC integrations invoking SOA Suite processes via the OIC SOA Suite adapter and SOA Suite composites invoking OIC integrations.

This post, is, hopefully, the first of many on this theme. I begin with the simple BPEL process shown above and go deeper as we go along. The process is very simple - allowing me to insert an Order in the Database, via a SOAP interface.


The processing is essentially just an assign of the input values to the DB invoke parameters -

Before implementing this Synchronous Request/Response flow in OIC - let's look at some of the artefacts we can reuse -

For example, the service wsdl - ProcessOrder.wsdl - and it's xsds.

I zip up the wsdl and the xsds it references - note the reference to the xsd in the wsdl - it expects to find the xsd in the /Schemas folder. Now one could recreate this folder structure or else just amend the reference -


I then copy the referenced xsds into the same folder as the wsdl and then zip -

I now go to OIC and create the 2 connections I require, SOAP and Oracle Database.


I now need to upload my zipped wsdl - 

Test and Save - 

I now create the DB connection - 

I specify an agent group - this refers to the lightweight OIC connectivity agent I have already installed on the same network as the database. The agent contains the DB adapter and will use that to process  interactions with the DB, both design-time and runtime. For design time, consider the initial call to the DB to retrieve all the schema tables etc.

Now to creating the integration itself - OIC offers different integration styles/patterns - I choose app driven or this use case.


I add the SOAP Trigger - akin to BPEL Receive -

and configure as follows - 

My model now looks like this - 

I add the DB connection as follows - 

Drag, drop and configure -

Model now looks like this - 

I do the mapping - akin to BPEL Assign -

The Mapper works on different levels - 
1. simple drag and drop
2. developer mode - access to a host of functions/xslt constructs
3. full edit access to the underlying xslt generated

I use option 1 for this simple example - 

I now map the return value -

I still have 1 issue to be sorted, before I can deploy and test. Here I need to specify a tracking variable. This tracking variable can be used in the Monitoring UI to find the flows for specific orders.

I activate (deploy) the integration  -

I can then access the url - 

This I will use in SOAP UI -

The Response from OIC -

I check out the DB table - 

Here is the Monitoring UI - 

So how easy is it? 
Very easy!

Granted this was a simple example, but there are BPEL processes out there of this ilk.
Future posts on this subject will look at more complex flows. 

Monday, May 10, 2021

#852 OIC May 21 Release New Features - New Recipes - FTP to Netsuite File Cabinet

The May 21 release includes many new recipes - let's look at some of them - today - FTP to Netsuite File Cabinet. 

The use case here is very simple - I have files on an ftp server that need to be copied to a folder in the Netsuite File Cabinet. Many customers need to upload files, attach them to records and then organize them in the Netsuite File Cabinet. The example here, again, is very simple - but does provide the basis for more complex implementations.

The recipe is contained in the following package -   

The only pre-requisites for this recipe are -

  • FTP connection in OIC
  • Netsuite connection in OIC
  • Target folder created in the Netsuite File Cabinet
I have all the pre-reqs - my connections are called AA-FTP and AA-Netsuite.

My Netsuite connection uses the following wsdl url - it is important to use the v2019_1 version of the wsdl.

Once I import the recipe, I can start configuring - 

Step 1 - update the ftp and netsuite connections

This is very easy using the OIC Configuration editor - 

all I need to do is click the Replace icon.

So now let's look at the integration itself - 

Rudimentary error handling has also been implemented - 

Simple enough - gets the file from an ftp directory via the OIC ftp adapter.

Here is my ftp directory - 

The name of the directory/file is set as follows -

So let's look at the Integration Properties - 

I set the ftp directory value accordingly -

Now to the internalId value - this is the internal id of my Netsuite File Cabinet.

I created a new folder - id = 801

I update the relevant integration property with this value - 

That was it - I now copy a couple of files to the ftp directory -


I then activate and test the integration and see the following error -

Ok, so the role is specified in the Netsuite connection definition also needs this permission - so back to Netsuite - 


I re-test and then check the file cabinet in Netsuite - 

Now let's look at some other interesting fields, when creating the file -

attachFrom - valid values are _computer (for local files) or _web 

isPrivate - If you want to be the only person 
isOnline - If you want the file to be accessible externally - file will be accessible via an url.
owner - The owner of the file is a RecordRef , i.e. points to a Netsuite business object - 


I augment the recipe, by adding an explicit call to Netsuite in order to attach the file to my customer -

Here is the target payload for the Attach Invoke -

I will use the following customer - id - 16987

The File internal id source field - 

I delete the 2 files from the File Cabinet and re-test, then validate in Netsuite -
File have been attached to the customer.