Angelos PaaS4SaaS Blog

Wednesday, 29 April 2015

Sample Payload : Creating an Activity (Task)



From SalesCloud R9 onwards we now have Activities.. Activities can be tasks, appointments etc. 
Object Name Activity
WSDLhttps://<hostname>:443/appCmmnCompActivitiesActivityManagement/ActivityService?wsdl
Version Tested on R9
 DescriptionThis payload demonstrates how to create an activity of type TASK, assign a primary lead owner 
OperationcreateActivity
 Parameters
*Required
PriorityCode*,
StatusCode
ActivityContact
ActivityTypeCode*
ActivityFunctionCode*
Subject
 Payload
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://xmlns.oracle.com/apps/crmCommon/activities/activityManagementService/types/" xmlns:act="http://xmlns.oracle.com/apps/crmCommon/activities/activityManagementService/" xmlns:not="http://xmlns.oracle.com/apps/crmCommon/notes/noteService" xmlns:not1="http://xmlns.oracle.com/apps/crmCommon/notes/flex/noteDff/">
   <soapenv:Header/>
   <soapenv:Body>
      <typ:createActivity>
         <typ:activity>
<!-- Priority = 1,2,3 , high, medium, low -->
            <act:PriorityCode>1</act:PriorityCode>
            <act:StatusCode>NOT_STARTED</act:StatusCode>
            <act:ActivityContact>
<!-- Primary contact ID-->
               <act:ContactId>300000093409168</act:ContactId>
            </act:ActivityContact>
            <act:ActivityAssignee>
<!-- Party ID of Assignnee -->
               <act:AssigneeId>300000050989179</act:AssigneeId>
            </act:ActivityAssignee>
            <act:ActivityTypeCode>MEETING</act:ActivityTypeCode>
            <act:ActivityFunctionCode>TASK</act:ActivityFunctionCode>
           
            <act:Subject>Test assign to Matt Hooper for Picard</act:Subject>
         </typ:activity>
      </typ:createActivity>
   </soapenv:Body>
</soapenv:Envelope>

Monday, 13 April 2015

Scheduling Processes on Oracle JavaCloud Service SaaS Extensions (JCSSX)

In the past if we wanted to schedule some background processing in JCSSX we had to get help from the database's scheduler.. Using a clever feature of SchemaDB, that is the ability to call a REST Service from a PLSQL procedure, which in turn would execute our code on JCSSX we were able to effectively execute code on JCSSX at determined intervals/times etc.

All this is now unnecessary!

With the current version of  JCSSX we now fully support a list of 3rd party frameworks (see link for a list) and Quartz is one of them.

Jani, colleague from the Fusion Developer Relations team, has written up a really nice blog posting on the FADevrel blog summarising what you can do with Quartz and some code to get you started..You could say "Quartz in 10mins" blog!

Check it out 

Sunday, 12 April 2015

Sample Payload : Creating a Lead

Very common operation
 Object NameLead
Version Tested on R9
 DescriptionThis payload demonstrates how to create a salesLead, assign a primary lead owner AND add additional resources to the lead
OperationcreateSalesLead
 Parameters
*Required
Name*
StatusCode
CustomerId
ResourceId
PrimaryFlag
 Payload
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://xmlns.oracle.com/apps/marketing/leadMgmt/leads/leadService/types/" xmlns:lead="http://xmlns.oracle.com/oracle/apps/marketing/leadMgmt/leads/leadService/" xmlns:lead1="http://xmlns.oracle.com/apps/marketing/leadMgmt/leads/leadService/">
   <soapenv:Header/>
   <soapenv:Body>
      <typ:createSalesLead>
         <typ:salesLead>
            <lead:Name>gold2 - cust</lead:Name>
            <lead:StatusCode>UNQUALIFIED</lead:StatusCode>
            <lead:CustomerId>100000000055319</lead:CustomerId>
            <!--PartyID of person you want to assign it to-->
            <lead:OwnerId>300000000629932</lead:OwnerId>
            <lead:MklLeadResources>
        <!-- ResourceID is PartyID of additional Resource -->
               <lead1:ResourceId>300000000623680</lead1:ResourceId>
               <lead1:PrimaryFlag>false</lead1:PrimaryFlag>
            </lead:MklLeadResources>
         </typ:salesLead>
      </typ:createSalesLead>
   </soapenv:Body>
</soapenv:Envelope>

Smart watches in the enterprise?

Although smart watches have been around for a couple of years (Sony had a v1 2+yrs ago, Pebble, Samsung gear, Google wear etc) now that Apple is poised to deliver its iWatch the worlds gone crazy about them.. or has it?? Personally I'm still struggling to identify the “killer” SmartWatch App where I would start to wear a watch again (I stopped wearing watches the day I discovered my Nokia mobile had a clock).. One area which I totally “get” is Healthcare.. In that the watch/wearable device can monitor my steps, heart-rate, stress levels (skin resistance) etc… but what about the enterprise???
Anyway, some friends of mine at Oracle HQ (Jeremy & Ultan) have done some awesome R&D in this area, gotten hold of some watches, prototyped some ideas and come up with some compelling ideas.. ..
Is “glancing” and “glance-able” apps the game changer?? You decide..

Getting inaccessible URL when executing REST calls within JCSSX????

Recently I was coding up a REST client for use with Oracle Documents Cloud, using Jersey REST client, and it needed to be deployed to Oracle Java Cloud SX (aka JCSSX). The client code worked perfectly on a local Weblogic 11g but when deployed to the JCSSX instance it would give the following error :
java.lang.RuntimeException: java.security.AccessControlException: access denied ("java.net.SocketPermission" "partners-pts.documents.us2.somecloud.com:443", "connect,resolve")
Initially I was convinced that this was some sort of networking issue in JCSSX, I.e. it couldn't connect to the documents cloud server via the network.. I even tried manually setting the proxy in the Java Code all to no avail..
After quite a while looking I discovered the problem...
This is the detailed error message I got : 
Caused by: java.security.AccessControlException: access denied ("java.net.SocketPermission" "partners-pts.documents.us2.somecloud.com:443" "connect,resolve")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372)
at java.security.AccessController.checkPermission(AccessController.java:559)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkConnect(SecurityManager.java:1051)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:510)
at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:275)

at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:371)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:932)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1300)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
... 81 more

The bold bits hint at the issue.. For some reason my code was using the Sun HTTP Handler which isn't supported on the JCSSX stack but I hadnt configured it to use the Sun Http Handler...You can get your code to use the Sun Http Handler by either setting the system property "UseSunHttpHandler=true" in code or by using Oracle Cloud SDK to set it as a system property.
To check if you have the UseSunHttpHandler set, issue the following command (changing your JCSSX details)
 javacloud list-system-properties -user <username> -p <password> -id <identityDomain>-si  <serverInstance> -httpproxy <httpProxy:port> -datacenter <dataCenterName>

If you have the UseSunHttpHander set to true, or even present, then remove it! Someone had set it in my instance but none of my team members would admit to it.....
 javacloud delete-system-property -user <username> -p <password> -id <identityDomain>-si  <serverInstance> -httpproxy <httpProxy:port> -datacenter <dataCenterName> -name UseSunHttpHandler

Restart your instance and all should then be well.


We've logged an enhancement request to get JCSSX to ignore this specific system property but just incase you hit it before the ER hits the JCSSX servers.

PTS Sample code now available on GitHub

Not sure many people know about this, but sometime ago my team created a whole collection of sample code. This code is available on OTN at this location  but it is now also available in github here!
 We'll be updating this repository with some new code soon, when we do I'll make sure to update this blog entry