Using Event Handling Framework for Outbound Integration of Oracle Sales Cloud using Integration Cloud Service


Oracle’s iPaaS solution is the most comprehensive cloud based integration platform in the market today.  Integration Cloud Service (ICS) gives customers an elevated user experience that makes complex integration simple to implement.

Oracle Sales Cloud (OSC) is a SaaS application and is a part of the comprehensive CX suite of applications. Since OSC is usually the customer master and is the center for all Sales related activities, integration with OSC is often a requirement in most use cases

Although OSC provides useful tools for outbound as well as inbound integration, it is a common practice to use ICS as a tool to integrate OSC and other SaaS as well as on-premises applications. In this article, I will explore this topic in detail and also demonstrate the use of Event Handling Framework (EHF) in OSC to achieve the same.


This post applies to Sales Cloud release 12 and lower. Most of the article still applies, however, for higher releases, follow the latest series of posts on this topic:


Main Article:

Within ICS you can leverage the OSC adapter to create an integration flow. OSC can act both as source (inbound)  or as target (outbound) for integration with other SaaS or on-premises applications; with ICS in the middle acting as the integration agent. While the inbound integration flow is triggered by the source application, invoking the outbound flow is the responsibility of OSC.

InboundIntegration OurboundIntegration

In this article, I will discuss the outbound flow, where OSC acts as the source and other applications serve as the target. There are essentially 2 ways of triggering this integration:

  • Invoking the ICS integration every time the object which needs to be integrated is created or updated. This can be achieved by writing groovy code inside create/update triggers of the object and invoking the flow web service by passing in the payload.
  • Using the Event Handling Framework (EHF) to generate an update or create event on the object and notify the subscribers. In this case, ICS registers itself with OSC and gets notified when the event gets fired along with the payload


OSC supports events for most important business objects such as Contact, Opportunities, Partners etc. More objects are being enabled with EHF support on a continuous basis.

In this article, I will demonstrate how to use EHF to achieve an outbound integration. We will create a flow in ICS which subscribes to the “Contact Created” event and on being notified of the event, updates the newly created contact object. While this integration is quite basic, it demonstrates the concept. While we use Update Contact as a target for our integration, you can use another SaaS application (for example Siebel or Service Cloud) as the target and create a Contact there.



Detailed steps:

Before starting, let’s identify some URLs. For the example, we will need 2 URLs – One for CommonDomain and one for CRMDomain. You can find these out using from Review Topology under Setup and Maintenance


The URLs will be of the following form:

CommonDomain: https://<instance_name>

CRMDomain: https://<instance_name>

I will refer to these URLs as COMMON_DOMAIN_URL and CRM_DOMAIN_URL in the rest of the article.

Let’s now move on to configuring our environment and creating a example integration based on events.

The first step is to create a CSF key so that Sales Cloud can connect to ICS and invoke the subscriptions. In R12, this can be achieved through SOA Composer. To access SOA Composer, navigate to <CRM_DOMAIN_URL>/soa/composer

Inside SOA Composer, click on “Manage Security” to  open “Manage Credentials” dialog. The name of csf-key should be the same as identity domain on the ICS instance. Provide username and password of the user that OSC should use to invoke ICS subscriptions.

Note: Customers don’t have this ability in R10 and R11 and it has to be done by the operations team, so customers need to raise an SR.


Login to ICS Console and and in the home page, click on Create Connections followed by Create New Connection



Click Select under Oracle Sales Cloud



Provide a unique name and identifier for the connection. Optionally, provide a detailed description. Click Create



You will see the prompt that the connection was created successfully and will automatically go to the connection details page. It tracks your progress as well. Click Configure Connectivity


In the Connection Properties page, provide details as follows:

OSC Services Catalog WSDL URL: <COMMON_DOMAIN_URL>/fndAppCoreServices/ServiceCatalogService?wsdl

OSC Events Catalog URL: <CRM_DOMAIN_URL >/soa-infra.


Click Configure Connectivity


Provide credentials of the service user that will be user for integration and click OK


Connection details page shows the connection is 85% complete. The only step remaining at this point it to test the connection to make sure all the details provided are correct. Click on Test


If all the provided details are correct, you will see message confirming the test was successful. Progress indicator also shows 100%. At this point, you Save and click Exit Integration.


You see a confirmation that the connection was saved successfully. You can also see the new connection in the list.


The next step is to use this connection to create an integration. Click on Integrations followed by Create New Integration.


In the Create Integration – Select a Pattern dialog, click Select under Map My Data. You may choose a different pattern based on your integration requirements but for this example, we will use Map My Data pattern.


In the New Integration – Information dialog provide the unique name and identifier for this integration, an appropriate version number, and optionally a package name and description.


Drag and drop the connection that we created on the source. This opens the Configure Sales Cloud Endpoint wizard.


In the Configure Sales Cloud Endpoint wizard, provide the name, and optionally a description of the endpoint. Click Next.


In section titled Configure a Request, choose With Business Events to create this integration using Business Events in OSC. For this example, we will use Contact Created Event which fires when a contact is created is OSC. Click Next.


In the next screen under section titled Response Type, choose None and click Next.


The wizard shows the endpoint summary. Review the details and click Done.


