
Siebel Connector
Premium
Anypoint Connector for Siebel lets you access connections between Mule integration applications and the Oracle Siebel customer relationship manager (CRM).
Release Notes: Siebel Connector Release Notes
The connector provides these options to connect to 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.
Prerequisites
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 assumes you are familiar with Mule, Anypoint Connectors , and Anypoint Studio Essentials To increase your familiarity with Studio, consider completing one or more Anypoint Studio Tutorials. Further, this page assumes that you have a basic understanding of Mule flows and Mule Global Elements.
The Siebel connector requires the following two Siebel JAR files: Siebel.jar
and SiebelJI_xxx.jar
.
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. Learn how to configure the Siebel connector global element. |
Compatibility
The Siebel connector is compatible with:
Application/Service | Version |
---|---|
Mule Runtime |
3.6.1 or higher |
Siebel |
v8.1 |
The Siebel v2.1.0 connector is built and tested using Oracle Siebel 8.1. Because the Java Data Bean interface is generic, the Siebel v2.1.0 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 has not been tested. The connector is not compatible with Siebel v7.5 and below. |
Siebel Connector Architecture
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 option you configure.
Following is the integration architecture of the Anypoint Connector for Siebel:

Installing and Configuring
Installing
You can install a connector in Anypoint Studio using the instructions in To Install a Connector from Anypoint Exchange.
To use the Siebel connector in a production environment, you must have either:
-
An Enterprise license to use Mule
-
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 three new connectors in the palette:
-
Oracle Siebel Business Objects: Connects to Siebel business objects and components.
-
Oracle Siebel Business Services: Connects to Siebel business services.
-
Oracle Siebel Integration Objects: Connects to Siebel integration objects.
Creating a New Project
To use the Siebel connector in a Mule application project:
-
In Studio, select File > New > Mule Project.
-
Enter a name for your new project and leave the remaining options with their default values.
-
If you plan to use Git, select Create a .gitignore file for the project with default ignores for Studio Projects, and then click Next.
-
Click Finish to create the project.
Configuring the Siebel Global Element
To use the Siebel connector in your Mule application, you must configure a global element for each of the following Siebel business layers:
-
Business Objects
-
Business Services
-
Integration Objects
Siebel Connector and DataSense
If you intend to use a Siebel connector in conjunction with a DataMapper transformer to map and transform data, you can make use of Anypoint Studio’s DataSense functionality. You can enable DataSense as part of configuring the global element.
|
To configure the Siebel connector global elements in your Mule application:
Studio Visual Editor
-
Click the Global Elements tab at the base of the canvas.
-
On the Global Mule Configuration Elements screen, click Create.
-
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.
-
Click OK
-
Enter the global element properties:+
-
For the Oracle Siebel Business Objects connector:
Field Description Name
Enter a name to this connector to reference it later.
User
Enter the Siebel username to use.
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 check box to clear it.
DataSense Filters Business Components:
Default View Mode
Enter the default view for Data Sense. 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.Data Sense Filter Query
Use this field to write a query to filter the Business Components metadata being downloaded into the application. [NOTE] 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:
Default View Mode
Use to set the visibility type for a business component. The 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 Objects metadata being downloaded into the application.
[NOTE] 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.
image::requireddependencies1.png[]
After the jar files are attached, they appear in the
lib\siebel
directory of your project’s root folder.image::required-dependencies.png[required+dependencies]
If you provide the wrong files (either an invalid jars or a completely different library), Studio displays the following error message:
image::depedencies-error.png[depedencies+error]
-
For the Siebel Business Services connector:
Field Description Name
Enter a name to 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.
After the jar files are attached, they appear in the lib/siebel directory of your project’s root folder.
If you provide the wrong files (either an invalid jars or a completely different library), Studio displays the following error message:
-
-
For the Siebel Integration Objects connector:
Field Description Name
Enter a name to 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.
After jar files are attached, they appear in the
lib/siebel
directory of your project’s root folder.If you provide the wrong files (either an invalid jars or a completely different library), Studio displays the following error message:
-
-
-
Keep the Pooling Profile and the Reconnection tabs with their default entries.
-
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.
-
Click OK to save the global connector configurations.
XML Editor
-
To configure the Siebel Business Objects connector:
-
Ensure you have included the following namespaces in your configuration file:
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:siebel="http://www.mulesoft.org/schema/mule/siebel" xsi:schemaLocation=" http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/siebel http://www.mulesoft.org/schema/mule/siebel/current/mule-siebel.xsd"> <!-- here goes your flows and configuration elements --> </mule>
-
Create a global Siebel Business Object configuration outside and above your flows, using the following global configuration code:
<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">
Parameter Description name
Enter a name for this connector to reference it later.
user
Enter the Siebel username to use.
password
Enter the corresponding Siebel password.
server
Enter the server IP address of your Siebel instance.
serverName
Enter the Siebel Enterprise server name.
objectManager
Enter the value of the Object Manager of your Siebel instance. This defaults to
EAIObjMgr_enu
.dataSenseFilterQueryBusComp
Write a query to filter the Business Components metadata being downloaded into the application.
defaultViewModeBusComp
Enter the default view for DataSense purposes. 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.
dataSenseFilterQueryBusObjects
Write a query to filter the Business Objects metadata being downloaded into the application.
defaultViewModeBusObjects
Use to set the visibility type for a business component. 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.
-
-
To configuring the Siebel Business Services Connector:
-
Ensure you have included the following namespaces in your configuration file:
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:siebel-bs="http://www.mulesoft.org/schema/mule/siebel-bs" xsi:schemaLocation=" http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/siebel-bs http://www.mulesoft.org/schema/mule/siebel-bs/current/mule-siebel-bs.xsd"> <!-- here goes your flows and configuration elements --> </mule>
-
Create a global Siebel Business Services configuration outside and above your flows, using the following global configuration code.
<siebel-bs:config name="Oracle_Siebel_Business_Services__Connection" user="${siebel.user}" password="${siebel.password}" server="${siebel.server}" serverName="${siebel.servername}" objectManager="${siebel.mgr}" dataSenseFilterQuery="${siebel.filterBusComp}" doc:name="Oracle Siebel Business Services: Connection" fileEncoding="${siebel.encoding}" language="${siebel.language}" port="${siebel.port}"/>
Field Description Name
Enter a name for this connector to reference it later.
user
Enter the Siebel username to use.
password
Enter the corresponding Siebel password.
server
Enter the server IP address of your Siebel instance.
serverName
Enter the Siebel Enterprise server name.
objectManager
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.
fileEncoding
Enter an encoding type supported by the Siebel server.
dataSenseFilterQuery
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. defaultViewMode
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.
-
-
To configure the Siebel Integration Objects connector:
-
Ensure you have included the following namespaces in your configuration file:
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:siebel-io="http://www.mulesoft.org/schema/mule/siebel-io" xsi:schemaLocation=" http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/siebel-io http://www.mulesoft.org/schema/mule/siebel-io/current/mule-siebel-io.xsd"> <!-- here goes your flows and configuration elements --> </mule>
-
Create a global Siebel Integration Objects configuration outside and above your flows, using the following global configuration code:
<siebel-io:config name="Oracle_Siebel_Integration_Objects__Connection" user="${siebel.user}" password="${siebel.password}" server="${siebel.server}" serverName="${siebel.servername}" objectManager="${siebel.mgr}" dataSenseFilterQuery="${siebel-io.dataSenseFilterQuery}" doc:name="Oracle Siebel Integration Objects: Connection" fileEncoding="${siebel.encoding}" language="${siebel.language}" port="${siebel.port}"/>
Field Description name
Enter a name for this connector to reference it later.
user
Enter the Siebel username to use.
password
Enter the corresponding Siebel password.
server
Enter the server IP address of your Siebel instance.
serverName
Enter the Siebel Enterprise server name.
objectManager
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.
fileEncoding
Enter an encoding type supported by the Siebel server.
dataSense FilterQuery
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. defaultViewMode
Use this field 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.
-
Using the Connector
Siebel connector is a operation based connector, which means that when you add a Siebel connector to your flow, you need to configure a specific operation for the connector to perform.
Use cases
The following are the 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 Oracle Siebel Business Objects Connector to a Flow
-
Create a new Mule project in Anypoint Studio.
-
Add a suitable Mule Inbound endpoint, such as the HTTP listener or File endpoint, to begin the flow.
-
Drag the business objects connector onto the canvas, then select it to open the properties editor.
-
Configure the connector’s parameters according to the table below.
Field Description Default Value Display Name
Enter a unique label for the connector in your application.
Oracle Siebel Business Objects
Connector Configuration
Select the global Siebel connector element that you create.
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 options, access the Mule API Reference documentation for Siebel connector.
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.
3
Fields to Retrieve
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.From Message
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
Create Business Component
-
Click blank space on the canvas to save your Oracle Siebel Business Objects connector configurations.
Adding the Oracle Siebel Business Services Connector to a Flow
-
Create a new Mule project in Anypoint Studio.
-
Add a suitable Mule Inbound endpoint, such as the HTTP listener or File endpoint, to begin the flow.
-
Drag the business services connector onto the canvas, then select it to open the properties editor.
-
Configure the connector’s parameters according to the table below.
Field Description Default Value Display Name
Define a unique label for the connector in your application.
Oracle Siebel Business Services
Connector Configuration
Select the global Siebel connector element that you create.
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.
Service Name
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
Enter the name of the Siebel service to be executed.
Input
From Message: Specify which service to execute in the incoming payload.
Create Object manually: Specify which service to execute manually. -
Click blank space on the canvas to save your Oracle Siebel Business Services connector configurations.
Adding the Oracle Siebel Integration Objects Connector to a Flow
-
Create a new Mule project in Anypoint Studio.
-
Add a suitable Mule Inbound endpoint, such as the HTTP listener or File endpoint, to begin the flow.
-
Drag the business objects connector onto the canvas, then select it to open the properties editor.
-
Configure the connector’s parameters according to the table below.
Field Description Default Value Display Name
Define a unique label for the connector in your application.
`Oracle Siebel Integration Objects `
Connector Configuration
Select the global Siebel connector element that you create.
Operation
Define the action this component must perform: Execute Siebel Adapter.
`Execute Siebel Adapter `
General:
Integration Object
Define the Siebel integration object type to act upon.
Method
Define the EAI Siebel Adapter method.
Input Properties
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.From Message
-
Click blank space on the canvas to save your Oracle Siebel Business Objects connector configurations.
Example Use Case 1
Poll a Siebel connector at a regular interval, looking for new registries, and send the output into Salesforce.
Refer to documentation on the Poll Scope , DataMapper, and the Salesforce connector for in-depth information about these Mule elements. |
Studio Visual Editor

