Contact Us 1-800-596-4880

Siebel Connector

Premium

The Anypoint Connector for Siebel lets you access connections between Mule integration applications and the Oracle Siebel customer relationship manager (CRM).

The Siebel Connector is composed of three separate modules, each providing different options for connecting with Siebel applications:

  • Oracle Siebel Business Objects: Create, update, upsert, query, and delete Siebel business components.

  • Oracle Siebel Integration Objects: Create, update, upsert, query, delete, query page, execute, and synchronize Siebel integration objects.

  • Oracle Siebel Business Services: Execute Siebel business services.

Each option is available after you install the corresponding Siebel connector. The Siebel connector is built using the Siebel Java Data Beans interface. Java Data Beans provides a native Java interface to access the Siebel Object Manager. The Siebel Object Manager lets a connector use a generic interface that doesn’t depend on a customized installation. To discover the metadata of Siebel objects in design time, use DataSense in Anypoint Studio. The Siebel connector takes advantage of the Siebel Repository to show a list of available objects as well as their structures in a Siebel custom installation. The objects can be business components, business objects, integration objects, or business services based on the connector type you have installed.

Before You Begin

Because of how closely the connector is coupled with Siebel CRM, this document assumes you have a working knowledge of Siebel Business Components, Business Objects, Business Services, and Integration Objects. This document also assumes that you are familiar with Mule, Anypoint Connectors, Anypoint Studio essentials, elements in a Mule flow, and global elements.

This document describes implementation examples within the context of Anypoint Studio, Mule’s graphical user interface, and, in parallel, includes configuration details for doing the same in the XML Editor.

Requirements

The Siebel connector requires the following two Siebel JAR files: Siebel.jar and SiebelJI_xxx..

Choose the SiebelJI_xxx.jar based on the locale of the Siebel installation. For instance, if the locale of Siebel installation is US_EN, use SiebelJI_enu.jar. The Siebel.jar and SiebelJI_enu.jar are available in the %SIEBEL_HOME%\8.1\Tools_1\CLASSES folder on the Siebel server. %SIEBEL_HOME% is the installation directory of Siebel.

You can add the JAR files to your Studio project while configuring the Siebel global element.

Dependencies

This connector requires Mule Runtime to work.

Compatibility Matrix

Application/Service Version

Mule Runtime

3.6.1 or higher

Siebel

v8.1

The Siebel v3.x connector is built and tested using Oracle Siebel 8.1 and IP2016.17. Because the Java Data Bean interface is generic, the Siebel v3.x connector works with Siebel versions 7.7, 7.8, and 8.0. However, the compatibility of the connector with any other version beside 8.1 and IP2016.17 has not been tested. The connector is not compatible with Siebel v7.5 and below.

To Install this Connector

  1. In Anypoint Studio, click the Exchange icon in the Studio taskbar.

  2. Click Login in Anypoint Exchange.

  3. Search for the connector and click Install.

  4. Follow the prompts to install the connector.

When Studio has an update, a message displays in the lower right corner, which you can click to install the update.

You must select which Siebel connector you want to install (choose between the Oracle Siebel Business Objects, Oracle Siebel Business Services, and Oracle Siebel Integration Objects). Each Siebel connector installs separately.

To use a Siebel connector in a production environment, you must have either an Enterprise license to use Mule or a CloudHub Starter, Professional, or Enterprise account.

Contact the MuleSoft Sales Team to arrange for either license. See also Installing an Enterprise License. Studio displays the Siebel Connector you installed in the palette.

The connectors displayed are:

  • Oracle Siebel Business Objects: Connects to Siebel business objects and components, which define business logic and encapsulate table data.

  • Oracle Siebel Business Services: Connects to Siebel business services to perform specific business functions or tasks.

  • Oracle Siebel Integration Objects: Connects to Siebel integration objects, providing a dynamic and hierarchical structure of business components

Updating From an Older Version

There should be three available Siebel Connectors (Oracle Siebel Business Objects Connector, Siebel Business Services Connector, and Siebel Integration Objects Connector).

When you choose to install one of the connectors, a screen appears that asks you to uninstall your old version of the connector and install the new one.

After the installation is completed, you can use the operations available to the Siebel Connector you installed. To use the other operations, you must install the remaining Siebel connectors.

Creating a New Project

To use the Siebel connector in a Mule application project:

  1. In Studio, select File > New > Mule Project.

  2. Enter a name for your new project and leave the remaining options with their default values.

  3. If you plan to use Git, check the Create a .gitignore file checkbox for the project to create a default gitignore file for Studio Projects, and then click Next.

  4. Click Finish to create the project.

Configuring the Siebel Global Element in the Studio Visual Editor

To use the Siebel connector in your Mule application, configure a global element for the Siebel connector you wish to use:

  • Business Objects

  • Business Services

  • Integration Objects