Now we have to create a target endpoint. Usually this target will be another application that we are integrating with OSC. For our example, we will simply use OSC as a target application itself. Drag and drop the OSC connection we created earlier into the target.


In the Configure Sales Cloud Endpoint wizard, provide the name, and optionally a description of the endpoint. Click Next.


Under section titled Select a Business Object find the Contact object and click on it. The drop down below the operations this object supports. For this example, choose updateContact and click Next.


The wizard shows the endpoint summary. Review the details and click Done.


Now we need to map the source payload to the target payload. Clicking on the Map icon followed by the “+” icon to create a mapping.


In the mapping wizard, you can specify the appropriate mapping. For our example, we will use a very simple mapping to update the PreviousLastName with the value of LastName we received in the payload. This doesn’t add a lot of value, but serves the purpose of illustrating an end-to-end integration. Drag and drop PartyId to PartyId from source to target and LastName to PreviousLastName from source to target. Click Save and Exit Mapper.


The integration details page shows our integration is 77% complete. One final step is to add tracking fields which allow us to identify various instances of integration. Click on Tracking.


Drag and drop appropriate fields from Source into tracking fields and click Done.


Now our integration is 100% complete. We can optionally choose an action for the response and fault. For our example, we will skip this step. Click on Save followed by Exit Integration.


ICS console shows the integration was saved successfully. Newly created integration also shows up in the list of integrations. Click to Activate to activate this integration.


In the confirmation dialog, click Yes.


Once the integration is active, a subscription for it is created in OSC. You can review this subscription, as well as all the other subscriptions by invoking the following URL from your browser:



You can now create a Contact in Sales Cloud and it will almost instantaneously be updated with the new value of Previous Last Name.



  1. Mirza Cirikovic says:

    Hi and thank you for the great article.

    One thing I noticed in our instances, is that when adding a new team member on the Account, does not trigger out a message to ICS. The EHF trigger is working, since other updates to the Accounts triggers a message.

    Is this a bug? Or are there any solution to this?


  2. Hi Everyone,
    Do you know how to retrieve the registered accesses in SOA Composer?
    There’s a Export functionality but I can’t open the file. Can you help me?

  3. Marcos Gómez Hidalgo says:

    Hello Naveen,

    Good article, but I have a problem.

    I have made the configuration that you detail, in my case between OSC and Eloqua through ICS. But I do not see the ICS subscriptions in the Sales environment, I must say that the environments are demo.

    Why does it happen?

    Thank you in advance

  4. Utkarsh Deniz says:

    Hi Naveen,

    Nice article very useful. We are integrating Sales Cloud with an external system via ICS using the EHF. We have the following question.

    If publishing of an event fails in Sales Cloud where is it logged? Can customer access such logs?


    • The event is retried using an exponential back off so the delivery is guaranteed. Customers do not have access to view the failed event subscription calls. If you need information, you can create an SR and support can provide you information

  5. Hi,

    We are implementing the same use case for Customer Data hub using On premise SOA Suite.

    We have Sales Cloud adapter configured to pick up events in Customer data hub based on events for Account object updates.

    We did configure everything as suggested but when object gets updated we dont see any instances created or nothing happens.

    We did enable the Profile options as well as suggested above.

    Is there any thing else we need to do ? Can you please suggest. Thanks

    • Check the event subscription (/soa-infra/PublicEvent/subscriptions) and make sure the event is enabled, there are no filters which are configured incorrectly. Also make sure the CSF key listed in the event subscription is created and has the correct credentials to invoke the integration in ICS.

      If all the above checks out, please raise an SR.

  6. Hi Team,

    1) We have to implement a integration between SAP (on-premise) to Fusion Cloud Product HUb and Customer HUB integrations. Please suggest us on which adapter to use in ICS to load data into Product/Customer HUB.
    2) Once the data is loaded into product hub, we need to subscribe to events in Product Hub and load the data to Sales Cloud and CPQ. Please suggest how can we subscribe to events in product and customer hubs.

    Thanks & Regards,

  7. Hi Team

    We have implemented the OSC events pattern as described above for account creation event. We could see the ICS subscription in OSC subscriptions URL. Everything looks fine. However, when we create a new customer, nothing happens in ICS.

    Can you please confirm if there’s anything else to be done in OSC for raising the events?


    • Ajay,
      Enable the Trading Community Events profile option using the following steps:
      1. Log into Oracle Sales Cloud with system administrator privileges.
      2. Navigate to Setup and Maintenance, and then click the All Tasks tab.
      3. In the Search view, enter Manage Trading Community Common Profile Options, then in the Search Results, click Go to Task.
      4. In the Manage Trading Community Common Profile Options Overview page, select the following profile option: HZ_ENABLE_EVENT_TRACKING.
      5. In the HZ_ENABLE_EVENT_TRACKING: Profile Values page, set the Site level value to Yes, and then click Save and Close.
      6. In the Manage Trading Community Common Profile Options Overview page, select the following profile option: HZ_INVOKE_OBJ_WF_ON_TRACKING.
      7. In the HZ_INVOKE_OBJ_WF_ON_TRACKING: Profile Values page, set the Site level value to Yes, then click Save and Close.

Add Your Comment