-
Drag a Poll Scope into a new flow.
Poll Scope executes any Mule element you place inside it, at regular intervals. In this case, it is a Siebel endpoint.
-
Configure the Poll Scope as follows
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. -
Drag an Oracle Siebel Business Objects connector into the space provided by the Poll Scope.
The Siebel connector is now polled at the intervals you specified in the Poll Scope.
-
Open Siebel connector’s properties editor, and next to the Config Reference field, click the + sign to add a new Global Element.
-
On the Global Element Properties window, configure the global element according to the settings below:
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 aids better performance by avoiding unnecessary data extraction. -
Click Test Connection at the bottom of the window to ensure that everything is correctly configured.
-
Next, configure the Oracle Siebel Business Objects connector according to the settings below:
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
-
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] > '#[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>
-
Drag a Logger after the Poll to register the Poll output.
Attribute Value Message
Polling from Siebel #[payload]
Level
Info
-
Drag a Salesforce Connector after the Logger. It uploads the output of the poll into your Salesforce account.
-
Open the Properties editor of the Salesforce connector, and click the + sign to add a new Salesforce global element.
-
On the Choose Global Type window, click Salesforce: Basic authentication, and then click Ok.
-
Configure the Salesforce global element properties:
Attribute Value Name
Salesforce
Username
<Your user name>
Password
<Your password>
Security Token
<Your Token>
Url
<The URL on which your Salesforce account is hosted>
Proxy Port
80
Enable DataSense
check
-
Click Test Connection to ensure that everything is correctly configured.
-
Configure the Salesforce connector according to the settings below:
Attribute Value Display Name
Salesforce
Connector Configuration
Salesforce
Operation
Create
sObject Type
contact
sObjects
From Message:#[payload]
-
Add a Data Mapper 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.
-
Configure the Data Mapper element:
If you have already configured both connectors properly, DataMapper automatically suggests 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>
-
Click Create mapping for the DataMapper to build a mapping between both the data structures.
-
The following fields don’t have the same names in Salesforce and Siebel. You need to configure them manually.
Name in Siebel Name in Salesforce Email_Address
Email
First_Name
FirstName
Last_Name
LastName
-
There are two ways you can link these:
-
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. -
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.FirstName = input.First_Name; output.LastName = input.Last_Name;
-
-
Add a Logger at the end of the flow to register the outcome of the operation:
Attribute Value Message
` #[payload.toString()]`
Level
Info
-
Save and run the project as a Mule Application.
XML Editor
-
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
-
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
-
Build a new flow:
<flow name="Poll_Siebel_2_Salesforce" doc:name="Poll_Siebel_2_Salesforce" processingStrategy="synchronous"> </flow>
-
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("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")]"/> </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" ;)]
update-expression
#[new org.joda.time.DateTime().withZone(org.joda.time.DateTimeZone.forID("PST8PDT")).minusSeconds(5).toString("MM/dd/yyyy HH:mm:ss")]
-
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] > '#[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
-
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
-
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]
-
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
-
Add a DataMapper 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="DataMapper"/>
-
Switch to Studio Visual editor to configure DataMapper correctly. Click on the DataMapper icon to edit its fields:
If you have already configured both connectors properly, DataMapper 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>
-
Click Create mapping for DataMapper to build a mapping between both data structures.
-
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:
-
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. -
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.FirstName = input.First_Name; output.LastName = input.Last_Name;
-
-
Save and run the project as a Mule Application.
Example Code
For this 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.
|
<mule xmlns:context="http://www.springframework.org/schema/context" xmlns:batch="http://www.mulesoft.org/schema/mule/batch" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:data-mapper="http://www.mulesoft.org/schema/mule/ee/data-mapper" xmlns:sfdc="http://www.mulesoft.org/schema/mule/sfdc" xmlns:siebel-io="http://www.mulesoft.org/schema/mule/siebel-io" xmlns:siebel="http://www.mulesoft.org/schema/mule/siebel" xmlns:http="http://www.mulesoft.org/schema/mule/http" 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/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/siebel-io http://www.mulesoft.org/schema/mule/siebel-io/current/mule-siebel-io.xsd
http://www.mulesoft.org/schema/mule/sfdc http://www.mulesoft.org/schema/mule/sfdc/current/mule-sfdc.xsd
http://www.mulesoft.org/schema/mule/ee/data-mapper http://www.mulesoft.org/schema/mule/ee/data-mapper/current/mule-data-mapper.xsd
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd
http://www.mulesoft.org/schema/mule/batch http://www.mulesoft.org/schema/mule/batch/current/mule-batch.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-current.xsd">
<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>
<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>
<data-mapper:config name="listcontact.contact_to_listcontact" transformationGraphPath="list<contact.contact>_to_list<contact>.grf" doc:name="listcontact.contact_to_listcontact"/>
<context:property-placeholder location="mule.properties"/>
<data-mapper:config name="listcontact.contact_to_listcontact_1" transformationGraphPath="list<contact.contact>_to_list<contact>_1.grf" doc:name="listcontact.contact_to_listcontact_1"/>
<flow name="siebel2salesforce" doc: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("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")]"/>
<siebel:query-business-components config-ref="Oracle_Siebel_Business_Object" businessObjectComponentType="Contact.Contact" doc:name="oracle siebel business objects" searchExpression="[Last Update - SDQ] > '#[flowVars.lastUpdate]'">
<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"/>
<data-mapper:transform doc:name="List<Contact.Contact> To List<Contact>" config-ref="listcontact.contact_to_listcontact_1"/>
<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>
Example Use Case 2
Poll a Salesforce connector for new registries at a regular interval and send the output into Siebel.
Refer to documentation on the Poll Scope, DataMapper, and the Salesforce Connector for in depth information about these elements. |
Studio Visual Editor

