Angelo Santagata's Blog

REST Enabling Oracle Fusion Sales Cloud using Java

Angelo Santagata

Oracle Fusion Sales Could (Rel7)
currently has a WebServices/SOAP interface however many clients & partners
are interested in accessing Oracle Fusion Sales Cloud using REST & JSON.
The main difference between a SOAP service and a REST service is the “way” you
get access to the data and methods you use. Whilst SOAP is very powerful, very
complete and also can be quite complex perhaps over-complex. REST in comparison is rather simple and
uses the http verbs (GET,POST,PUT etc) to define the operation and can be as
powerful as you desire.

There are many documents on the
web which discuss REST vs SOAP but in summary


Originally defined as Simple Object Access Protocol.

A protocol specification for exchanging
structured information in the implementation of Web Services in computer

An envelope, which defines what is in the
message and how to process it
A set of encoding rules for expressing instances
of application-defined datatypes
And a convention for representing procedure
calls and responses.

Relies on eXtensible Markup Language (XML)
as its message format, and usually relies on other Application Layer
protocols (most notably Remote Procedure Call (RPC) and HTTP) for message
negotiation and transmission.

This XML based protocol consists of three


RESTful web service (also called a RESTful
web API) is a simple web service implemented using HTTP and the principles of
REST. Such a web service can be thought about as a collection of resources.
The definition of such a web service can be thought of as comprising three

base URI for the web service, such as

MIME type of the data supported by the web service. This is often JSON, XML
or YAML but can be any other valid MIME type.

set of operations supported by the web service using HTTP methods (e.g.,


· http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services

· http://en.wikipedia.org/wiki/SOAP

Why would you
want to use REST instead of SOAP?

There are many reasons why one
would/could want to use REST instead of SOAP, one reasons is that SOAP is
considered too heavy-weight for mobile applications, where payload size is
critical, and also instead of XML, JSON is the preferred  message format.

The JSON message format is
also very appropriate when interfacing with systems that use JavaScript (such
as browsers or node.js) and hence adds weight to the desire to use REST instead
of SOAP for accessing Oracle Fusion Sales Cloud.

So getting to the matter at hand and getting RESTful

So enough of why REST , how does one do it for Oracle Sales Cloud (aka CRM). Thankfully this is rather straightforward, at Oracle OpenWorld 2013 you would have seen Thomas Kurian demonstrate our new Oracle SOA Suite and how it can transform a SOAP service into a REST service whilst this is excellent and incredibly productive some clients dont want to install SOA Suite soley for this purpose. Thankfully its possible to do the same using pure Java and deploy it to a cloud infrastructure, like the newly release Oracle Java Cloud Service. It is however worth noting that using SOA Suite is preferable because it accelerates the deployment tremendously and would ultimately be more "agile". 

So what are the basic steps to REST enable a Fusion Sales Cloud Service?  

  1. Download and install the Jersey REST libraries, we'll use these for the creation of the RESTful service
  2. Generate the SOAP Client Side Proxie(s) for Oracle Sales Cloud. In this example we're using static proxies however for a more industrialized approach Id recommend going down the dynamic proxy route, more flexible and less likely to break at runtime, however at a development cost.
  3. Create "wrapper" JAXB Objects so that you can return XML data. This is needed because the baseline SOAP clients dont have @RootElement  (s) defined.
  4. Create the RESTful project and expose the services you require.
  5. Deploy to your runtime Java contain, like the Oracle Java Cloud Service
  6. Consume by your favourite client, like a mobile phone etc 

For the purpose of the tutorial (in the document), I've documented step by step how you can build the above, query Oracle Fusion Sales Cloud, manage security  (for development & production) and how to deploy the code to the Oracle Java Cloud. Obviously take note that this document is more of a tutorial than anything else when building your own custom REST Adaptor you would tailor it specifically to what services your client (mobile phone, javascript widget etc) requires.

Happy reading



This document and source code is sample code and assumes no support from Oracle Corporation or myself. 

Join the discussion

Comments ( 7 )
  • Jim Lange Wednesday, October 2, 2013

    Resource links don't work. I'd like to get a copy of your document.

    Jim Lange


  • angelo Santagata Monday, October 7, 2013

    Links corrected, sorry it took so long, I was on holiday

  • Paula Tuesday, December 10, 2013

    Great Job!

  • MB.Manie Wednesday, January 8, 2014

    It is wonderful to see someone who documents thoroughly when they post their knowledge. Awesome!

  • Angelo Santagata Wednesday, January 8, 2014

    Tis a pleasure, Many thanks!

  • Mohamed Thursday, October 2, 2014

    according to the solution showed by the diagram above

    what is the benefit of using both REST and soap together and having the complexity and weight of soap along with REST feature.

    aren't we adding more weight to the integration cycle ?

  • angelo santagata Thursday, October 2, 2014

    Hi Mohamad,

    The solution above is aimed to solve the problem that oracle sales cloud does not (yet) support REST. When integrating with devices like mobile phones SOAP is a big no no (too fat and heavy), whereas REST/JSON is perfect. The solution above shows how to create a facade which meets your app needs and nothing more..

    Recently the ateam@Oracle posted a nice article on creating efficient rest facades using OSB instead of pure Java.


Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.