To configure the Siebel connector global elements in your Mule application:

  1. Click the Global Elements tab at the base of the canvas.

  2. On the Global Mule Configuration Elements screen, click Create.

  3. In the Choose Global Type wizard, expand Connector Configuration, and then select the connector you want to configure: Oracle Siebel Business Objects, Oracle Siebel Business Services, or Oracle Siebel Integration Objects.

  4. Click OK

  5. Enter the global element properties:

    1. For the Oracle Siebel Business Objects connector:

      siebel bo config
      Field Description

      RSA Encryption

      Choose if you want to use RSA encryption.

      Name

      Enter a name for this connector to reference it later.

      User

      Enter the Siebel username to be used.

      Password

      Enter the corresponding Siebel password.

      Server

      Enter the server IP address of your Siebel instance.

      Port

      Enter the port number.

      Server Name

      Enter the Siebel Enterprise server name.

      Object Manager

      Enter the value of the Object Manager of your Siebel instance. The default value is EAIObjMgr_enu.

      Language

      Enter the language corresponding to the locale of the Siebel instance.

      Encoding

      Enter an encoding type supported by the Siebel server.

      Enable DataSense

      This option is selected by default. If you want to disable the option, click the checkbox to clear it.

      DataSense Filters Business Components:

      (Composed of the two fields below, Default View Mode and DataSense Filter Query)

      Default View Mode

      Enter the default view for DataSense. The default value for this field is 3.

      Supported values:

      • 0 (SalesRepView):

        • Applies access control according to a single position or a sales team.

        • Displays records according to one of the following items: The user position or the sales team that includes a user’s position. The Visibility field or Visibility MVField of the business component determines the visibility.

      • 1 (ManagerView):
        Displays records that a user and others who report to the user can access. For example, it includes the records that Siebel CRM displays in the My Team’s Accounts visibility filter.

      • 2 (PersonalView):
        Displays records that a user can access, as determined by the Visibility Field property of the BusComp view mode object. For example, it includes the records that Siebel CRM displays in the My Accounts visibility filter.

      • 3 (AllView):
        Displays all records that includes a valid owner. For example, it includes the records that Siebel CRM displays in the All Accounts Across Organizations visibility filter.

      DataSense Filter Query

      Use this field to write a query to filter the Business Components metadata being downloaded into the application.

      Limit the number of objects to retrieve through DataSense to a few objects using search specifications, otherwise retrieving metadata slows down Studio.

      DataSense Filters Business Objects:

      (Composed of the two fields below, Default View Mode and DataSense Filter Query)

      Default View Mode

      Use to set the visibility type for a business component. The supported values are:

      • 0 (SalesRepView):

        • Applies access control according to a single position or a sales team.

        • Displays records according to one of the following items: The user position or the sales team that includes the user position. The Visibility field or Visibility MVField of the business component determines the visibility.

      • 1 (ManagerView):
        Displays records that the user and the others who report to the user can access. For example, it includes the records that Siebel CRM displays in the My Team’s Accounts visibility filter.

      • 2 (PersonalView):
        Displays records that the user can access, as determined by the Visibility Field property of the BusComp view mode object. For example, it includes the records that Siebel CRM displays in the My Accounts visibility filter.

      • 3 (AllView):
        Displays all records that includes valid owner. For example, it includes the records that Siebel CRM displays in the All Accounts Across Organizations visibility filter.

      Data Sense Filter Query

      Use this field to write a query to filter the Business Objects metadata being downloaded into the application.

      Limit the number of objects to retrieve through DataSense to a few objects using search specifications; otherwise retrieving metadata slows down Studio.

      Required Dependencies

      Click Add File to browse to and attach the required JAR files to your project’s Build path.

      siebel dep

      After the JAR files are attached, they appear in the lib\siebel directory of your project’s root folder.

      siebel green dep

      If you provide the wrong files (either invalid .jar or a completely different library), Studio displays the following error message:

      siebel select dep
    2. For the Siebel Business Services connector:

      siebel bs config
      Field Description

      RSA Encryption

      Choose if you want to use RSA encryption.

      Name

      Enter a name for this connector to reference it later.

      User

      Enter the Siebel username you want to use for this configuration.

      Password

      Enter the corresponding Siebel password.

      Server

      Enter the server IP address of your Siebel instance.

      Port

      Enter the port number.

      Server Name

      Enter the Siebel Enterprise server name.

      Object Manager

      Enter the value of the Object Manager of your Siebel instance. This defaults to EAIObjMgr_enu.

      Language

      Enter the language corresponding to the locale of the Siebel instance.

      Encoding

      Enter an encoding type supported by the Siebel server.

      Enable DataSense

      This option is selected by default. If you want to disable the option, click the box to clear it.

      Default View Mode

      Default View Mode is 3. It is used to set the visibility type for a business service.

      Supported values:

      • 0 (SalesRepView):

        • Applies access control according to a single position or a sales team.

        • Displays records according to one of the following items: The user position or the sales team that includes the user position. The Visibility field or Visibility MVField of the business component determines the visibility.

      • 1 (ManagerView):
        Displays records that the user and the others who report to the user can access. For example, it includes the records that Siebel CRM displays in the My Team’s Accounts visibility filter.

      • 2 (PersonalView):
        Displays records that the user can access, as determined by the Visibility Field property of the BusComp view mode object. For example, it includes the records that Siebel CRM displays in the My Accounts visibility filter.

      • 3 (AllView):
        Displays all records that includes valid owner. For example, it includes the records that Siebel CRM displays in the All Accounts Across Organizations visibility filter.

      Data Sense Filter Query

      Use this field to write a query to filter the Business Services metadata being downloaded into the application.

      Limit the number of objects to retrieve through DataSense to a few objects using search specifications, otherwise retrieving metadata slows down Studio. The Siebel Vanilla installation comes with 8000 predefined objects versus 350 in SFDC.

      Required Dependencies

      Click Add File to attach required JAR files to your project’s Build path.

      siebel dep

      After the JAR files are attached, they appear in the lib/siebel directory of your project’s root folder.

      siebel green dep

      If you provide the wrong files (either invalid JAR files or a completely different library), Studio displays the following error message:

      siebel select dep
    3. For the Siebel Integration Objects connector:

      siebel op config
      Field Description

      RSA Encryption

      Choose if you want to use RSA encryption.

      Name

      Enter a name for this connector to reference it later.

      User

      Enter the Siebel username you want to use for this configuration.

      Password

      Enter the corresponding Siebel password.

      Server

      Enter the server IP address of your Siebel instance.

      Port

      Enter the port number.

      Server Name

      Enter the Siebel Enterprise server name.

      Object Manager

      Enter the value of the Object Manager of your Siebel instance. This defaults to EAIObjMgr_enu.

      Language

      Enter the language corresponding to the locale of the Siebel instance.

      Encoding

      Enter an encoding type supported by the Siebel server.

      Enable DataSense

      This option is selected by default. If you want to disable the option, click the box to clear it.

      Default View Mode

      The default value for this field is 3. It is used to set the visibility type for a integration object.

      Supported values:

      • 0 (SalesRepView):

        • Applies access control according to a single position or a sales team.

        • Displays records according to one of the following items: The user position or the sales team that includes the user position. The Visibility field or Visibility MVField of the business component determines the visibility.

      • 1 (ManagerView):
        Displays records that the user and the others who report to the user can access. For example, it includes the records that Siebel CRM displays in the My Team’s Accounts visibility filter.

      • 2 (PersonalView):
        Displays records that the user can access, as determined by the Visibility Field property of the BusComp view mode object. For example, it includes the records that Siebel CRM displays in the My Accounts visibility filter.

      • 3 (AllView):
        Displays all records that includes valid owner. For example, it includes the records that Siebel CRM displays in the All Accounts Across Organizations visibility filter.

      Data Sense Filter Query

      Use this field to write a query to filter the Integration Objects metadata being downloaded into the application.

      Limit the number of objects to retrieve through DataSense to a few objects using search specifications; otherwise retrieving metadata slows down Studio. The Siebel Vanilla installation comes with 8000 predefined objects versus 350 in SFDC.

      Data Sense Flat Fields

      Select this box to allow Studio to flatten the object for DataSense purposes.

      Anypoint Studio doesn’t support hierarchical objects.

      Required Dependencies

      Click Add File to attach required JAR files to your project’s Build path. siebel dep

  6. Keep the Pooling Profile and the Reconnection tabs with their default entries.

  7. Click Test Connection to confirm that the parameters of your global Siebel connector are accurate, and that Mule is able to successfully connect to your instance of Siebel. Read more about Testing Connections.

  8. Click OK to save the global connector configurations.

