How to Configure Oracle Cloud Adapter for Salesforce.com at Source Side (to Receive the Events from Salesforce.com)

Oracle Cloud Adapter for Salesforce.com (aka Salesforce adapter) possesses capability to receive the events from Salesforce.com to help customers to achieve true real time integration with Salesforce.com. Salesforce, currently exposes 4 patterns to receive the events from Salesforce.com.

  1. Workflow-driven outbound messaging (with or without callback)
    • This is most popular integration (and recommended by salesforce) pattern for Remote Process Invocation if you want to go with one-way (fire and forget) or asynchronous (with call back) integration. Salesforce adapter support this pattern and we will be discussing on how to configure salesforce adapter to utilize Salesforce.com’s outbound messaging feature.
  2. Apex SOAP callout
    • User supposed to write Apex class. more details can be found at here.
  3. Apex HTTP Callout
    • Same as point #2. More details about it can be found here.
  4. Streaming API
    • This is still not mature and in current state it does not guarantee the delivery of messages. This option is out from the integration list until Salesforce comes up with durable streaming API.

Let’s now talk about how to configure Salesforce adapter at source side on ICS to receive the events from Salesforce.com. It is 3 steps process.

  1. Create Workflow and Outbound Messaging for the Integration
  2. Configure Salesforce Adapter on ICS
  3. Configure endpoint URL into Salesforce.com Outbound Messaging
Create Workflow and Outbound Messaging for the Integration on Salesforce.com:

For ease of understanding let’s take one example and put the steps around it. It will make this post relate to scenario and steps will be similar to other scenarios too.

Scenario:

Suppose integration requirement is to sync case those has been escalated due to any reason to other application like ServiceNow or ERP. So Object to deal with at the salesforce side is Case.

  1.  login to Salesforce.com organization
  2. click on setup
  3. type Workflows on quick search box and click on Workflow Rules or navigate to Build section and create -> Workflows & Approvals -> Workflow Rules
  4. Create on New button to create new workflow rule
  5. Select the object with which you want to work. This should be the same object on which event trigger needs to be created. For above scenario let’s select object ‘Case’. Press Next button.
  6. Provide the name of the rule and criteria to trigger the event. for above scenario, criteria should be ‘Case: Escalated EQUALS True‘ as shown in the below diagram.
  7. Click Save and Next button
  8. Click on ‘Add Workflow Action’ button and Select ‘New Outbound Message’ from the list as shown in the diagram below.AddWorkflowAction
  9. Page to create new Outbound Message will open up. Provide all mandatory fields there. As shown below
    1. provide the name
    2. provide the unique name or go with the default
    3. In the end point URL section, just provide dummy URL
    4. Chose the fields those needs to be synced with targetOutbound_Message
  10. Click on Save Button. you will be back on Workflow rules page and just create outbound message will be selected already.
  11. Click on Done button.
  12. Now you should be able to see Activate button. Click on it and workflow rules started listening based on criteria.
  13. Now navigate to Setup -> AppSetup -> Create -> Workflow & Approvals -> Outbound Messages
  14. Click on the outbound message we just create (Case_OM).
  15. There you should be able to see Endpoint WSDL. Click on the link.
  16. It will open up the WSDL for you. Download this WSDL. (we will use this WSDL in ICS during adapter configuration)
Configure Salesforce Adapter on ICS:
  1. Login into ICS instance with ICS credentials.
  2. Create a new Salesforce adapter connection on ICS (How to create Salesforce Connection on ICS)
  3. Now click on Integrations link to open Integration canvas on ICS to create a new flow.
  4. Drag and drop Salesforce adapter from the list (right hand side) to source side.
  5. Provide the information on Basic Info page. And click to Next.
  6. In this page you will find the instructions for generating outbound messaging WSDL first from Salesforce those we already covered in detail in previous section.
  7. In this page you should be able to find button Browse to upload the WSDL file.
  8. Click on Browse button.
  9. Select the downloaded WSDL (as per step 16 from previous section). Make a note that only one WSDL can be uploaded to this page if you upload WSDL again it will replace previous WSDL.
  10. You should be able to see uploaded WSDL on this page now. Click on Next.
  11. In case you want to configure call back you go ahead and configure success and failure scenarios. but for this blog, we will uncheck ‘Send a Response’ checkbox. (I will cover how to configure callback later)
  12. Click to next.
  13. you now landed on Summery page where again you should see instructions for post activation steps.
  14. Click on the done button and adapter configuration is complete.
  15. Complete the integration flow by configuring target side adapter and mapping and activate the flow.
  16. once the flow is activated, click on information icon on flow landing page and you should be able to get endpoint URI of just newely activated flow. Copy that URL.
  17. Note: Please note above URL will be WSDL URL, remove the ?wsdl from that URL and remaining will become end point URL.
Configure endpoint URL into Salesforce.com Outbound Messaging:
  1. Navigate to Setup -> AppSetup -> Create -> Workflow & Approvals -> Outbound Messages again.
  2. Click on the outbound Message ‘Case_OM’ from the list and click on Edit button.
  3. Now replace the dummy URL with URL you copied in step 17 from above section.
  4. Click on save.

You are good to start receiving messages from Salesforce for Case object into ICS.

Note: Steps will remain same if you want to deal with some other object.

