Skip navigation.

Angelo Santagata

Syndicate content
Fusion Middleware / Cloud Integration Architect - If its middleware, or PaaS for SaaS, then I'm interested!
Updated: 3 hours 37 min ago

How to use the Oracle Sales Cloud New Simplified WebServices API

Fri, 2014-11-14 04:05

Over the last two years my organisation has been working with multiple partners helping them create partner integrations and showing them how to use the variety of SOAP APIs available for Sales Cloud integrators. Based on this work Ive been working with development with the aim to simplify some of the API calls which require "multiple" calls to achieve a single objective.. For example to create a Customer Account you often need to create the Location first , and then the contacts and then the customer account.. In SalesCloud R9 you will have a new subset of APIs which will simplify this.

So you all have a head-start in learning the API I've worked with our documentation people and we've just released a new whitepaper/doc onto Oracle Support explaining the new API in lovely glorious detail. It also includes some sample code of each of the operations you might use and some hints and tips!

Enjoy and feel free to post feedback 

 You can download the documentation from Oracle Support, the document is called "Using Simplified SOAP WebServices" , its docId is 1938666.1 and this is a direct link to the document

Got problems with Nulls with ServiceCloud's objects in REST?

Wed, 2014-11-12 13:02
Using Oracle RightNow, Jersey 1.18, JAX-WS, JDeveloper 11.1.1.7.1
Whilst trying to creating a REST interface to our RightNow instance for a mobile application I was hitting an issue with null values being rendered by Jersey (Jackson)
The way I access RightNow is via JAX-WS  generated proxies which generates JAXB Objects. In the past I've been able to simply return the JAXB object to Jersey and it gets rendered all lovely jubbly.. However with the RightNow WSDL I'm getting lots of extra (null) fields rendered.. This doesn't occur with Sales Cloud so I'm assuming its something to do with the WSDL definition..
     
{ "incidents" : [
   {
       "Asset" : null, "AssignedTo" :  {
           "Account" : null, "StaffGroup" :  {
               "ID" :  {
                  "id" : 100885
              },"Name" : "B2CHousewares"
           },"ValidNullFields" : null
        },"BilledMinutes" : null, "Category" :  {
           "ID" :  {
               "id" : 124
           },"Parents" : [
           {
           .....
Look at all those "null" values, yuck...
Thankfully I found a workaround (yay!), I simply needed to create a custom Object Mapper and tell it *not* to render nulls. This worked for both the JAXB objects which were generated for me and other classes
Simply create a class which overrides the normal object Mapper factory and to make sure its used, ensure the @Provider tag is present

package myPackage;

import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;

import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
import org.codehaus.jackson.map.annotate.JsonSerialize;

@Provider
public class CustomJSONObjectMapper implements ContextResolver<ObjectMapper> {

    private ObjectMapper objectMapper;

   
    public CustomJSONObjectMapper() throws Exception {
        System.out.println("My object mapper init");
         objectMapper= new ObjectMapper();
         // Force all conversions to be NON_NULL for JSON
         objectMapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
    }

    public ObjectMapper getContext(Class<?> objectType) {
        System.out.println("My Object Mapper called");
        return objectMapper;
    }
}

And the result is lovely.. No null values and ready for my mobile app to consume .... 
{
    "organization" : [
    {
        "id" :  {
            "id" : 68
        },"lookupName" : "AngieSoft", "createdTime" : 1412166303000, "updatedTime" : 1412166303000, "name" : "AngieSoft", "salesSettings" :  {
            "salesAccount" :  {
                "id" :  {
                    "id" : 2
                }
            },"totalRevenue" :  {
                "currency" :  {
                    "id" :  {
                        "id" : 1
                    }
                }
            }
        },"source" :  {
            "id" :  {
                "id" : 1002
            },"parents" : [
            {
                "id" :  {
                    "id" : 32002
                }
            }
]
        },"crmmodules" :  {
            "marketing" : true, "sales" : true, "service" : true
        }
    }
]
}

Oh heads up Im using Jersey 1.18 because I want to deploy it to Oracle Java Cloud Service, if your using Jersey 2.x I believe the setSerializationInclusion method has changed..

Extending SaaS with PaaS free eLearning lectures

Mon, 2014-10-13 15:17

Hey all,

Over the last 4 months I've been working with some of my US friends to create a eLearning version of the PTS SaaS extending PaaS workshop I co-wrote....., Well the time has come and we've published the first 4 eLearning seminars, and I'm sure there will be more coming.

Check em out and let me know what you think and what other topics need to be covered.

https://apex.oracle.com/pls/apex/f?p=44785:24:0::::P24_CONTENT_ID,P24_PREV_PAGE:10390,24

Generating Sales Cloud Proxies using Axis? Getting errors?

Thu, 2014-10-09 10:40

If your generating SOAP proxies using Apache Axis/2 you may find yourself hitting strange errors.. Whats even stranger is that you can generate proxies using JDeveloper and it works fine in tooling like SOAPUI.. Well help is at hand..

The most common error is

IWAB0399E Error in generating Java from WSDL:  java.lang.RuntimeException: Unknown element _value

I'm not sure if this is a bug in Fusion Sales Clouds base tech (ADFBC SDOs) or a bug in Apache Axis but there is a workaround and engineering are looking into this.

For a workaround you have two options

  1. Use adb binding and set the flag –Eosv to turn off strict validation.
  2. Use JDK xjc command to generate the JAXB classes:
  3. e.g. xjs -wsdl http://<salescloudsoapendpoint/opptyMgmtOpportunities/OpportunityService?WSDL

Enjoy and let me know if this works for you :-) 

 

Angelo 

Oracle Applications Cloud Release 8 User Experience Rapid Development Kit

Thu, 2014-09-18 12:10

Good resources from the UX Team

If you’re building or integrating the Oracle Applications Cloud or building SaaS through PaaS, use the User Experience Rapid Development Kit laid out here to get the guidance you need and point you to the right tools to use.

The Oracle Applications User Experience team has released a User Experience Rapid Development Kit on simplified user interface (UI), the same user experience design in Oracle Applications Cloud release 8. The kit is designed to help Oracle ADF developers get up to speed quickly so they can start designing and building the Oracle Applications Cloud simplified UIs, which are the tablet-friendly UIs for Oracle Sales Cloud and Oracle HCM Cloud, in a matter of hours.

The User Experience Rapid Development Kit contains the following tools:

  • Coded ADF page templates.
  • Coding tips from Oracle’s developers.
  • ADF screen overlays showing the use of components in the simplified UI.
  • An eBook on user experience (UX) design patterns and guidelines(right), and example wireframe stencils of page types and components in Microsoft Visio and Balsamiq Mockups formats.
  • Sample wireframe of a simplified UI page flow.

How would you like to get started?

Tell me more about the simplified user interface for Oracle Applications Cloud.

Show me demos of simplified UI in the Oracle Applications Cloud.

What’s coming next in the Oracle Applications Cloud user experience?

Start Designing and Building a Simplified User Interface

Learn more

Starting out with MAF?

Tue, 2014-08-26 07:45
If your starting out with MAF, Oracle's Mobile Application Framework, then you MUST read this blog entry and make sure everything is right.. even if your a seasoned ADF mobile developer like me.. you wanna check this out, got me a couple of times!

https://blogs.oracle.com/mobile/entry/10_tips_for_getting_started