OracleSOA11g

Embed Size (px)

Citation preview

  • 7/29/2019 OracleSOA11g

    1/52

    Bridging the Gap between InternalSystems and Salesforce.com using

    Oracle SOA Suite 11g

    Overcoming Salesforce.com Integration Challenges

    August 2010

    Author: Brian Sipsey of M&S Consultinghttp://www.mandsconsulting.com

  • 7/29/2019 OracleSOA11g

    2/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 2

    Bridging the Gap between Internal Systems andSalesforce.com using

    Oracle SOA Suite 11g

    INTEGRATING INTERNAL SYSTEMS AND CLOUD BASED

    APPLICATIONS

    As the world of Business / IT Alignment evolves, and Process Centric IT becomesa focus for gaining visibility and driving transformation, organizations must assess

    if each application can be seamlessly integrated into the enterprise. The business

    model where a third party company manages applications and infrastructure inside

    of a cloud, aka Software as a Service (SaaS), has left organizations wondering

    what boundaries a cloud really has. How well can clouds integrate into an

    enterprise? Does our organization have control of our Software as a Service (SaaS)

    and managed environments?

    Oracle SOA Suite 11g, a member of the Fusion Middleware family, is a powerful

    suite of products for integration applications and SaaS environments. At a high

    level, integrating with a SaaS application might appear just like any other

    integration project. However, SaaS solutions have additional complexity around

    security, scalability, and endless customization options that require proper tooling

    to effectively achieve the integration. This white paper will demonstrate how one

    can bridge the gap between internal systems and SaaS applications. It will use

    Oracle SOA Suite 11g and Salesforce.com, both leading products in their space, to

    illustrate the concepts.

    INTEGRATING SALESFORCE.COM INTO THE ENTERPRISE

    There are many cases where it is valuable to automate business processes which

    originate or pass through Salesforce.com. A sale that originates in Salesforce.com

    could be then be automatically available in downstream CRM and Orderingsystems once the sale is closed. Customers data may need to be synchronized and

    potentially updated in Salesforce.com to help instruct Sales Associates of cross

    selling opportunities. This whitepaper will describe how to overcome integration

    challenges and mold Salesforce.com to conform to the business needs of the

    enterprise.

    Software as a Service (SaaS) is also known

    as Cloud computing because a third

    party has full ownership of all hardware

    and software. Use of the application is

    licensed out to customers as a service.

    Advantages of the SaaS business model

    are a low startup cost, reduced risk for

    customers without strong internal IT, and

    increased scalability as users can be added

    and removed as needed

    Disadvantages are that there is no direct

    control of the environments, and licensing

    fees over time will typically result in a

    higher total cost of ownership.

  • 7/29/2019 OracleSOA11g

    3/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 3

    SaaS Interface Challenges

    If we look at the nature of SaaS, a few notable design challenges present

    themselves that should be addressed at the beginning of an integration project. A

    direct look at the nuances of Salesforce.com web services gives insight into

    common challenges of most SaaS providers.

    Overcoming Salesforce.com Integration Challenges

    SaaS Challenge Oracle Fusion Middleware Solution

    Fine Grained,

    Weakly typed

    Services

    Salesforce.com business services, like most application

    business services, attempt to be flexible, powerful and

    generic so users may accomplish any function. This leaves

    customers with the task of orchestrating the services to

    extend the functionality to make it readily consumable by

    the organization.

    Salesforce.com doesnt provide a strongly typed CRUD

    service for each object which is common in object oriented

    models. Instead, Salesforce.com provides single Create,Retrieve, Update, and Delete methods that work with

    generic arrays of objects of ANY type, and SQL queries

    that can be run directly against the Salesforce.com database.

    Processes within Oracle Fusion Middleware can identify the

    contents of the generic object arrays, and cast them into

    strongly typed arrays of objects so that data can be easily

    accessed within the middleware.

    Security SaaS Web Services are publicly available on the internet,

    meaning user logins, sessions, and security certificates must

    be well managed. SOA Suite can easily authenticate with

    Salesforce.com login methods and enforce additionalencryption using centralized security policies.

    Scalability Large volumes of customers access Salesforce.com web

    services through a single login access point, and are

    redirected to a site specific end point after login. Real time

    assignment of web service binding information helps

    Salesforce.com handle the volume, but presents an

    additional challenge to integration developers. SOA Suite

    makes it easy to dynamically update endpoint bindings on a

    service definition after login.

    Customizations Salesforce.com allows users to add custom fields to any

    business object, but propagates this field into the service

    definition causing changes in the Middleware layer. Oracle

    Fusion Middleware provides an Enterprise Service

    Repository and a Meta Data Service (MDS) that can be

    Software as a Service(SaaS) vendors have

    integration layers similar to most mature

    applications. Workflow can typically be

    configured to generate outbound events,

    and Web Service APIs provide fine grained

    access to the business objects.

  • 7/29/2019 OracleSOA11g

    4/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 4

    used to centrally administer updates and manage versions.

    Inbound and outbound service definitions can generate the

    same objects with different definitions that cause schema

    validation errors if both schemas are imported into the

    same project. A loosely coupled design of inbound and

    outbound services should be used to avoid this problem.

    Schema validation can be turned off as a compiler option,but this is not recommended.

    Public Outbound

    Event Interfaces

    Salesforce.com workflow can be easily configured to trigger

    events to a publicly available endpoint. Oracle Fusion

    Middleware makes it easy to expose and secure services

    conforming to a specified service definition.

    PROBLEM STATEMENT

    The use case covered for this white paper is a value add scenario where any high

    priority Account will be automatically followed up by a Business Owner who canreach out to the client to discuss additional opportunities. The Sales person will beusing Salesforce.com to identify high priority accounts, and the Business Ownerwill be using an external Enterprise Application to contribute opportunities.

    Business Process for High Priority Accounts

    BusinessOwner

    (EnterpriseApp)

    SalesRepresentative

    (Salesforce)

    Set Salesforce

    Account to High

    Priority

    Follow Up on

    Account to

    Discover Sales

    Opportunities

    Enter Sales

    Opportunities

    Pursue Sales

    Opportunity

    Account Follow Up - Salesforce.com Outbound IntegrationWhen a Sales Representative using Salesforce.com indicates an Account is highpriority, the account automatically transfers to an external Enterprise Applicationso the a Business Owner can further assess the clients needs.

    Opportunity Creation - Salesforce.com Inbound IntegrationA Business Owner will place a follow up call to a customer, and enter strategyinformation on the account in an Enterprise Application. A correspondingOpportunity will be automatically created under the account in Salesforce.com fora Sales Representative to pursue.

    Differentiating a sales process by

    integrating Salesforce.com with other

    applications in the enterprise can generate

    enormous value and transparency into

    Sales operations. The ability for SOA Suite

    to monitor and provide real time reports on

    the success of any standardized business

    process can also inform about the success

    of enterprise wide sales strategies.

  • 7/29/2019 OracleSOA11g

    5/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 5

    This Business Process will explore many integration features of Salesforce.comsuch as Workflow, Outbound Messages, and the create and query methods of theweb service API. This design will also demonstrate features of Oracle SOA Suite11g including Mediators, and the creation of a loosely coupled architecture usingSOA Composites. The diagram below shows how everything fits together.

    Component Layout of the Solution

    Enterprise

    Application

    Oracle Fusion Middleware - SOA Suite

    Workflow Rule

    Trigger Account

    Followup

    Outbound Message

    Salesforce

    Outbound

    Salesforce

    Inbound

    Web Service Layer

    Save and Query

    Opportunities

    Database

    Salesforce

    *

    *

    *

    **

    *

    *

    *

    Enterprise

    Application

    Inbound

    Enterprise

    Application

    Outbound

    Account

    Follow Up

    Enterprise

    Business

    Service

    **

    ** **

    * * * *

    Overview of Solution

    To follow the steps outlined in this white paper, the following items are required.

    1. Salesforce.com User Account (a trial account can be obtained for 30 days)2. Install JDeveloper 11g, available on the Oracle Technical Network (OTN)

    http://www.oracle.com/technetwork/middleware/soasuite/downloads/i

    ndex.html.

    Notable new features in Oracle Fusion

    Middleware 11g are Mediator Service

    Engine and SCA Composites. The Mediator

    Service Engine makes it faster to develop

    services focused on transformation and

    routing. The SCA Composite allows BPEL

    Processes, Mediators, and other engines

    (Rules, Human Workflow, etc) towork

    together in the same project.

  • 7/29/2019 OracleSOA11g

    6/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 6

    3. Install the Oracle Database, WebLogic Server and SOA Suite 11g (allavailable on OTNhttp://www.oracle.com/technetwork/middleware/soasuite/downloads/index.html)

    1. Salesforce.com Outbound Integration

    Scenario: When an account is updated in Salesforce.com with a status of High, the

    corresponding Opportunity will be sent to SOA Suite for processing in theenterprise.

    1.1 Create an Enterprise Business Service1.2 Create a Salesforce.com Outbound Event1.3 Create a Salesforce.com Workflow Rule1.4 Consume the Outbound Event with Oracle SOA Suite1.5 Configure the Salesforce.com Outbound Event2. Salesforce.com Inbound Integration

    Scenario: Creating a business service that exposed by SOA Suite to the enterprise

    that creates Opportunities within Salesforce.com.

    2.1 Configure a Project for the Salesforce.com Inbound Integration2.2 Salesforce.com Authentication2.3 Create a New Salesforce.com Opportunity2.4 Query the Opportunity based on the Account Id3. Enterprise Application Integration with DB Adapters

    Scenario: SOA Suite will be used to create an inbound business service to add

    Accounts and an outbound event that notifies when strategy information is added

    to an account.

    3.1 Setup the Enterprise Application Databse3.2 Insert a Record into the Enterprise Application Database3.3Trigger Events from the Enterprise Application Database3.4 Configure Enterprise Business Service Routing Rules4. Testing and Auditing the Integration

    Scenario: Walk through an end to end test, and audit the process within SOA

    Suite.

    4.1Account Follow Up Test (Salesforce.com -> Enterprise Application)4.2Audit the Account Follow Up Integration within Oracle SOA4.3

    Opportunity Creation Test (Entperise Application to Salesforce.com)4.4Audit the Opportunity Creation Integration within Oracle SOA

    5. Conclusion

    This technical white paper is broken

    down into several distinct sections

    that make it easy to jump to a

    particular section of interest, or follow

    the paper step by step as a primer on

    Salesforce.com integration with

    Oracle Fusion Middleware.

  • 7/29/2019 OracleSOA11g

    7/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 7

    SECTION 1 - SALESFORCE OUTBOUND INTEGRATION

    Business processes often originate from user actions within. A Workflow Rule will

    be created to trigger an event when an account is set to high priority. The

    Workflow Rule will then be linked to an Outbound Message

    Within SOA Suite, a service will be created to consume the outbound event. To

    ensure the design is application independent, an Enterprise Business Service will

    also be created to decouple the Salesforce.com integration from externalapplications.

    The Salesforce.com API documentation should be explored to see more options:http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_om_outboundmessaging_setting_up.htm.

    Section 1.1 - Create an Enterprise Business Service

    To ensure the integration is loosely coupled and application independent, the first

    part of the project is to create a Business Service and Account definition that does

    not conform to either application specific representation of an account.

    Step 1 - Open Oracle JDeveloper 11g

    It is assumed that JDeveloper 11g and SOA Suite 11g have been installed. Bothcan be downloaded from oracle.com.

    Step 2 - Create a new Application and an empty SOA Project

    In JDeveloper, navigate to File | New | Application. Create a Generic

    Application named SalesforceIntegration. Right click on the application, and select

    New Project. Choose to create a SOA Project and name it AccountFollowUpEBS.

    Step 3 - Create a Enterprise Account Business Object

    Right click on the xsd directory within the SOA Project, and select New | XML |

    XML Document | Name the Document EnterpriseAccount.xsd. This enterprise

    account will serve as the canonical definition used in the middleware layer as an

    interchange format for accounts that is application independent. Copy the

    following schema definition into the xsd file.

    An Enterprise Business Service is a

    concept used in Oracle AIA (Application

    Integration Architecture) to loosely couple

    Application Business Connector Services,

    and also to enforce an Application

    Independent Business Domain. In this

    white paper, the inbound and outbound

    services are similar in concept to the

    Application Business Connector (ABCS)

    providers and requestor services.

    http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_om_outboundmessaging_setting_up.htmhttp://www.salesforce.com/us/developer/docs/api/Content/sforce_api_om_outboundmessaging_setting_up.htmhttp://www.salesforce.com/us/developer/docs/api/Content/sforce_api_om_outboundmessaging_setting_up.htmhttp://www.salesforce.com/us/developer/docs/api/Content/sforce_api_om_outboundmessaging_setting_up.htmhttp://www.salesforce.com/us/developer/docs/api/Content/sforce_api_om_outboundmessaging_setting_up.htm
  • 7/29/2019 OracleSOA11g

    8/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 8

    Step 4 Create a new Mediator for Routing between applications

    Drag the Mediator Service Component from the Component Pallete into the SOA

    Composite, and Name the mediator AccountFollowUpMediator. Under Template,choose Interface Definition from WSDL. There is no WSDL yet, but clicking on

    the gear next to WSDL URL will generate one.

    Step 5 Create a Service Definition accepting the Enterprise Account

    On the Request tab, click on the flashlight, and select Project Schema Files |

    EnterpriseAccount.xsd | Enterprise Account. Then set the operation name toupdateAccount and the port type name to updateAccount_ptt. Accepting these

    settings will create the business service that will be used to route between

    applications.

    Mediators make it easy to quickly define a

    service definition based on an existing

    schema (xsd) by clicking on the generate

    WSDL gear icon.

  • 7/29/2019 OracleSOA11g

    9/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 9

    Step 6 - Deploy the AccountFollowUpEBS Project

    Deploy the process that was just created so the endpoint is available for the

    inbound and outbound Application Business Connectors. The routing on this

    service will be updated again at the end of the paper once the inbound integrations

    have been created.

    Section 1.2 - Create a Salesforce.com Outbound Event

    Define the structure and obtain the service definition for the outbound message.

    Step 1 - Login to Salesforce.com

    An assumption for this document is that you have a valid salesforce.com account.

    A test sandbox account should be used to avoid impacting production

    environments. A trial account can be obtained for 30 days.

    Step 2 - Create a New Outbound Message

    A workflow can be setup so that it executes when a certain data condition is met,

    and send an outbound message containing a specific Salesforce.com object.

    To create a workflow, navigate to the following location: Setup | Create |Workflow and Approvals | Outbound Messages | New Outbound Message.Salesforce.com will ask you to fill out three steps to complete the workflow.

    Step 3 - New Outbound Message: Select ObjectSelect Opportunity as the object to send in the outbound message as shown below.

    A Salesforce.com workflow can be used to

    detect complex data conditions and trigger

    an outbound message to notify external

    applications.

  • 7/29/2019 OracleSOA11g

    10/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 10

    Step 4 - New Outbound Message: Configure Outbound Message

    Fill out the name, description, and outbound URL. Since the endpoint has notbeen created yet, fill out a generic endpoint and the correct endpoint will be addedonce the publicly accessible service is available. Add the Opportunity fields thatwill be sent with this outbound message.

    Step 5Verify Outbound MessagePress next to accept the default settings on step 3, and verify the Outboundmessage was correctly setup as shown below.

    Step 6: Obtain Service Definition for Outbound Event

    Select the Click for WSDLlink, and save the wsdl that pops up asworkflowOutboundMessage.wsdl. The WSDL file is a service definition definingthe format that a web service will adhere to in order to consume the outboundmessage.

    Section 1.3 - Create a Salesforce.com Workflow Rule

    Now that an outbound event is created, a rule needs to be setup to trigger theoutbound event.

    To consume outbound messages from

    Salesforce.com, a service must be visible

    to salesforce. This white paper uses a

    publicly accessible endpoint. Additional

    Security configurations are available

    through Salesforce.com.

  • 7/29/2019 OracleSOA11g

    11/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 11

    Step 1 - Create a New Workflow Rule

    To create a Workflow Rule, navigate to the following location: Setup | Create |Workflow and Approvals | Workflow Rules | New Rule. Salesforce.com will askyou to fill out three steps to complete the workflow.

    Step 2 - New Workflow Rule: Select ObjectSpecify that the Account object is going to be monitored by this workflow.

    Step 3 - Configure Workflow Rule

    Configure the Rule by filling out the following fields:

    Workflow rules can be triggered on any

    Salesforce.com object based on the

    objects state, such as when it is newly

    created, and also based on a list of

    conditional statements around each field

    making it easy to generate business

    relevent events.

  • 7/29/2019 OracleSOA11g

    12/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 12

    Rule Name: Customer NotificationDescription: Send a message to Oracle SOA Suite when a customer is updatedEvaluation Rule: When a record is created, or edited and did not previously meetthe rule criteriaRun This Rule if the following criteria are met: Customer Priority equals High

    Step 4 - Specify Workflow Actions

    Link the outbound message created earlier named AccountChange to the

    Workflow to trigger the message.

    Step 5 - Select Outbound Message and Save the Action

    Step 6 - Pressing Done to Finalize the Workflow Rule

    At this point there are still two remaining salesforce.com configuration tasks.

    1) The endpoint on the outbound message should be updated once the webservice is made publicly available.2) The Workflow Rule needs to be activated, which can be done by selecting theActivate Button after the Outbound Message is configured with the correctendpoint.

    Salesforce.com Workflows Actions can be

    associated with Tasks, Email Alerts, Field

    Updates, and Outbound Messages .

  • 7/29/2019 OracleSOA11g

    13/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 13

    Section 1.4 - Consume the Outbound Event with Oracle SOA SuiteThis section describes how to use Oracle JDeveloper 11g to implement a webservice conforming to the service definition for the outbound event generated bySalesforce.com in the previous section. Once the message is received, a mediatorwill transform the message and route it to the Enterprise Business Service.

    Step 1 - Create a new SOA Composite project within JDeveloperNavigate to File | New | Application | SOA Application and fill in the required

    fields to create a New SOA Composite project. Name the ProjectSalesforceOutboundIntegration.

    Step 2 - Copy the Salesforce.com Outbound Message Service Definition into the project

    Copy the Salesforce.com service definition (workflowOutboundMessage.wsdl)downloaded in the previous section into the project directory that was created. Tofind the project directory, navigate to the workspace directory configured forJDeveloper, find the application directory, and then the project directory. Therefresh button on the tree view will need to be pressed in JDeveloper to verify theservice definition is available within the project.

    Step 3 - Create a Mediator to Consume the Outbound Salesforce.com Message

    Drag a Mediator from the Component Palette into the new SOA Composite.Name the Mediator OutboundSalesforceEventFollowUp and choose InterfaceDefinition from WSDL. Click the Find Existing WDSL (+) Logo next to theWSDL URL, and select the workflowOutboundMessage.wsdl.

    Consuming the Oubound Event can be

    done by creating an end point that

    conforms to the service definition

    published by Salesforce.com. With Oracle

    SOA Suite 11g, a Mediator can be used to

    transform and route the message with just

    a few simple steps.

  • 7/29/2019 OracleSOA11g

    14/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 14

    Step 4 Create a Web Service Reference to the Enterprise Business Service

    Drag the Web Service from the Components Palette into the External Referencessection of the SOA Composite. Name the reference UpdateAccountEBS, and clickon the Find Existing WSDLs icon next to the WSDL URL field. In the SOAResource Browser, change the drop down to Resource Palette, Expand theapplication server and project where the Enterprise Business Service is located, andselect the AccountFollowUp service endpoint. Choose Okay to accept theconfigured service.

    Step 5 Connect the Mediator to the UpdateAccountEBS Service Reference

    For this demo, Web Service references are

    obtained from the server rather than the file

    system to ensure correct service bindings

    are setup. Deployment plans in Oracle SOA

    Suite 11g allow users to create

    configurations that work with multiple

    environments.

  • 7/29/2019 OracleSOA11g

    15/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 15

    Step 6 Open the Mediator and Select the Transform Icon

    Step 7 Create a new Transform File and update the mappings

    Step 8 Obtain an Endpoint for the Salesforce.com Outbound Integration

    Deploy the process to SOA Suite. Open the Enterprise Manager, expand the SOA

    -> soa-infra, and verify the process was deployed successfully. Obtain an endpointby clicking into the service and pressing the Test Web Service button.

    Section 1.5 - Configure the Salesforce.com Outbound Message

    This section shows how to update the end point on the outbound message andactivate it.

    Mediators are based on the former Oracle

    Enterprise Service Bus and in SOA Suite

    11g, can be added to SOA Composites to

    work side by side with other SOAComponents such as BPEL Processes.

  • 7/29/2019 OracleSOA11g

    16/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 16

    Step 1 - Update Endpoint Location for the Salesforce.com Outbound Event

    Login to Salesforce.com and navigate to Setup | Create | Outbound Messages|Edit Account Change. Update and save the Endpoint URL to the publicly exposedendpoint.

    1.4.2 Activate the Salesforce.com Outbound EventOn the Outbound Message Detailscreen, select theActivatebutton for the Customer

    Notification workflow rule that appears under the Workflow Rules Using thisOutboundMessage section. The salesforce inbound integration has now beencompleted. This can be unit tested by creating a high priority account withinsalesforce and seeing if the cooresponding SalesforceOutboundIntegrationcomposite is kicked off within SOA Suite.

    SECTION 2 SALESFORCE INBOUND INTEGRATION

    Salesforce.com exposes standard web services for performing Create, Update,

    Retrieve, and Delete (CRUD) operations on underlying business objects. OracleFusion Middleware is ideal for orchestrating the Salesforce.com business services

    to drive functionality and expose a powerful layer of web services that are more

    relevant to the business.

    This section describes how to create a SOA Composite containing a BPELProcess that will orchestrate Salesforce.com services. The process will accept anAccount containing additional strategy information, Login to Salesforce.com,Create an Opportunity, and then Query that Opportunity based on its account id.

    Section 2.1 Configure a Project for the Salesforce.com InboundIntegrationThis section will describe how to download the Salesforce.com Web Service API,configure elements, variables, and partner links, and plan the flow using the scopeactivity.

    Ensure the Business Service exposed toconsume Salesforce.com Outbound

    messages is visible to Salesforce.com.

    When SOA Suite is running within anorganization, network administrators may

    be required to allow Salesforce.com accessto the endpoint, the ip may need to be

    changed to a host name, and the port mayneed to be opened so it is accessible

    outside a firewall.

  • 7/29/2019 OracleSOA11g

    17/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 17

    Step 1 - Create a new SOA Composite Project with a BPEL ProcessIn JDeveloper Studio 11g, navigate to File | New | Create SOA Project. On Step1, enter the Project Name SalesforceInboundIntegration, choose compositetemplate Composite with BPEL, and press Finish.

    A Create BPEL Process will now pop up. Enter the nameSalesforceInboundIntegration and specify the template as a One Way BPELProcess. This can also be made synchronous or asynchronous depending on what

    functionality the business service will contain.

    Step 2 - Generating the Salesforce.com Web Service Definition

    An Enterprise WSDL is published by salesforce.com to represent the customsalesforce.com domain for each customer. After setting up customizations tobusiness objects within Salesforce.com, a developer must log in to salesforce.comand navigate to setup | Develop | API Enterprise WSDL. Save the file as tothe local file system as SalesforceEnterpriseServices.wsdl.

    Step 3 - Add a Partner link for the Salesforce.com Services

    Add the SalesforceEnterpriseServices.wsdl file to the project. Click the flashlight tofind the SalesforceEnterpriseService.wsdl. A Ref file will be created to addadditional partner link types.

    Every time a custom field is added to an

    Object within Salesforce.com, the change

    will propagate into the generated service

    definition.

  • 7/29/2019 OracleSOA11g

    18/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 18

    Step 4 - Modify the BPEL Process input variable to accept an Enterprise Account

    Since this process is expected to lookup an account, the input parameter needs tobe updated to accept an Enterprise Account. Add the EnterpriseAccount.xsd tothis project. Open the schema definition for the BPEL Process.

    Add the following as shown in the illustration.1) The namespace definition:

    xmlns:eca=http://xmlns.oracle.com/EnterpriseAccount 2) The import statement:

    3) Update the process element to:

    The following image shows the new schema for the BPEL Process.

    Step 5- Expose the Opportunity complexType as an Element

    The complex types within the Salesforce.com service definition need to beexposed as elements before they can be manipulated as variables within BPEL. Todo this, open the SalesforceEnterpriseServices.wsdl, find the Opportunity complextype, and add the line:

    Step 6 - Create a SalesforceOpportunity variable

    Create a new variable to setup the Opportunity that will be created inSalesforce.com. Open the new variable dialog by clicking on the (x) on the outerscope of the process flow. Enter the name SalesforceOpportunity. Chose element,

    The Enterprise Account is a simple

    canonical data model used to establish an

    enterprise domain that is independent of

    any other application.

    This example could have been designed as

    a single BPEL Process that worked with

    both Salesforce.com and the Enterprise

    Application database. A loosely coupled

    design is just as easy to create and will

    quickly add value when changes come

    along down the road.

    http://xmlns.oracle.com/EnterpriseAccounthttp://xmlns.oracle.com/EnterpriseAccounthttp://xmlns.oracle.com/EnterpriseAccounthttp://xmlns.oracle.com/EnterpriseAccount
  • 7/29/2019 OracleSOA11g

    19/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 19

    and look through the available element in the enterprise.wsdl file to locate theOpportunityElement that was just added.

    Step 7 - Create a Variable to store Session Header Information

    Create a new variable to set the session id information that can be attached to soaprequests when invoking the Salesforce.com API. Select the Message TypeFlashlight | expand SalesforceEnterpriseServices.wsdl |Select the Header messagetype.

    Step 8 - Create a Variable to update the Endpoint

    This section will create a Endpoint Reference that can be used to update the serverurl on the partnerlink for all requests after a login to salesforce. Open the Create

    New Variable Dialog, and enter the variable name endpointReference. Select TypeElement, select the flashlight, and then choose the option Import Schema File.Type the URL http://schemas.xmlsoap.org/ws/2003/03/addressing as the url,and enter ok. The addressing schema will now appear as an imported schema inthe type explorer. Select the EndpointReference as the type and create the variable.

    Salesforce.com objects are generated as

    Complex Types in the service definition.

    Elements need to be created based on

    these complex types to manipulate them as

    variables.

  • 7/29/2019 OracleSOA11g

    20/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 20

    Step 9 - Add Scopes to Outline the Process Flow

    Section 2.2Salesforce.com Authentication

    Access to the Salesforce.com API requires authentication with thesalesforce login service, creating a session header to submit tosubsequent requests, and updating the endpoint on the partner link for

    subsequent requests. For this project, the login endpoint binding usedfor login is: http://login.salesforce.com/services/Soap/c/19.0.

    Step 1 Add Login Activities

    Add an Assign activity named AssignCredentials, and an Invoke activity namedLoginToSalesforce within the LoginToSalesforce scope.

    When using BPEL, scopes are handy for

    laying the functional aspects of a process

    flow prior to adding each activity.

  • 7/29/2019 OracleSOA11g

    21/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 21

    Step 2 Configure the Login to Salesforce.com Invoke Activity

    Select the SalesforceEnterpriseService Partner Link, login operation and createdefault input and output variables.

    Step 3 Configure the Assign Credentials Invoke Activity

    Setup the user name and password for the Salesforce.com Account.

    Logging into Salesforce.com will return a

    session id and a server URL to be used for

    authentication and site specific binding on

    subsequent service calls.

  • 7/29/2019 OracleSOA11g

    22/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 22

    Step 4 - Add Assigns to Set the Endpoint and Session Header

    Step 5 - Initialize an Endpoint Reference Element

    Use the following XML Fragment to initialize the end point.

    The session id needs to be passed into the

    SOAP header on method calls to validate

    identity.

  • 7/29/2019 OracleSOA11g

    23/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 23

    Step 6 - Copy the Server URL into the Endpoint Reference

    Step 7 - Update the Endpoint Reference to Salesforce.com

    All customers log into the same login

    service and are dynamically routed to a

    customer specific endpoint for accessing

    other Salesforce.com services.

  • 7/29/2019 OracleSOA11g

    24/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 24

    Step 8 - Copy the Session ID into the Session Header Variable

    Section 2.3 - Create a New Salesforce.com Opportunity

    In this section, a Salesforce.com Opportunity will be created, required fields will bepopulated, and then the opportunity will be sent to the create operation on theSalesforce.com business service.

    Step 1 Fill in the Write Opportunity Scope

    The create operation in Salesforce.com

    accepts an array of objects, so multiple

    objects of different types can be submitted

    in a single service call.

  • 7/29/2019 OracleSOA11g

    25/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 25

    Step 2 - Configure the Write Opportunity Invoke

    Choose the SalesforceEnterpriseService as the partner link, create as the operation,and generate the default input and output variables.

    Step 3 - Set the Session Header on the Invoke

    JDeveloper 11g does not provide a graphical way to set the header variable, butthis can be remedied by updating the BPEL Source directly. Switch to the sourceview and add the following attribute to the invoke:bpelx:inputHeaderVariable="headerRequest"

    In JDeveloper 10G, a tab on the invoke was

    used to set the session header. This tab

    has been removed in 11g, but the

    underlying BPEL can be updated directly inthe source view to pass in the session id.

  • 7/29/2019 OracleSOA11g

    26/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 26

    Step 4 - Intialize the Opportunity Element

    In the Set Opportunity assign, we must fill in a series of copy operations topopulate the Opportunity with required fields to write it to Salesforce.com.

    The xml used in the XML Fragment is:

  • 7/29/2019 OracleSOA11g

    27/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 27

    Step 5 - Write the Account ID

    Set the high level account id in the Salesforce.com Opportunity to link it to thecorrect account.

    Step 6 - Set the Opportunity Name

    For this example, the name will be the text Auto Generated plus the value enteredinto the Promotion Strategy field.

    Setting the account id on an opportunity

    will automatically link it to the desired

    Account.

  • 7/29/2019 OracleSOA11g

    28/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 28

    Step 7 - Set the Amount of the Opportunity

    A generic value of $5,500 will be set to the value of the opportunity.

    Step 8 - Set the Sales Stage for the Opportunity to Prospecting

    Automatically creating an Opportunity

    within Salesforce.com will allow a Sales

    Representative to identify customer needs

    without constant communication with the

    Business Owner.

  • 7/29/2019 OracleSOA11g

    29/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 29

    Step 9 - Set the Opportunity Description to the Strategy Notes

    Step 10 - Set the Close Date

    Step 11 - Assign the Opportunity as the Create Input Object

    Salesforce.com returns errors as strongly

    typed messages in the response. Fault

    handlers will be useful for catching binding

    faults, but the response variable also needs

    to be checked to determine if any specific

    business faults occurred,

    The diagram in Step 11 shows that the

    create variable is weakly typed as an array

    of ANY type elements. All of the CRUD

    services work in the same way requiring

    the objects to be cast into strongly typed

    elements before the data can be easily

    accessed.

  • 7/29/2019 OracleSOA11g

    30/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 30

    Section 2.4 - Query the Opportunity based on the Account IdThis section will validate the opportunity was created and associated to the correctAccount. This adds no functionality to the process, but demonstrates how toperform a query.

    Step 1 Add Activities needed to perform a Query

    Step 2 Fill out the Query Account Invoke Activity

    Set the Partner Link to SalesforceEnterpriseService, the operation to query, andadd default input and output variables.Salesforce.com has created a proprietary

    Query language called SOQL (Salesforce

    Object Query Language) that is very similar

    to SQL and can be used to join objects and

    specify conditional clauses.

  • 7/29/2019 OracleSOA11g

    31/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 31

    Step 3 Set the Session Header on the Invoke

    Switch to the source view and add the following attribute to the invoke:bpelx:inputHeaderVariable="headerRequest"

    Step 4 Assign the Query String

    Salesforce.com uses a query language similar to SQL called SOQL which can beset on the query. This query will return all opportunities on the account that hasbeen passed in, which can be seen during audit to validate the opportunity wascreated.

    The SOQL Query used here is: concat("SELECT Id, Name, AccountId

    ,CloseDate, Amount FROM Opportunity WHERE AccountId='",bpws:getVariableData('inputVariable','payload','/client:process/client:CustomerAc

    count/ns6:accountId'),"'")

    SECTION 3 - ENTERPRISE APPLICATION INTEGRATION WITH DB

    ADAPTERS

    This section will create a fictitious application named Enterprise Application todemonstrate how to use the DB Adapter in SOA Suite to build inbound andoutbound integrations with a database. The routing rules on the EnterpriseBusiness Service created at the beginning of this white paper will then be updatedto create a loosely coupled integration between Salesforce.com and the EnterpriseApplication.

    Section 3.1 - Set up the Enterprise Application Database

    To keep things simple, this white paper will assume the Enterprise Application willbe a simple database schema with a single table to store Account information. Two

    A SOQL Builder is available at

    salesforce.com to help build and test SOQL

    Queries.

  • 7/29/2019 OracleSOA11g

    32/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 32

    account fields will be unique to the application named Promotion Strategy andStrategy Notes. Once filled in, this additional data will be used to auto generate aSalesforce.com Opportunity for the account.

    To set up the Enterprise Application, create a new database user namedEnterpriseApp, and execute the following SQL to generate the Customer AccountTable.

    CREATE TABLE "ENTERPRISEAPP"."CUSTOMER_ACCOUNTS"("ACCOUNT_ID" VARCHAR2(20 BYTE) NOT NULL ENABLE,"ACCOUNT_NUMBER" VARCHAR2(20 BYTE),"ACCOUNT_NAME" VARCHAR2(20 BYTE),"DESCRIPTION" VARCHAR2(20 BYTE),"ANNUAL_REVENUE" VARCHAR2(20 BYTE),"NUMBER_OF_EMPLOYEES" NUMBER,"PHONE" VARCHAR2(20 BYTE),"PROMOTION_STRATEGY" VARCHAR2(20 BYTE),"STRATEGY_NOTES" VARCHAR2(20 BYTE),"CREATE_DATE" DATE,"UPDATE_DATE" DATE,CONSTRAINT "CUSTOMER_ACCOUNTS_PK" PRIMARY KEY ("ACCOUNT_ID")

    )

    Section 3.2 - Insert a Record into the Enterprise Application DatabaseThis section will demonstrate how to create a web service that accepts accountsand inserts them into the Enterprise Application.

    Step 1 - Create a New Project

    Create a SOA Project named EAInboundIntegration containing a BPEL Processnamed EAInboundAdapter.

    Step 2 - Configure the Input Element to Accept an Enterprise Account

    As was done earlier in this paper, import the CustomerAccount.xsd into theproject. Then add the corresponding namespace, import statement, and Requestelement as shown below.

    Step 3 - Create a Database Adapter to Insert Accounts

    Open the EAInboundAdapter bpel process. Drag and drop the Database Adapterfrom the components panel into the partnerlink area of the BPEL Process.

    The Adapter Configuration Wizard will appear.Step 1: Click Next.

    The Database Adapter automatically

    exposes complex database functionality

    such a Merge, Insert, Update, Delete,

    Select, and database polling as web

    services containing auto-generated requestand response messages.

  • 7/29/2019 OracleSOA11g

    33/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 33

    Step 2: Add Service Name EnterpriseApplicationDB and Click NextStep 3: Select or Create a Connection to the database and click NextStep 4: Select Perform an Operation on a Table, check Insert Only, and press Next

    Step 5: Select the Table by clicking Import Table. Query for theCustomer_Accounts table, move it into the Selected column, Press Next, and thenPress Next again.

    Step 6 : Press Next to skip Reachable Relationships

    Multiple tables can be chosen to create

    logic requiring table joins.

  • 7/29/2019 OracleSOA11g

    34/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 34

    Step 7 : Setup the attributes that will be written

    Step 8: Click NextStep 9: Click Finish.

    Step 4 - Layout the Process

    Create scope in the BPEL Process named InsertAccount filled with an Transformactivity named SetupAccount and an Invoke activity named InsertAccount. A finalreturnSuccess assign activity has also been added to update the output value toSuccess.

  • 7/29/2019 OracleSOA11g

    35/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 35

    Step 5 - Configure the Insert Account Invoke

    Configure the Invoke Operation to use operation insert and create the defaultparameters.

    Step 6 - Transform the Enterprise Account

    To convert the Enterprise Account into a readable format, open the transform.Select the source as the inputVariable payload, set the target to the insert inputvariable for the DB Adapter, and then Create a new mapper file namedxsl/XFormCreateAccount.xsl. Update the mappings as shown.

    Step 7 - Deploy the EAInbound project

    Section 3.3 - Trigger Events from the Enterprise Application Database

    Now that accounts are written to the EA database, this project will set up a pollingmechanism to trigger a BPEL flow when the Strategy Notes are added to theCustomer Account.

    XSLT makes it quick to create and

    standardize transformations between

    business domains that can be reused

    throughout the application.

  • 7/29/2019 OracleSOA11g

    36/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 36

    Step 1 - Create an EA Outbound Integration Project

    Create a new SOA Project named EAOutboundIntegration that contains a BPELProcess named UpdateAccount. In the composite, we will delete the ExposedService that was created since the process will be initiated from a polling adapter.The default WSDL definition can also be removed.

    Step 2 - Create a new DB Adapter to Poll the EA Database

    Open the BPEL Process and drag the Database Adapter from the ComponentPalette onto the process. Name the Adapter DatabaseEventListener and pressnext.

    The auto generated services and port types

    are not needed in this bpel process since a

    DB Polling Adapter will instantiate the

    process, and an external service will then

    be invoked.

  • 7/29/2019 OracleSOA11g

    37/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 37

    Step 3 - Choose the Database Connection and press Next.

    Step 4 - Choose to Poll for New or Changed Records in a Table

    Step 5 - Choose the table CUSTOMER_ACCOUNTS

    The Query button will display a list of available tables will appear. SelectCUSTOMER_ACCOUNT and click the arrow to move it into the selected tables.Click OK and next through to step 8.

    Database Polling works by executing a

    query against the database at intervals and

    generating a message containing all new or

    changed records. All records will be sent

    as an array in the same process flow, so

    records may need to be looped through and

    individually processed or correlated with

    long running processes.

  • 7/29/2019 OracleSOA11g

    38/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 38

    Step 6 - Choose to Delete the Row that was Read

    Step 7 - Accept Default Polling

    Step 8 - Edit the SQL to Read Accounts with a Promotion Strategy Add a where clause to the sql by pressing the edit button and building a newExpression. Set the Query Key to Promotion_Strategy, the Operator to NotEqual, and the Second Argument to an empty Literal that will be translated to null.Then press Ok, Next, Next, Finish to create the adapter.

    Database Polling requires a data condition

    to be satisfied within the database to

    identify when a record has changed. This

    trigger can be an update or create date,

    restricting the query based on a data value,

    or as simple as removing the record once it

    polled.

  • 7/29/2019 OracleSOA11g

    39/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 39

    Step 9Update the Initial Receive Activity for the BPEL Process

    Double click on the default receive activity that instantiates the process. Changethe name to ReceiveAccountUpdate, Change the Partner Link to theDatabaseEventListener, set the operation to receive, and create the defaultvariable. Ensure that the Create Instance button is checked.

    When consuming outbound events from a

    database, the initial Receive activity must

    have the Create Instance box checked so

    the process can be created.

  • 7/29/2019 OracleSOA11g

    40/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 40

    Step 10 Create a Partner Link to the Enterprise Business Service

    Drag a Web Service onto the BPEL Process. Name it SaveAccountEBS, make it oftype reference, and pull up the search for the WSDL URL. In the SOA ResourceBrowser, navigate to the Resource Palette| Application Server | EBS ProjectName | and select the WSDL.

    Step 11 Update the clientCallback Invoke to call the EnterpriseBusinessService

    By having all outbound business

    connectors call the Enterprise Business

    Service, it is easy to centrally configure the

    routing of all messages.

  • 7/29/2019 OracleSOA11g

    41/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 41

    Step 12 Add a Transform Operation

    Map the input variable from the DB Polling Adapter to the outbound variablebeing sent to the Enterprise Business Service, and create a new XSL Mapper file.

    Step 13 Map the EA Account to the Enterprise Account

    Step 14 - Deploy the SalesforceOutboundIntegration project

    Section 3.4 - Configure Enterprise Business Service Routing Rules

    Now that Inbound and Outbound Integrations have been setup for Salesforce.com

    and the example Enterprise Application, the routing logic within the Enterprise

    Business Service can be updated.

    This process is triggered by a database

    adapter, so it is important to check the

    Receive activity connected to the Database

    Event Listener and ensure the Create

    Instance option is checked.

    This whitepaper describes a very simple

    integration where routing can directly

    occur between application specific

    business connectors. For more complex

    processes, the Enterprise Business Service

    may route to a long running Enterprise

    Business Flow that could centrally manage

    the flow in an application independent way.

  • 7/29/2019 OracleSOA11g

    42/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 42

    Step 1 Add Web Service References to the Salesforce.com Inbound Integration

    In the AccountFollowUpEBS composite.xml, drag a Web Service onto the SOA

    Composite. Create a Service named Salesforce.com of type reference, and open the

    SOA Resource Browser to find the Salesforce.com Inbound WSDL location on

    the application server in the Resource Palette.

    Step 2 Add Web Service References to the EA Inbound Integration

    Drag another Web Service onto the SOA Composite. Create a Service named

    EAInbound of type reference, and open the SOA Resource Browser to find the

    EA Inbound WSDL location on the application server in the Resource Palette.

  • 7/29/2019 OracleSOA11g

    43/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 43

    Step 3 Connect the Mediator to the newly created Service Reference

    Step 4 Add Routing Rules in the Mediator

    Double Click on the Mediator to view the routing. Static Routing references havebeen created, but the routing rules need to be updated so the mediator correctly

    route based on the content of the EnterpriseAccount.

    For each Static Routing Rule, click on the funnel to edit the Routing Expression.

    For the Salesforce.com Mapping add:

    string($in.request/inp1:EnterpriseAccount/inp1:strategyNotes) != ""

    For the EA Inbound Mapping, add the inverse:

    string($in.request/inp1:EnterpriseAccount/inp1:strategyNotes) = ""

    Once a Mediator is connected two services,

    content-based routing rules need to be

    configured or messages will be propagated

    to both services.

  • 7/29/2019 OracleSOA11g

    44/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 44

    Step 5 - Deploy the Enterprise Business Service

    SECTION 4 - TESTING AND AUDITING THE INTEGRATIONThis section outlines how to run the end to end test, and then audits the BPELProcess to show the results.

    Section 4.1 - Account Follow Up Test (Salesforce.com Enterprise

    Application)

    Step 1 - Navigate within Salesforce.com to Create New Account

    After logging into Salesforce.com, select Create New Account which can also beaccessed under the Account tab by clicking the New button.

    Step 2 - Enter the Account InformationEnsure the Customer Priority is set to High to trigger the workflow, and fill outthe Phone, Annul Revenue, Employees, and Description fields which will beviewed by the business user in the external Enterprise Application Press Save.

    New Accounts can be created quickly in

    Salesforce.com by navigating to the

    Accounts tab and selecting New.

  • 7/29/2019 OracleSOA11g

    45/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 45

    Step 3 - View the Account in the Enterprise Application

    Section 4.2 - Audit the Account Follow Up Integration within Oracle

    SOA Suite

    Step 1 - Navigate to the process instances

    Open the Enterprise Manager, click on SOA | soa-infra | Instances tab | PressSearch. The flow can now be seen through the SalesforceOutboundIntegrationprocess into the EAInboundIntegration Process.

    Step 2 - View the Flow Trace

    Click on the Instance ID for the EAInboundIntegration that was just run.

    SQL Developer is being used as the User

    Interface to update fields in this demo

    Enterprise Application.

    The flow trace highlights the loosely

    coupled process flow from the

    OutboundSalesforce.com integration,

    through the Enterprise Business Service,

    and into the Inbound EA integration.

  • 7/29/2019 OracleSOA11g

    46/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 46

    Step 3 - Validate the Data Insert

    Click on the EAOutboundAdapter BPEL Component to validate everything ransuccessfully. Expand the UpdateAccountInvoke to validate the data being insertedinto the Enterprise Application.

    Section 4.3 - Opportunity Creation Test (Enterprise Application toSalesforce.com)

    Step 1 - Update the Test Account with a Promotion Strategy and Strategy Note

    Once this change is committed, the data

    will be propagated back to Salesforce.com

    as an opportunity within 5 seconds since

    the default database polling configuration

    is used.

  • 7/29/2019 OracleSOA11g

    47/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 47

    Step 2 - Verify the Account was created in Salesforce.com

    Open Salesforce.com, refresh the Account created earlier, and validate that theOpportunity has been created under Opportunities.

  • 7/29/2019 OracleSOA11g

    48/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 48

    Step 3 - Validate the Opportunity

    Click on the Opportunity Name and verify the opportunity was created.

    Section 4.4 - Audit the Opportunity Creation integration within OracleSOA Suite

    Step 1 - View the SOA Composite Instances

    Navigate to Enterprise Manager | SOA | soa-infra | Instances | Search listing tosee that the EA Outbound and Salesforce.com Inbound SOA Composites haveexecuted.

    Enterprise Manager has allowed all types of

    SOA Composites to be viewed in the same

    SOA admin console.

  • 7/29/2019 OracleSOA11g

    49/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 49

    Step 2 - View the Flow Trace

    Drill into the instance id for Inbound Salesforce.com composite. Validate that allparts of the process ran successfully.

    Step 3 - Verify the Login to Salesforce.com Activity

    Drill into the UpdateSalesforceAccount BPEL Component.Click on Flow View | Click on the Login to Salesforce activity and verify that thesession id and Server URL were returned.

    Step 4 - Verify the Endpoint Reference

    Click on the Set Server URL activity to verify the Endpoint Reference was updatedto use the Salesforce server url.

    This diagram shows the session id and

    server URL that were generated from a

    successful login.

    The partner link has been dynamically

    updated to route all service calls to a

    dynamic endpoint location during process

    execution.

  • 7/29/2019 OracleSOA11g

    50/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 50

    Step 5 - Verify the Session Header

    Select the Set Session Id activity to verify that the Salesforce session id has beenpassed into the session header which will be used on subsequent invokes.

    Step 6 - Verify the Write Opportunity

    Click on the Write Opportunity activity and validate the Opportunity has thecorrect information and that the result says it was created successfully.

    Step 7 Verify the Query and Opportunity Returned

    Click on the Query Account activity and validate the SOQL (Salesforce ObjectQuery Language) was properly formed and returned the expected Opportunity.

  • 7/29/2019 OracleSOA11g

    51/52

    Bridging the Gap between Internal Systems and Salesforce.com using Oracle SOA Suite 11g Page 51

    The Returned Opportunity:

    SECTION 5 - CONCLUSION

    This whitepaper has demonstrated that integrating with Salesforce.com or anotherSaaS solution using Oracle SOA Suite 11g is not inherently more difficult thanintegrating with internal applications. The business scenario chosen provides a

    primer on how to build inbound and outbound integrations around Salesforce.comthat can be adapted to just about any project. The new features in Oracle SOASuite 11g also facilitate the creation of a loosely coupled, application independentdesign.

    Only the fields requested in the query will

    be returned. The return value will still

    conform to a Salesforce.com complex type

    so it is easy to work with.

  • 7/29/2019 OracleSOA11g

    52/52

    Bridging the Gap between Internal Systems and Salesforce.com with Oracle SOA Suite 11g

    September 2010Author: Brian Sipsey of M&S Consulting

    http://www.mandsconsulting.com

    Oracle Corporation

    World Headquarters

    500 Oracle Parkway

    Redwood Shores, CA 94065

    U.S.A.

    Worldwide Inquiries:

    Phone: +1.650.506.7000

    Fax: +1.650.506.7200

    oracle.com

    Copyright 2010, Oracle and/or its affiliates. All rights reserved.

    This document is provided for information purposes only and thecontents hereof are subject to change without notice.

    This document is not warranted to be error-free, nor subject to any

    other warranties or conditions, whether expressed orally or implied

    in law, including implied warranties and conditions of merchantability

    or fitness for a particular purpose. We specifically disclaim any

    liability with respect to this document and no contractual obligations