Using the Connector

The Siebel Connector is an operation-based connector, which means that when you add the connector to your flow you must specify an operation to perform.

See the technical reference documentation for the latest versions below in order to learn about the data types that the various Siebel connectors expect and return:

Use Cases

The following are common use cases for the Siebel connector:

  • Poll a Siebel connector at a regular interval for new registries and send the output into Salesforce.

  • Poll a Salesforce connector at a regular interval for new registries and send the output into Siebel.

Adding the Siebel Connector Business Object Connector to a Flow

  1. Create a new Mule project in Anypoint Studio.

  2. Add a suitable Mule Inbound endpoint, such as the HTTP listener or File endpoint, to begin the flow.

  3. Drag the Siebel Business Objects connector onto the canvas, then select it to open the properties editor.

  4. Drag the business objects connector onto the canvas, then select it to open the properties editor.

  5. Configure the connector’s parameters:

    siebel query
    Field Description

    Display Name

    Enter a unique label for the connector

    Connector Configuration

    Select a global Siebel connector element from the dropdown.

    General

    The values in the General section vary depending on the operation you choose. The fields below are specific to Query Business Component operation. For a detailed explanation of all the available

    Sort Specification

    Specify sorting criteria for the list of business components returned by the query.

    Business Object Component Type

    Define the Siebel business object type to act upon. The Siebel Jdb connector can access any one of the many business objects available in the Siebel CRM.

    Search Expression

    Use Mule Expression Language (MEL) to define a search expression that would return a list of business components.

    View Mode

    Define the Siebel view mode for the results the connector returns.

    FieldstoRetrieve

    Use this section to specify the list of fields to retrieve in the query:

    From Message: Specify the Business Component fields to retrieve in the incoming payload.

    Create Object manually: Specify the fields manually using the Object Builder editor.

    Search Spec

    Specify the search values to use as filters in the search query:

    From Message: Define which values to use as search filters in the incoming payload.

    Create Object manually: Define which values to use as search filters manually using the Object Builder editor.

    Generic

    Operation

    Define the action this component must perform: create, delete, update, insert, upsert, or query business components

