Here we need to create a new Sales Lead from within a BPM process.
The SalesLeadService wsdl is available at
It would be very tempting to simply address this directly in your BPM process.
i.e. By adding a Web Service reference to the composite.
There are some compelling reasons not to do this -
1. the service reference will include a list of all operations, which may be confuse
the BPM developer.
2. Data mapping - one sees the full list of SalesLead attributes - which again may confuse the
BPM developer. All she wants to do is create a very basic sales lead for a particular customer.
3. tight coupling
4. one has to concern oneself with the relevant security policies.
So I adopted this approach -
Create a Web Service Proxy in JDeveloper based on the Sales Lead WSDL.
During creation, specify the following WSM policy "oracle/wss_username_token_over_ssl_client_policy"
The generated client will be called SalesLeadServiceSoapHttpPortClient
You can add some code to it to test the connection to Fusion CRM.
MklLead lead = new MklLead();
leadId = 300000000123456L;
System.out.println("Lead name " + salesLeadService.getSalesLead(leadId).getName());
I see my lead -
Create a new class to expose createLead functionality and expose as a web service
I now create a new class based on SalesLeadServiceSoapHttpPortClient.
I essentially amend to include a method createLead()
the code to create the lead-
Long customerId = new Long(custId);
MklLead salesLead = new MklLead();
String newSalesLead = leadName;
ObjectFactory factory = new ObjectFactory();
newSalesLeadDesc = factory.createMklLeadDescription(leadDesc);
newCustId = factory.createMklLeadCustomerId(customerId);
I now expose this class as a web service and deploy to WLS.
I imported the Fusion CRM security certificate into the WLS DemoIdentity.jks.
I validate in Fusion CRM -
So now I simply leverage this web service in BPM -
Simple data mappings -
No security setup required.
Deploy and test
We could, of course, leverage OSB for the brokering.