Tuesday, February 17, 2015

Integrate OSB with Oracle MFT

Recently, I had an opportunity to work with a customer on MFT integration with OSB.

Some pain points were;
1) Ever-increasing FTP servers across their enterprise which was increasingly becoming tough to manage and maintain.
2) Custom code for compression/decompression logic before/after file transfers
3) Bunch of third-party utilities for scheduling file transfers
4) Java code exposed as API for PGP encryption/decryption

Obviously they had a lot of integration touch-points while putting together a file transfer solution - which also meant multiple points of failure and not to mention the maintenance/debugging nightmare if something were to go wrong.

One of the cool features of Oracle MFT is that it supports out-of-the-box integration with many technologies including OSB. For many OSB users, the following could be some of the use-cases where they could take advantage of MFT and reap benefits;

Traditional OSB implementations used File/FTP adapters for file transfers - No real visibility into the transfers and not the best of designs to manage/maintain.

With Oracle MFT exposed as a webservice it is now just a seamless webservice invocation - with the added benefits such as real-time visibility, OOTB scheduling, Compression, PGP encryption, ease of maintenance to name a few..

Use-Case 1: OSB triggers a MFT transfer

In this use-case OSB would trigger a MFT transfer. MFT would then fan-out the transfer;
a) Decompress, Decrypt and store in file system
b) Initiate a SOA process to do further processing (human task etc..)

Creating a MFT Source:

Step 1: Login to Oracle MFT console (http://hostname:port/mftconsole)

Step 2: Go to the Design tab. Click on the Sources and create a new OSB source as shown below;

Creating a MFT Target:

Step 3: Now, click on the Targets and create a new MFT target (This can be a webservice, SOA service, FTP, sFTP, File etc..).
In this case, we would be creating 2 targets - one SOA target and a File target as shown below;

Note: For the SOA target - I just created a simple SOA composite with MFT adapter...

Now. let's create a Transfer - nothing more than linking the source & target on a canvas.

Step 4: Click on the Transfers and create a new MFT. In the MFT canvas, drag and drop the OSBSrc to the source panel. Similarly, drag and drop the OrderSOATarget & PutFile targets to the target panel. Note that "decompress" and "decrypt" pre-processing actions are added to the targets. These are out-of-the-box capabilities that you can leverage with Oracle MFT.

That's all. Now just define a business service in OSB as usual that will trigger the transfer in Oracle MFT. You can obtain the MFT (OSBSrc) source webservice URL by just opening the source.

Use-Case 2: Oracle MFT invokes OSB proxy service

Here we will pick a file from the embedded FTP server (FTP & sFTP servers are embedded and comes out-of-the-box with Oracle MFT), and invoke a OSB target.

Step 1: Click on Sources and create a new source of type "FTP Embedded" as shown below;

Step 2: Click on Targets and create a new target of type "OSB" as shown below

Step 3: Click on the Transfers and create a new MFT. In the MFT canvas, drag and drop the FileSrc to the source panel. Similarly, drag and drop the OSBTgt to the target panel

Done. Now, let's see how to create a OSB proxy service that will consume the MFT transfer.

Step 4: Login to OSB console. Create a proxy service based on the WSDL available @ $FMW_Home/mft/integration/wsdl/MFTSOAService.wsdl (While source/target type is chosen as OSB or SOA, MFT exposes the web service based on this WSDL contract)

Note: Ensure that the proxy service URL and the MFT OSBTgt URL matches.

As easy as that.

Sunday, January 25, 2015

Oracle MFT - The Managed File Transfer

With the 12c release for Fusion Middleware, Oracle released the long-awaited, feature-rich managed file transfer solution titled Oracle MFT. At the outset, some key value propositions of this product are;

  1. Extremely Simple to use, build & configure
  2. End-to-End visibility on file transfers
  3. As with any other Oracle FMW stack of products, seamless integration options
  4. High Availability MFT (leveraging WebLogic capabilities)
  5. Highly Secure (Leverage WLS OPSS instead of typical FTP OS layer security)
  6. OOTB embedded FTP & sFTP servers (Those of you looking to consolidate on ever increasing FTP & sFTP servers in your enterprise...)
  7. Automate File Transfers using the built-in Enterprise Scheduler Service (ESS)
  8. Transfer very large files (pass-by-reference) - limited only by disk space and network speed
  9. Fan-out, chaining and custom callouts

Having worked with quite a few customers on this new Oracle technology, I can certainly tell that these features have generated a huge interest. Prior to Oracle MFT, it was really hard to find a product that could achieve all of the above requirements...

Let's delve little deep into these points...

Extreme Simplicity

No IDE to design/configure transfers.
Business user friendly unified web-based, highly intuitive graphical interface for design, monitoring & administration of all your file transfers.
Zero learning curve.

To create a transfer -> Just create your source and target - drag & drop them in the transfer canvas. You are good to go !! Incredibly, it's that simple...

Free-up developers: really? Yes.
How many times have you configured the cumbersome back-end scheduler jobs?
How many technical resources you hired/trained on various scripting languages just to manage and handle file transfers?
End-to-End Visibility

MFT console offers out-of-the-box monitoring dashboards with drill-down capabilities. Users can monitor overall file transfer metrics such as;

  • Most Active Transfers
  • Average, Min & Max Payload size, Transfer Speeds & Transfer Time
  • Recent Errors/Failure Ratio
  • Advanced File Search - based on file name, date, user, status etc..

You can also monitor a single file transfer instance graphically with fine grained details on the transfer. Additionally, Oracle MFT provides "Resubmit" option where users can resubmit a file transfer from various stages (Source, Transfer or Target).


Oracle MFT provides OOTB integration with the following source/target types in the current release. Obviously many more are coming in...
  • FTP Embedded (Read/Write from/to the embedded FTP server)
  • sFTP Embedded (Read/Write from/to the embedded sFTP server)
  • FTP Remote (Read/Write from/to a remote FTP server)
  • sFTP Remote (Read/Write from/to a remote sFTP server)
  • File (Read/Write from/to the shared file storage)
  • SOAP (Send/Receive to/from a SOAP based web service)
  • SOA (Send/Receive to/from a SOA composite) - SOA 12c provides an MFT adapter. Optionally, you can also connect to a SOA/OSB 11g instance through webservice
  • Service Bus (Send/Receive to/from an OSB proxy/business service)
  • B2B (Connect to a B2B with MFT as a channel)
  • Healthcare (Connect to Healthcare HL7)
  • ODI (Connect to Oracle Data Integrator)

High Availability

Oracle MFT runs on Oracle WebLogic 12c and can be clustered. This provides organizations with an HA MFT capability. Oracle MFT also ships with an MFT proxy server that resides outside the firewall to redirect external requests.

Highly Secure

Since MFT runs on WebLogic, it leverages Oracle WebLogic OPSS.
What this means is that: all your FTP/sFTP users in your LDAP can now connect to MFT (obviously the access rights can be managed through the MFT console).

In stark contrasts to traditional FTP/sFTP servers, you don't have to create OS level users & manage access privileges. Optionally, for each transfer, you can configure Oracle MFT to allow access to payload only to specific users/groups.

In additions to these capabilities, users can leverage out-of-the-box compression, decompression, PGP encyption & decryption capabilities of Oracle MFT.


Many customers have very less control on FTP & sFTP server proliferation across their enterprise. More often than not, IT doesn't have full control / visibility on administration & management of the FTP servers. Oracle MFT with its embedded FTP & sFTP server clearly helps with consolidation of FTP/sFTP servers.

This not only reduces TCO tangibly, but also brings down significant costs associated with administration/management efforts.

Automate & Schedule Transfers

How many scheduling software tools do you have in your enterprise?
How difficult is it to integrate your scheduler with file transfers?
How much time & effort does your IT/development spend in configuring/scripting of scheduler services?
How much visibility does it offer?


What if; you have one comprehensive & highly customizable enterprise scheduler service which is tightly integrated with all your file transfers, is extremely easy to configure/schedule through GUI and provides end-to-end visibility through a console?

With Oracle Enterprise Scheduler Service (ESS) now being a first-class citizen & tightly integrated, Oracle MFT just does that.

Large File Transfers

Oracle MFT supports file pass-by-reference. This means that your SOAP services do not have to pass file to your webservice inline if it beyond a certain size - configurable while designing the transfer. Oracle MFT also provides out-of-the-box compression & decompression capabilities. Using custom actions you can also batch/de-batch large files for fast processing.

Fan-out, Chaining & custom callout

Oracle MFT supports fan-out: which means it can send files to multiple targets simultaneously. Also another cool feature if MFT process chaining. You can chain multiple MFT transfers where one MFT transfer can be another MFT's source.

Additionally, Oracle MFT also supports custom callouts. This allows POJOs to be executed at source and target (pre/post process).

Ready for a happy file transfer with Oracle MFT? Let me know your feedback in the comments section :)

Friday, May 30, 2014

Installing OER 11g on an existing SOA 11g domain