Adding the Siebel Business Service Connector to a Flow

  1. Create a new Mule project in Anypoint Studio.

  2. Add a suitable Mule Inbound endpoint, such as the HTTP listener or File endpoint, to begin the flow.

  3. Drag the Siebel Business Service connector onto the canvas, then select it to open the properties editor.

  4. Drag the business Service connector onto the canvas, then select it to open the properties editor.

  5. Configure the connector’s parameters:

    Connector Parameters
    Field Description

    Display Name

    Enter a unique label for the connector

    Connector Configuration

    Select a global Siebel connector element from the dropdown.

    Operation

    Define the action this component must perform: Define the action this component must perform:

    Execute: Executes a Siebel Service using SiebelPropertySets.

    Execute business service: Executes a Siebel Service using Maps instead of SiebelPropertySet.

    General

    If you select the Execute operation:

    Integration Object

    Define the Siebel integration object type to act upon.

    Method Name

    Enter the name of the method to be executed.

    ServiceName

    Enter the name of the Siebel service to be executed

    Input Properties

    From Message: Define the SiebelPropertySet in the incoming payload.

    Create Object manually: Define the SiebelPropertySet manually

    If you select the Execute business service operation:

    Business Service

    Define the Siebel integration object type to act upon.

    Input

    From Message: Specify which service to execute in the incoming payload.

    Create Object manually: Specify which service to execute manually.

Adding the Siebel Integration Objects Connector to a Flow

  1. Create a new Mule project in Anypoint Studio.

  2. Add a suitable Mule Inbound endpoint, such as the HTTP listener or File endpoint, to begin the flow.

  3. Drag the Siebel Integration Objects connector onto the canvas, then select it to open the properties editor.

  4. Configure the connector’s parameters:

    Connector Parameters
    Field Description

    Display Name

    Enter a unique label for the connector

    Connector Configuration

    Select a global Siebel connector element from the dropdown.

    Operation

    Define the action this component must perform: Execute Siebel Adapter.

    General

    Integration Object

    Define the Siebel integration object type to act upon.

    Method

    Define the EAI Siebel Adapter method.

    Input Properties

    Use this section to specify the list of fields to retrieve in the query:

    From Message: Map the Integration Object fields from the incoming payload.

    Create Object manually: Map the Integration Object field manually using the Object Builder editor.

  5. Click the blank space on the canvas to save your connector configurations.

Example Use Case

Poll a Siebel connector at a regular interval, looking for new registries, and send the output into Salesforce.

The DataMapper and DataWeave elements are roughly interchangeable. You must make certain adjustments to get the transformation you need. Refer to the applicable documentation.

Refer to documentation on the Poll Scope, DataMapper or DataWeave, and the Salesforce connector for in-depth information about these Mule elements.