-
Drag a Poll Scope into a new flow:
Poll Scope executes the Mule element placed inside it at regular intervals. In this case, it is a Salesforce connector.
-
Configure the Poll Scope according to the settings below:
Attribute Value Frequency
60000
Start Delay
0
Time Unit
MILLISECONDS
Enable Watermark
check
Variable Name
lastUpdateSalesforce
Default Expression
#[org.joda.time.format.ISODateTimeFormat.dateTime().print(new org.joda.time.DateTime().withZone(org.joda.time.DateTimeZone.forID("PST8PDT")).minusSeconds(5))]
Update Expression
#[org.joda.time.format.ISODateTimeFormat.dateTime().print(new org.joda.time.DateTime().withZone(org.joda.time.DateTimeZone.forID("PST8PDT")).minusSeconds(5))]
The poll scope now triggers once a minute. The watermark ensures that registries in the Salesforce 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 -
Drag a Salesforce Connector into the space inside the Poll Scope.
The Salesforce connector is polled at the intervals you specify in the Poll Scope
-
Open the Properties editor of the Salesforce connector and click the + sign to add a new Salesforce global element.
-
On the Choose Global Type window, click Salesforce: Basic authentication, and then click Ok.
-
Configure the Salesforce global element properties:
Attribute Value Name
Salesforce
User
<Your user name>
Password
<Your password>
Port
<Port you’re using>
URL
<URL of your Salesforce repository>
Enable DataSense
check
-
Click Test Connection to ensure that everything is correctly configured.
-
Configure the Salesforce connector according to the settings below:
Attribute Value Display Name
Salesforce
Coding Reference
Salesforce
Operation
Query
Language
Native Query Language
Query Text
SELECT Id, email, firstname, lastname from Contact WHERE LastModifiedDate >#[flowVars.lastUpdateSalesforce]
Note: The search expression uses the same variable that is being updated by the Poll Scope. In this way, the Salesforce connector only returns the DB records that Mule hasn’t processed in the last poll to avoid redundancies.
-
Drag a Logger right after the Poll Scope, it registers the output of the Poll.
Attribute Value Message
From SFDC: #[payload]
Level
Info
-
Drag an Oracle Siebel Integration Object after the Logger. It uploads the output of the poll into your Siebel repository.
-
Open the Properties editor of the Siebel connector and click the + sign to add a new Global Element:
-
Configure the global element according to the settings below
Attribute Value Name
Oracle_Siebel_Integration_Object
Username
<Your user name>
Password
<Your password>
Server
<The server where you host Siebel>
Object Manager
<The object manager you use>
Enable DataSense
check
Default View Mode
3
Data Sense Filter Query
[Name] = 'Action_IO' OR [Name] = 'Contact_IO'
-
Click Test Connection to ensure that everything is correctly configured.
-
Configure the Siebel connector as follows
Attribute Value Display Name
Oracle Siebel Integration Object
Coding Reference
Oracle_Siebel_Integration_Object
Operation
Execute Siebel Adapter
Integration Object
Contact IO
Method
UPSERT
input-properties
From Message:
#[payload]
-
Add a Data Mapper element between the Logger and the Siebel connector. It maps fields from the data structure returned by Salesforce into the data structure required by Siebel.
-
Configure the Data Mapper element:
Input:
Attribute Value Type
Connector
Connector
Salesforce
By Type
check
List
check
Object
Contact
Output:
Attribute Value Connector
Oracle_Siebel_Integration_Object
Operation
execute-siebel-adapter
Object
Contact IO
If DataSense works correctly, DataMapper should be able to populate all of the output fields on its own -
Click Create mapping for the DataMapper to build a mapping between both the data structures.
-
A few fields don’t have the same names in Salesforce and Siebel. You must configure them manually.
Attribute Value Email_Address
Email
First_Name
FirstName
Last_Name
LastName
Person_UId
Id
Also, Siebel requires two fields that don’t exist in Salesforce. You must provide some default values for these. You can set the variables to use the following default values:
Variable Value Primary_Organization
Default Organization
Personal_Contact
N
There are two ways you can link these:
-
Look for the fields on both the 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. -
Enter DataLoader’s Script view and paste the following lines of code below what is already written:
output.First_Name = input.FirstName; output.Last_Name = input.LastName; output.Email_Address = input.Email; output.Person_UId = input.Id; output.Primary_Organization = 'Default Organization'; output.Personal_Contact = 'N';
The full code should look like this:
//MEL //START -> DO NOT REMOVE output.__id = input.__id; output.__parent_id = input.__id; //END -> DO NOT REMOVE output.First_Name = input.FirstName; output.Last_Name = input.LastName; output.Email_Address = input.Email; output.Person_UId = input.Id; output.Primary_Organization = 'Default Organization'; output.Personal_Contact = 'N';
-
-
Add another Logger at the end of the flow. It displays the outcome of the operation on the Console.
Attribute Value Message
#[payload.toString()]
Level
Info
-
Save and run the project as a Mule Application.
XML Editor
-
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
doc:name
Salesforce
url
<URL where your Salesforce account is hosted>
password
<Your password>
securityToken
<Your security token>
username
<Your user name>
Child Element Description sfdc:connection-pooling-profile
Configures connection pooling settings for connecting to Salesforce
Attribute Value initialisationPolicy
INITIALISE_ONE
exhaustedAction
WHEN_EXHAUSTED_GROW
-
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="false" 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 username>
password
<Your password>
server
<The IP address of the Siebel server>
serverName
<The Siebel Enterprise server name>
objectManager
<The object manager you use>
dataSenseFilterQueryBusComp
[Name] = 'Action_IO' OR [Name] = 'Contact_IO'
dataSenseFilterQueryBusObjects
false
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
-
Build a new Flow:
<flow name="salesforce2siebel" doc:name="salesforce2siebel" processingStrategy="synchronous"> </flow>
-
Add a Poll Scope inside your new Flow:
<poll doc:name="Poll"> <fixed-frequency-scheduler frequency="60000"/> <watermark variable="lastUpdateSalesforce" default-expression="#[org.joda.time.format.ISODateTimeFormat.dateTime().print(new org.joda.time.DateTime().withZone(org.joda.time.DateTimeZone.forID("PST8PDT")).minusSeconds(5))]" update-expression="#[org.joda.time.format.ISODateTimeFormat.dateTime().print(new org.joda.time.DateTime().withZone(org.joda.time.DateTimeZone.forID("PST8PDT")).minusSeconds(5))]"/> </poll>
Element Description Poll
A Poll Scope executes the Mule element you place inside it at regular intervals. In this case, it is a Salesforce connector.
Child Element Description fixed-frequency-scheduler
Sets the interval for polling
Attribute Value frequency
6000
The poll scope now triggers once a minute. The watermark ensures that registries in the Salesforce aren’t processed more than once. It does this 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 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
lastUpdateSalesforce
default-expression
#[org.joda.time.format.ISODateTimeFormat.dateTime().print(new org.joda.time.DateTime().withZone(org.joda.time.DateTimeZone.forID("PST8PDT")).minusSeconds(5))]"
update-expression
#[org.joda.time.format.ISODateTimeFormat.dateTime().print(new org.joda.time.DateTime().withZone(org.joda.time.DateTimeZone.forID("PST8PDT")).minusSeconds(5))]
-
Inside this Poll Scope, add a Salesforce Connector:
<sfdc:query config-ref="Salesforce" query="SELECT Id, email, firstname, lastname from Contact WHERE LastModifiedDate >#[flowVars.lastUpdateSalesforce]" doc:name="Salesforce"/>
The Salesforce connector polls at the intervals you specify in the Poll Scope.
Element Description sfdc:query
Connects to Salesforce
Attribute Value config-ref
Salesforce
query
SELECT Id, email, firstname, lastname from Contact WHERE LastModifiedDate >#[flowVars.lastUpdateSalesforce]`
doc:name
Salesforce
-
After the Poll Scope, add a Logger to verify the output of this poll.
<logger message="From SFDC: #[payload]" level="INFO" doc:name="Logger"/>
Element Description logger
Logs messages to the Mule console
Attribute Value Message
From SFDC: #[payload]
Level
Info
-
Add a Siebel connector after this logger. It uploads the output of the poll into your Siebel repository.
<siebel-io:execute-siebel-adapter config-ref="Oracle_Siebel_Integration_Object" integrationObject="Contact IO" method="UPSERT" doc:name="Oracle Siebel Integration Object"> <siebel-io:input-properties ref="#[payload]"/> </siebel-io:execute-siebel-adapter>
Element Description siebel-io:execute-siebel-adapter
Creates a contact entry on the specified Siebel repository
Attributes Values config-ref
Oracle_Siebel_Integration_Object
integrationObject
Contact IO
method
UPSERT
doc:name
Oracle Siebel Integration Object
Child Element Description siebel-io:input-properties
Defines what structure the created object has
Attributes Values ref
#[payload]`
-
Add another logger after the Siebel connector to verify the success of the operation.
<logger message="#[payload.toString()]" level="INFO" doc:name="Logger"/>
Attribute Value Message
`#[payload.toString()] `
Level
Info
-
Add a DataMapper component between the first logger and the Siebel connector. It maps fields from the data structure returned by Salesforce into the data structure required by Siebel.
<data-mapper:transform doc:name="DataMapper"/>
-
Switch to the Studio Visual Editor to configure the Data Mapper element. Click Data Mapper to open its properties editor:
Input:
Attribute Value Type
Connector
Connector
Salesforce
By Type
check
List
check
Object
Contact
Output:
Attribute Value Connector
Oracle_Siebel_Integration_Object
Operation
execute-siebel-adapter
Object
Contact IO
If DataSense works correctly, DataMapper should be able to populate all of the output fields on its own -
Click Create mapping for DataMapper to build a mapping between both data structures.
-
A few fields don’t have the same names in Salesforce as they do in Siebel. You need to configure these fields manually in DataMapper.
Siebel Field Salesforce Field Email_Address
Email
First_Name
FirstName
Last_Name
LastName
Person_UId
Id
Also, Siebel requires two fields that don’t exist in Salesforce. You need to provide some default value for these. You can set the variables to use the following default values:
Variable Value Primary_Organization
Default Organization
Personal_Contact
N
-
There are two ways you can link these:
-
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 amount 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. -
Enter DataLoader’s Script view and paste the following lines of code below what is already written:
output.First_Name = input.FirstName; output.Last_Name = input.LastName; output.Email_Address = input.Email; output.Person_UId = input.Id; output.Primary_Organization = 'Default Organization'; output.Personal_Contact = 'N';
The full code should look like this:
//MEL //START -> DO NOT REMOVE output.__id = input.__id; output.__parent_id = input.__id; //END -> DO NOT REMOVE output.First_Name = input.FirstName; output.Last_Name = input.LastName; output.Email_Address = input.Email; output.Person_UId = input.Id; output.Primary_Organization = 'Default Organization'; output.Personal_Contact = 'N';
-
-
Save and run the project as a Mule Application.
For this 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.
|
<mule xmlns:context="http://www.springframework.org/schema/context" xmlns:batch="http://www.mulesoft.org/schema/mule/batch" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:data-mapper="http://www.mulesoft.org/schema/mule/ee/data-mapper" xmlns:sfdc="http://www.mulesoft.org/schema/mule/sfdc" xmlns:siebel-io="http://www.mulesoft.org/schema/mule/siebel-io"
xmlns:siebel="http://www.mulesoft.org/schema/mule/siebel" xmlns:http="http://www.mulesoft.org/schema/mule/http" 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/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/siebel-io http://www.mulesoft.org/schema/mule/siebel-io/current/mule-siebel-io.xsd
http://www.mulesoft.org/schema/mule/sfdc http://www.mulesoft.org/schema/mule/sfdc/current/mule-sfdc.xsd
http://www.mulesoft.org/schema/mule/ee/data-mapper http://www.mulesoft.org/schema/mule/ee/data-mapper/current/mule-data-mapper.xsd
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd
http://www.mulesoft.org/schema/mule/batch http://www.mulesoft.org/schema/mule/batch/current/mule-batch.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-current.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] = 'Contact'" dataSenseFilterQueryBusObjects="[Name] = 'Contact'" doc:name="oracle siebel business objects">
<siebel:connection-pooling-profile initialisationPolicy="INITIALISE_ONE" exhaustedAction="WHEN_EXHAUSTED_GROW"/>
</siebel:config>
<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>
<data-mapper:config name="listcontact_to_contact_io" transformationGraphPath="listcontact_to_contact_io.grf" doc:name="listcontact_to_contact_io"/>
<flow name="Poll_Salesforce_2_Siebel" doc:name="Poll_Salesforce_2_Siebel" processingStrategy="synchronous">
<poll doc:name="Poll">
<fixed-frequency-scheduler frequency="60000"/>
<watermark variable="lastUpdateSalesforce" default-expression="#[org.joda.time.format.ISODateTimeFormat.dateTime().print(new org.joda.time.DateTime().withZone(org.joda.time.DateTimeZone.forID("PST8PDT")).minusSeconds(5))]" update-expression="#[org.joda.time.format.ISODateTimeFormat.dateTime().print(new org.joda.time.DateTime().withZone(org.joda.time.DateTimeZone.forID("PST8PDT")).minusSeconds(5))]"/>
<sfdc:query config-ref="Salesforce" query="SELECT Id, email, firstname, lastname from Contact WHERE LastModifiedDate >#[flowVars.lastUpdateSalesforce]" doc:name="Salesforce"/>
</poll>
<logger message="From SFDC: #[payload]" level="INFO" doc:name="Logger"/>
<data-mapper:transform config-ref="listcontact_to_contact_io" doc:name="List<Contact> To Contact IO"/>
<siebel-io:execute-siebel-adapter config-ref="Oracle_Siebel_Integration_Object" integrationObject="Contact IO" method="UPSERT" doc:name="Oracle Siebel Integration Object">
<siebel-io:input-properties ref="#[payload]"/>
</siebel-io:execute-siebel-adapter>
<logger message="Updated in Siebel: #[payload]" level="INFO" doc:name="Logger"/>
</flow>
</mule>
See Also
-
Learn about the DataMapper transformer, the most efficient way to assign mappings to data.
-
Read more about Anypoint Connectors.