In this blog post, I will provide detailed step-by-step instructions to install OER 11g ( on an existing SOA domain.

Pre-Requisites: SOA 11g installed and domain configured. I used version (latest version as on date of writing this post)

You can choose to have a single server install where AdminServer doubles up as SOA server or have 2 managed servers (Admin & SOA) on your domain. You will have to install OER as a separate managed server. I personally couldn't succeed with a OER single server install (Admin + SOA + OER on the same managed server).

Installing OER

Step 1: Connect to the database on your server as SYS user and execute the following scripts. This step is an important pre-requisite as it creates the tablespace and schema to store OER asset/artifact metadata

Note: Ensure that the path to DATAFILE parameter exists

Create Tablespaces:

    DATAFILE '/u01/app/oracle/oradata/XE/oer_data.dbf' SIZE 300M

    DATAFILE '/u01/app/oracle/oradata/XE/oer_lob.dbf' SIZE 300M

    DATAFILE '/u01/app/oracle/oradata/XE/oer_index.dbf' SIZE 300M

Create OER Schema:

Apply Grants:


Step 2:
Download the appropriate installer for your server. If you are on a 64-bit machine, irrespective of whether it is Windows or Linux, you can choose to download the generic installer.

Unzip the file into a server location

Step 3:
Ensure java is on your environment PATH variable and execute the following command

java -D64 -jar OER111170_generic.jar

Step 4:
In the welcome screen of the OER installer, click Next

Step 5:
Choose your existing FMW home (in this case your home directory where SOA is installed - Since we are installing OER on the same domain as SOA) and click Next

Step 6:
Validate the Oracle Enterprise Repository install location and click Next

Step 7:
Choose WebLogic Server 11 in the "Choose Application Server" dialog and click Next

Step 8:
In the "Initialize Repository Properties" screen, enter the following values and click Next

OER managed server port number: 7101 (default, but you can choose to change it here)
Fully qualified server name: Enter the fully qualified server hostname
Repository application name: oer

Step 9:
In the "Configure Database" screen, choose Yes to configure the database for OER and click Next

Step 10:
Enter the following values in the "Provide Database Tablespace Names" screen

Data tablespace: oer_data
BLOB tablespace: oer_lob
Index tablespace: oer_index

Step 11:
In the "Initialize Repository Database Properties" browse for the ojdbc6.jar driver file - This file can be found at the database installation location: <DB_Home>/jdbc/lib

Provide the DBMS (SID) name, host, port and OER username and password and click Next

Step 12:
You must now see a successful installation message.

Extend SOA Domain to host OER

Step 13:
Go to <Middleware_Home>/wlserver_10.3/common/bin and execute

Step 14:
In the "Configuration Wizard" home screen, choose the option "Extend an existing WebLogic domain" and click Next

Step 15:
Choose your WebLogic domain where SOA suite is installed

Step 16:
Scroll down the list of products, select Oracle Enterprise Repository - from the list and click Next

Step 17:
Leave defaults and click Next in the following screens until you reach the "Select Optional Configuration" page

Step 18:
In the "Select Optional Configuration" screen, select "Managed Servers, Clusters and Machines" option and click Next

Step 19:
Leave defaults in the following screens and in the Configuration Summary page, click on "Extend"

You must see "Domain Extension Applied Successfully" message

Now that your domain has been extended, the domain configuration corrupts a few configuration settings that prevents a successful server startup. Follow the instructions below to get OER started successfully.

Observation 1:

I observed that the UMSJMSSystemResource-jms.xml presents duplicate entries which prevents a successful server startup. To resolve this, go to <Domain_Home>/config/jms folder and check and remove the duplicate entries as highlighted below. [Note: Take a backup of this file]

<queue name="OraSDPM/Queues/OraSDPMEngineCmdQ_auto_3">
  <queue name="OraSDPM/Queues/OraSDPMEngineSndQ1_auto_3">
  <queue name="OraSDPM/Queues/OraSDPMEngineRcvQ1_auto_3">
  <queue name="OraSDPM/Queues/OraSDPMDriverDefSndQ1_auto_3">
  <queue name="OraSDPM/Queues/OraSDPMAppDefRcvQ1_auto_3">
  <queue name="OraSDPM/Queues/OraSDPMWSRcvQ1_auto_3">

Observation 2:

The memory setting of your SOA domain would be affected because the script gets called every time. Sophisticated way of handling this would be at the where you can validate the $SERVER_NAME and configure the USER_MEM_ARGS for each Managed Server appropriately. Else, just increase the USER_MEM_ARGS in the script.

Now, you are all set to start your OER server and start SOA Governance !!

Saturday, March 1, 2014

JDeveloper Deployment to SSL Configured WebLogic (SSL Handshake Failure)

If you have configured SSL keystore on your WebLogic application server, you might face SSL Handshake error while trying to deploy any application from Oracle JDeveloper.

To overcome this issue, download the SSL certificate and import it to your JDeveloper java keystore.

1. Open your browser and establish an SSL connection to your server. For eg., https://hostname:port/console

2. Click on the green padlock sign -> Connection tab and click on Certificate Information

3. In the Certificate dialog, click on "Copy to File.."

4. In the resulting "Certificate Export Wizard", choose Next

5. Leave the default selection (DER encoded binary X.509) and click Next

6. Provide a filename where the certificate file will be exported and saved

Import certificate into the Java keystore: [Ensure that this is the java that JDeveloper points at]

1. Open command prompt, go to <Java_Home>\jre\bin

2. Issue the following command to import the server SSL certificate to java keystore for successful handshake;

keytool -import -v -file C:\Temp\root.cer -keypass password -keystore C:\Java\jdk6u33\jre\lib\security\cacerts -alias mykey

3. When prompted, provide the keystore password [Default password is changeit]

Voila, now you are all set to deploy applications from JDeveloper !!

OSR on OER/SOA/OSB domain - QName violates loader constraints

Recently i had installed OSR on the same domain where my SOA, OSB and OER co-exists. While starting the OSR managed server, I faced the following error;

<Error> <HTTP> <> <osr_server1> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>>
<BEA-101017> <[ServletContext@470316600[app:registry module:registry.war path:/registry spec-version:null]] Root cause of ServletException.
java.lang.LinkageError: Class javax/xml/namespace/QName violates loader constraints
at com.idoox.wsdl.extensions.PopulatedExtensionRegistry.(
at com.idoox.wsdl.factory.WSDLFactoryImpl.newDefinition(
at com.idoox.wsdl.xml.WSDLReaderImpl.parseDefinitions(
at com.idoox.wsdl.xml.WSDLReaderImpl.readWSDL(
at com.idoox.wsdl.xml.WSDLReaderImpl.readWSDL(
at com.idoox.wsdl.xml.WSDLReaderImpl.readWSDL(
at com.idoox.wsdl.util.WSDLUtil.readWSDL(

This blog here helped me get rid of the error.

Saturday, February 8, 2014

BPM Workspace/Composer Login Error ORABPEL-10585

If you are facing trouble logging into BPM workspace or composer, this post could help save you some time.

First check if the error message in your SOA managed server diagnostic log after the failed login is the following; Operation exception.
at oracle.bpm.papi.ora.mgr.OrganizationManager.lookupParticipant(
at oracle.bpm.papi.ora.mgr.OrganizationManager.lookupParticipant(
Caused by: fuego.papi.OperationException: Operation exception.
... 69 more
Caused by: ORABPEL-10585

Service error.
Internal Error; Service error occurs in IdentityService in method lookupUser.
Refer to the log file that is configured for for more details on this error and contact Oracle Support Services

If this is not the error in your logs, you may look at the blog post here for other options to see if that helps resolve your problem.

Now, let us look at the fix.

1. Login to the EM (Enterprise Manager) console
2. Expand SOA and Right click on soa-infra
3. Goto Administration -> System MBean Browser
4. Minimize the tree structure (com.bea) to view Application Defined MBeans section
5. Expand -
> Server:SOAServerName -> SoaInfraConfig
6. Select soa-infra
7. Update the property ServerURL with a valid URL [Ensure that the hostname here matches your environment hostname. Tip: It should be same as the front end host]

eg., http://hostname:port
8. Click on Apply

Restart your SOA managed server. You should now be able to successfully login to your BPM Workspace or Composer

Sunday, November 24, 2013

Deploying Jersey (JAX-RS) RESTful Web Services on WebLogic Server

If you have to deploy a Jersey based RESTful web service on WebLogic server, you will have to deploy the jersey library on the WebLogic server and reference it from your weblogic.xml descriptor file.

WebLogic 11g comes bundled with Jersey library but we have to explicitly deploy & make it available for consumption. Use the following command to deploy the Jersey library on your WebLogic server;

java -classpath <Middleware_Home>/wlserver_10.3/server/lib/weblogic.jar weblogic.Deployer -verbose -noexit -source <Middleware_Home>/wlserver_10.3/common/deployable-libraries/jersey-bundle-1.9.war -targets AdminServer -adminurl t3://localhost:7001 -user weblogic -password xxxxxx -deploy -library

This command would invoke the weblogic.Deployer which will deploy the Jersey bundle library as a shared library on your WebLogic server.

Now, all we need to do is to reference this library from the RESTful webservice application via weblogic.xml

<?xml version = '1.0' encoding = 'windows-1252'?>
<weblogic-web-app xmlns="">

Now, you can deploy your Jersey based RESTful webservice on WebLogic server.