Demo Flow
  1. Create a Mule project in your Anypoint Studio.

  2. Drag a Poll Scope to a new flow.

    poll2
  3. Poll Reference executes any Mule element you place inside it at regular intervals. In this case, it is a Siebel endpoint.

  4. Configure the Poll Scope as follows.

    pollnew
    Attribute Value

    Frequency

    60000

    Start Delay

    0

    Time Unit

    MILLISECONDS

    Enable Watermark

    check

    Variable Name

    lastUpdate

    Default Expression

    #[new org.joda.time.DateTime().withZone(org.joda.time.DateTimeZone.forID("PST8PDT")).minusSeconds(5).toString("MM/dd/yyyy HH:mm:ss")]

    Update Expression

    #[new org.joda.time.DateTime().withZone(org.joda.time.DateTimeZone.forID("PST8PDT")).minusSeconds(5).toString("MM/dd/yyyy HH:mm:ss")]

    The poll scope triggers once a minute. The watermark ensures that registries in the Siebel DB aren’t processed more than once. It does this by keeping track of the last element processed in the last poll.

    To learn how watermarks work and what each attribute is for, read about Poll Schedulers.
  5. Drag an Oracle Siebel Business Objects connector into the space provided by the Poll Scope.

    poll

    The Siebel connector is now polled at the intervals you specified in the Poll Scope.

  6. Open Siebel connector’s properties editor, and next to the Config Reference field, click the plus sign to add a new Global Element.

    boconfig
  7. On the Global Element Properties window, configure the global element according to the settings below:

    config
    Attribute Value

    Name

    Oracle_Siebel_Business_Object

    User

    Your Siebel user name

    Password

    Your Siebel password

    Port

    Port you’re using

    Server Name

    Server name on which the Siebel instance is hosted

    Object Manager

    Object manager you use

    Default View Mode

    3

    Data Sense Filter Query

    [Name] = 'Action_IO' OR [Name] = 'Contact_IO'

    Default View Mode

    3

    Data Sense Filter Query

    [Name] = 'Action_IO' OR [Name] = 'Contact_IO'

    DataSense is filtered via a query to extract data only from Contacts and Action. This allows for improved performance by avoiding unnecessary data extraction.
  8. Click Test Connection at the bottom of the window to ensure that everything is correctly configured.

  9. Next, configure the Oracle Siebel Business Objects connector according to the settings below:

    boconfig1
    Attribute Value

    Display Name

    Oracle Siebel business objects

    Connector Configuration

    Oracle_Siebel_Business_Object

    Business Object Component Type

    Contact.Contact

    Search Expression

    [Last Update - SDQ] > '#[flowVars.lastUpdate]'

    View Mode

    3

    fields-to-retrieve

    Create Object Manually

    search-spec

    None

    Operation

    Query business components

    Note: The search expression uses the same variable that is being updated by the Poll Scope. In this way, the Siebel connector returns only those DB records that Mule hasn’t processed in the last poll.

    Child Element Description

    siebel:fields-to-retrieve

    Lists the output fields of the query

  10. To set up the structure of the output message, switch views to the Studio XML Editor. Look for the Siebel connector in your XML code in a tag that looks like the tag below:

    <siebel:query-business-components config-ref="Oracle_Siebel_Business_Object"
     businessObjectComponentType="Contact.Contact"
     searchExpression="[Last Update - SDQ] &gt; '#[flowVars.lastUpdate]'"
     doc:name="oracle siebel business objects">
    </siebel:query-business-components>

    In between the start and end tags of the siebel:query-business-components, add the following child element structure:

    <siebel:fields-to-retrieve>
        <siebel:fields-to-retrieve>Last Name</siebel:fields-to-retrieve>
        <siebel:fields-to-retrieve>Email Address</siebel:fields-to-retrieve>
        <siebel:fields-to-retrieve>First Name</siebel:fields-to-retrieve>
        <siebel:fields-to-retrieve>Primary Organization</siebel:fields-to-retrieve>
        <siebel:fields-to-retrieve>Personal Contact</siebel:fields-to-retrieve>
        <siebel:fields-to-retrieve>Employee Number</siebel:fields-to-retrieve>
        <siebel:fields-to-retrieve>Account Integration Id</siebel:fields-to-retrieve>
    </siebel:fields-to-retrieve>
  11. Drag a Logger after the Poll to register the Poll output.

    logger
    Attribute Value

    Message

    Polling from Siebel #[payload]

    Level

    Info

  12. Drag a Salesforce Connector after the Logger. It uploads the output of the poll into your Salesforce account.

    salesforce
  13. Open the Properties editor of the Salesforce connector, and click the plus sign to add a new Salesforce global element.

  14. On the Choose Global Type window, click Salesforce: Basic authentication, and then click Ok.

    sfbasicauth
  15. Configure the Salesforce global element properties:

    salesconfig
    Attribute Value

    Name

    Salesforce

    Username

    Your user name

    Password

    Your password

    Security Token

    Your Token

    Url

    The URL at which your Salesforce account is hosted

    Proxy Port

    80

    Enable DataSense

    check

  16. Click Test Connection to ensure that everything is correctly configured.

  17. Configure the Salesforce connector according to the settings below:

    salesforce2
    Attribute Value

    Display Name

    Salesforce

    Connector Configuration

    Salesforce

    Operation

    Create

    sObject Type

    contact

    sObjects

    From Message:#[payload]

  18. Add a DataWeave element between the Logger and the Salesforce connector. It maps fields from the data structure returned by Siebel into the data structure required by Salesforce.

  19. Configure the DataWeave element:

    If you have already configured both connectors properly, DataWeave automatically shows what Siebel is giving as output and what Salesforce is getting as input

    Input:

    Attribute Value

    Type

    Connector

    Connector

    Oracle_Siebel_Business_Object

    Operation

    query-business-components

    Object

    List<Contact.Contact>

    Output:

    Attribute Value

    Type

    Connector

    Connector

    Salesforce

    Operation

    create

    Object

    List<Contact>

  20. Add a Logger at the end of the flow to register the outcome of the operation:

    flow2
    Attribute Value

    Message

    #[payload.toString()]

    Level

    Info

  21. Save and run the project as a Mule Application.