21 responses to “How to Configure Oracle Cloud Adapter for Salesforce.com at Source Side (to Receive the Events from Salesforce.com)”

  1. I would like to mention one important thing for the people who would like to leverage this feature on SOA on premise. It is important that we have public web domain (public ip address over an internet with admin port and managed server port open) accessible from public internet and same web-domain has certificate imported from any CA supported by Salesforce. here is the list of supported certificates supported by Salesforce.
    https://developer.salesforce.com/page/Outbound_Messaging_SSL_CA_Certificates

    1. Hello,

      Thanks for this blog. Its very helpful.

      I am trying to do this using Oracle SOA suite on Prem and as you said we have public Ip address accessible over internet.

      But stll we are not able to recieve messages from SFDC.

      Question – Once we get the Public Host , which port should be used on end point URL to be provided on SFDC?

      Will it be Managed server port or admin server port? Please let me know

      Thanks

  2. Robert van Mölken Avatar
    Robert van Mölken

    When is this triggered? I escalated a case but no message is send to ICS,

    1. That depends on the criteria you define at Salesforce.com side.

  3. […] wizard & ICS: Execution Agent proxy issue: NumberFormatException & Java API for ICS & How to Configure ICS for Salesforce.com & ICS API scripts for doing useful things & Using Oracle EBS Adapter in ICS & […]

  4. Praveen kumar Avatar
    Praveen kumar

    HI Salindra,

    I read all your posts about ICS integration. It has great information, Thank you for sharing these posts.

    I need your help, Integrating with Salesforce adapter with ICS,
    I’m facing an issue in Salesforce, getting error in Outbound message, after triggering Outbound messages,I’m able to receive the request in ICS from Salesforce and processing successfully.
    But I’m failing to give the acknowledge to Salesforce outbound message from ICS.

    because ICS integration is generating One-way transaction. But Outbound wsdl has Notifucation and NotificationResponse.

    Outbound message not receiving Notification response from ICS because of One-way.
    So outbound message is getting failed, Because it is expecting Acknowledgement.

    please tell me how to give Acknowledgement to outbound message from ICS.

    For your information, Salesforce–>ICS–> CloudERP,
    Accounnt Sync, I’m able to creating Account in cloud ERP, and while callback I’m able to creating Contacts in Salesforce.

    But the outbound messages getting fails because of notification response not coming from ICS.

    Outbound message wsdl is synchronous transaction.

    Thanks,
    Praveen

  5. Hi Praveen,
    Ask thing is being handled internally by adapter. User need not to worry about it. You were seeing those issue because there was a known issue in ICS which was fixed.
    for ICS 16.2.5 – you need to request patch from Oracle.
    for 16.3.3 onward it should work smoothly.

  6. Hi Shailndra,

    I have seen your blog and its very interesting stuff on ICS. Now currently I started working on ICS between Salesforce Custom object and OSC custom object as per bushiness requirement, Do you have any document how to use Custom object of OSC using Rest/Soap Adapter.
    My requirement is when a record is created under the sales force oppty that record neeed to created in OSC Custom object record.

    If You have any document Please can you send me to my mail Id A.shiva77@gmail.com

    1. I do not have ready document available but it should not be any difference the way you deal with standard objects. If you have specific problem faced let me know if I can help you.

  7. Another thing that I would like to highlight here that the flows configured on ICS having Salesforce adapter at source side can not be tested via SOAPUI. I found few people tried doing the same and got the error like below –
    The server encountered an unexpected condition which prevented it from fulfilling the request.

    Received SOAPAction does not match deployed endpoint, configured: , received –> “notifications”

    1. Hi Shalidra,

      I’m using ICS to integrate Salesforce and developed a small integration. I got a WSDL from this integration. when i try to test the service from SOAPUI tool, i’m getting the same error:

      Received SOAPAction does not match deployed endpoint, configured: , received –> “notifications

      Is there any way to test the service with anyone of the SOAP tool.

      Regards,
      Ankur

      1. The Salesforce application sends soap requests with empty soapAction.

        Testing via SOAP UI is not possible in this case as soap clients like SOAP UI generates requests
        with soapAction identifier read/available from the WSDL file. Moreover, the transformation logic inside the adapter transforms message coming from Salesforce.

        Triggering the message from Salesforce i.e. end-to-end would work fine

  8. Great Blog!
    Thanks for sharing these steps in detail Shalindra!

  9. […] In above use case, you would like to receive case message from Salesforce.com as and when your condition is met and you want to sync with Oracle Service Cloud. (How to Receive Case Messages from Salesforce.com) […]

  10. Hi Shalindra,
    How can we get the END Point URI if we are not using SFDC adapter. In our case we are trying to use webservice call to Enterprise wsdl. And this is using Oracle SOA 11.1.1.7.
    Thank you.
    Regards,
    Suman

    1. Hi Suman,
      I would highly encourage to use of Salesforce adapter since it provide inbuilt added security. But incase you want to use web service (soap) adapter then also steps remains almost same.
      download the WSDL from Salesforce.com and consume the same in web service adapter.

  11. We are getting the “503 service is unavailable” error while doing the workflow rule. Any idea on this?

    1. This shows that your endpoint URL is not accessible from public network.

  12. Hi,
    How should Salesforce know which integration to send the outbound messages?
    In the point# 9, you mentioned dummy URL, shouldn’t we give ICS integration URL so that SF knows which integration to send the message (publisher/subscriber) pattern.

    Thank you,
    Mohit Mohta

    1. please note the section – “Configure endpoint URL into Salesforce.com Outbound Messaging” where we edit OM with actual URL.

Leave a reply to shiva Cancel reply