Configuring a Global Element with the XML Editor or Standalone

To use the Siebel connector in your Mule application, configure a global element for the Siebel connector you wish to use:

  • Business Objects

  • Business Services

  • Integration Objects

    1. At the start of your project, add a Salesforce Global Element to set up global configuration attributes for this connector:

      <sfdc:config name="Salesforce" username="${salesforce.user}"
      password="${salesforce.password}" securityToken="${salesforce.securitytoken}"
       url="${salesforce.url}" doc:name="Salesforce">
      <sfdc:connection-pooling-profile initialisationPolicy="INITIALISE_ONE"
      exhaustedAction="WHEN_EXHAUSTED_GROW"/>
      </sfdc:config>
      Element Description

      sfdc:config

      Configures connection settings for Salesforce

      Attribute Value

      name

      Salesforce

      username

      Your username

      password

      Your password

      security token

      Your security token

      url

      The URL on which your Salesforce account is hosted

      doc:name

      Salesforce

      Child Element Description

      sfdc:connection-pooling-profile

      Configures connection pooling settings for connecting to Salesforce

      Attribute Value

      initialisationPolicy

      INITIALISE_ONE

      exhaustedAction

      WHEN_EXHAUSTED_GROW

    2. After the Salesforce Global Element, add a Siebel Global Element to set up global configuration attributes for this connector:

      <siebel:config name="Oracle_Siebel_Business_Object" user="${siebel.user}"
       password="${siebel.password}" server="${siebel.server}"
       serverName="${siebel.servername}" objectManager="${siebel.mgr}"
       dataSenseFilterQueryBusComp="[Name] = 'Action_IO' OR [Name] = 'Contact_IO'"
       dataSenseFilterQueryBusObjects="[Name] = 'Action_IO' OR [Name] = 'Contact_IO'" doc:name="oracle siebel business objects">
             <siebel:connection-pooling-profile initialisationPolicy="INITIALISE_ONE" exhaustedAction="WHEN_EXHAUSTED_GROW"/>
          </siebel:config>
      Element Description

      siebel:config

      Configures connection settings for Siebel

      Attribute Value

      name

      Oracle_Siebel_Business_Object

      user

      Your user name

      password

      Your password

      server

      The IP address of your Siebel server

      serverName

      The Siebel Enterprise server name

      objectManager

      The object manager you use

      dataSenseFilterQueryBusComp

      [Name] = 'Action_IO' OR [Name] = 'Contact_IO'

      dataSenseFilterQueryBusObjects

      [Name] = 'Action_IO' OR [Name] = 'Contact_IO'

      doc:name

      oracle siebel business objects

      Child Element Description

      siebel:connection-pooling-profile

      Configures connection pooling settings for connecting to Siebel

      Attribute Value

      initialisationPolicy

      INITIALISE_ONE

      exhaustedAction

      WHEN_EXHAUSTED_GROW

    3. Build a new Flow:

      <flow name="Poll_Siebel_2_Salesforce" doc:name="Poll_Siebel_2_Salesforce" processingStrategy="synchronous">
          </flow>
    4. Add a Poll Scope inside your new Flow.

      <poll doc:name="Poll">
          <fixed-frequency-scheduler frequency="60000"/>
          <watermark variable="lastUpdate"
          default-expression="#[new org.joda.time.DateTime().withZone(org.joda.time.DateTimeZone.forID(&quot;PST8PDT&quot;)).minusSeconds(5).toString(&quot;MM/dd/yyyy HH:mm:ss&quot;)]" update-expression="#[new org.joda.time.DateTime().withZone(org.joda.time.DateTimeZone.forID(&quot;PST8PDT&quot;)).minusSeconds(5).toString(&quot;MM/dd/yyyy HH:mm:ss&quot;)]"/>
      </poll>
      Element Description

      poll

      A Poll Scope executes the Mule element you place inside it at regular intervals. In this case, it will be a Siebel endpoint.

      Child Element Description

      fixed-frequency-scheduler

      Sets the interval for polling

      Attribute Value

      frequency

      6000

      The poll scope triggers once a minute. The watermark ensures that registries in the Siebel DB aren’t processed more than once. It does so by keeping track of the last element processed in the last poll.

      Child Element Description

      watermark

      The watermark ensures that registries in the Siebel DB aren’t processed more than once by keeping track of what was the last element that was processed in the last poll.

      To learn how watermarks work and what each attribute is for, read about Poll Schedulers.
      Attribute Value

      variable

      lastUpdate

      default-expression

      #[new org.joda.time.DateTime().withZone(org.joda.time.DateTimeZone.forID("PST8PDT")).minusSeconds(5).toString("MM/dd/yyyy HH: mm:ss&quot ;)]

      update-expression

      #[new org.joda.time.DateTime().withZone(org.joda.time.DateTimeZone.forID("PST8PDT")).minusSeconds(5).toString("MM/dd/yyyy HH:mm:ss")]

    5. Inside this Poll Scope, add a Siebel:query-business-components element

      <siebel:query-business-components config-ref="Oracle_Siebel_Business_Object" businessObjectComponentType="Contact.Contact" searchExpression="[Last Update - SDQ] &gt; '#[flowVars.lastUpdate]'" doc:name="oracle siebel business objects">
          <siebel:fields-to-retrieve>
              <siebel:fields-to-retrieve>Last Name</siebel:fields-to-retrieve>
              <siebel:fields-to-retrieve>Email Address</siebel:fields-to-retrieve>
              <siebel:fields-to-retrieve>First Name</siebel:fields-to-retrieve>
              <siebel:fields-to-retrieve>Primary Organization</siebel:fields-to-retrieve>
              <siebel:fields-to-retrieve>Personal Contact</siebel:fields-to-retrieve>
              <siebel:fields-to-retrieve>Employee Number</siebel:fields-to-retrieve>
              <siebel:fields-to-retrieve>Account Integration Id</siebel:fields-to-retrieve>
          </siebel:fields-to-retrieve>
      </siebel:query-business-components>

      The Siebel connector polls at the intervals you specified in the Poll Scope:

      Element Description

      siebel:query-business-components

      Connects to Siebel Business Components

      Attribute Value

      config-ref

      Oracle_Siebel_Business_Object

      businessObjectComponentType

      Contact.Contact

      searchExpression

      doc:name

      oracle siebel business objects

      Child Element Description

      siebel:fields-to-retrieve

      Lists the output fields of the query

    6. After the Poll Scope, add a Logger to verify the output of this poll:

      <logger message="Polling from Siebel #[payload]" level="INFO" doc:name="Logger"/>
      Element Description

      logger

      Logs messages to the Mule console

      Attribute Value

      message

      Polling from Siebel #[payload]

      level

      Info

    7. Add a Salesforce connector after this logger. It uploads the output of the poll into your Salesforce account.

      <sfdc:create config-ref="Salesforce" type="Contact" doc:name="Salesforce">
          <sfdc:objects ref="#[payload]"/>
      </sfdc:create>
      Element Description

      sfdc:create

      Creates a contact entry on the specified Salesforce account

      Attribute Values

      config-ref

      Salesforce

      type

      Contact

      doc:name

      Salesforce

      Child Element Description

      sfdc:objects

      Defines what structure the created object will have

      Attribute Values

      ref

      #[payload]

    8. Add another logger after the Salesforce connector to verify the success of the operation.

      <logger message="#[payload.toString()]" level="INFO" doc:name="Logger"/>
      Element Description

      logger

      Logs messages to the Mule console

      Attribute Value

      message

      #[payload.toString()]

      level

      Info

    9. Add a DataWeave component between the first logger and the Salesforce connector. It maps fields from the data structure returned by Siebel into the data structure required by Salesforce

      <data-mapper:transform doc:name="DataWeave"/>
    10. Switch to Studio Visual editor to configure DataWeave correctly. Click the DataWeave icon to edit its fields:

      If you have already configured both connectors properly, DataWeave should be able to automatically suggest the mapping you need to make.

      Input:

      Attribute Value

      Type

      Connector

      Connector

      Oracle_Siebel_Business_Object

      Operation

      query-business-components

      Object

      List<Contact.Contact>

      Output:

      Attribute Value

      Type

      Connector

      Connector

      Salesforce

      Operation

      create

      Object

      List<Contact>

    11. Click Create mapping for DataWeave to build a mapping between both data structures.

    12. A few fields don’t have the same names in Salesforce as they do in Siebel. You must configure them manually.

      Name in Siebel Name in Salesforce

      Email_Address

      Email

      First_Name

      FirstName

      Last_Name

      LastName

      There are two ways in which you can link these:

      1. Look for the fields on both columns in DataLoader’s graphical view, then simply drag and drop one onto the other.

        This is usually the easiest way to go, but given the number of fields to navigate, it may be hard to find the fields you need. Use the search box above the field list to find these quickly.

      2. Enter DataLoader’s Script view and paste the following lines of code below what is already written:

        output.Email = input.Email_Address;
        output.FirstName = input.First_Name;
        output.LastName = input.Last_Name;

        The full code should look like this:

        //MEL
        //START -> DO NOT REMOVE
        output.__id = input.__id;
        //END -> DO NOT REMOVE
        output.Department = input.Department;
        output.Email = input.Email_Address;
        output.First_Name = input.First_Name;
        output.LastName = input.Last_Name;
    13. Save and run the project as a Mule Application.

Filtering Query Results

When executing queries using the Siebel Integration Object, you have a few options on how to filter the results Siebel Query Method.

One way is to modify the property set given as input to the query and change the value of the fields that enter your search criteria with a Siebel expression in order to filter the results.

Another way is to use the "searchspec" field in the business object you wish to filter. In order to guarantee the records are filtered correctly, no other business object field should be used alongside the searchspec field.

Managing the Connection Pool

To define the pooling profile for the connector manually, access the Pooling Profile tab in the applicable global element for the connector.

For background information on pooling, see Tuning Performance.

Example Code

For the example use case code to work in Anypoint Studio, you must provide the credentials for both Siebel and Salesforce accounts. You can either replace the variables with their values in the code, or you can add a file named mule.properties in the src/main/properties folder to provide values for each variable.

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:context="http://www.springframework.org/schema/context"
	xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw"
	xmlns:siebel="http://www.mulesoft.org/schema/mule/siebel" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:data-mapper="http://www.mulesoft.org/schema/mule/ee/data-mapper" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
	xmlns:spring="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-current.xsd http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/siebel http://www.mulesoft.org/schema/mule/siebel/current/mule-siebel.xsd
http://www.mulesoft.org/schema/mule/ee/data-mapper http://www.mulesoft.org/schema/mule/ee/data-mapper/current/mule-data-mapper.xsd">

   <siebel:config name="Oracle_Siebel_Business_Object" user="${siebel.user}" password="${siebel.password}" server="${siebel.server}" serverName="${siebel.servername}" objectManager="${siebel.mgr}" dataSenseFilterQueryBusComp="[Name] = 'Action' OR [Name] = 'Contact'" dataSenseFilterQueryBusObjects="[Name] = 'Action' OR [Name] = 'Contact'" doc:name="oracle siebel business objects">
        <siebel:connection-pooling-profile initialisationPolicy="INITIALISE_ONE" exhaustedAction="WHEN_EXHAUSTED_GROW"/>
    </siebel:config>
    <context:property-placeholder location="mule.properties"/>
    <flow name="siebel2salesforce" >
        <poll doc:name="Poll">
            <fixed-frequency-scheduler frequency="60000"/>
            <watermark variable="lastUpdate" default-expression="#[new org.joda.time.DateTime().withZone(org.joda.time.DateTimeZone.forID(&quot;PST8PDT&quot;)).minusSeconds(5).toString(&quot;MM/dd/yyyy HH:mm:ss&quot;)]" update-expression="#[new org.joda.time.DateTime().withZone(org.joda.time.DateTimeZone.forID(&quot;PST8PDT&quot;)).minusSeconds(5).toString(&quot;MM/dd/yyyy HH:mm:ss&quot;)]"/>
            <siebel:query-business-components config-ref="Oracle_Siebel_Business_Object" businessObjectComponentType="Contact.Contact" searchExpression="[Last Update - SDQ] &gt; '#[flowVars.lastUpdate]'" doc:name="oracle siebel business objects">
                <siebel:fields-to-retrieve>
                    <siebel:fields-to-retrieve>Last Name</siebel:fields-to-retrieve>
                    <siebel:fields-to-retrieve>Email Address</siebel:fields-to-retrieve>
                    <siebel:fields-to-retrieve>First Name</siebel:fields-to-retrieve>
                    <siebel:fields-to-retrieve>Primary Organization</siebel:fields-to-retrieve>
                    <siebel:fields-to-retrieve>Personal Contact</siebel:fields-to-retrieve>
                    <siebel:fields-to-retrieve>Employee Number</siebel:fields-to-retrieve>
                    <siebel:fields-to-retrieve>Account Integration Id</siebel:fields-to-retrieve>
                </siebel:fields-to-retrieve>
            </siebel:query-business-components>
        </poll>
        <logger message="Polling from Siebel #[payload]" level="INFO" doc:name="Logger"/>
        <dw:transform-message doc:name="Transform Message">
            <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
{
  "SiebelMessage":payload.SiebelMessage
}]]></dw:set-payload>
        </dw:transform-message>

        <sfdc:create config-ref="Salesforce" type="Contact" doc:name="Salesforce">
            <sfdc:objects ref="#[payload]"/>
        </sfdc:create>
        <logger message="#[payload.toString()]" level="INFO" doc:name="Logger"/>
    </flow>
</mule>

See Also

View on GitHub