You are here

Siebel EAI

How To Invoke Inbound Web Service Locally Using Web Service Inbound Dispatcher

This document demonstrates a method of testing an inbound web service locally (i.e. no Siebel Server/web server required). It is an alternative approach to that outlined in How To Use Local Web Service.

Activate Siebel Contact Inbound Web Service

In this document, the Siebel Contact ASI will be used as an example.

  1. Activate the Siebel Contact ASI in the Administration - Web Services > Inbound Web Services view.


     

  2. We will use binding SOAP_DOC_LITERAL (see below for examples of other bindings) :-
     

Generate Example SOAP Document

When invoking the Web Service Inbound Dispatcher directly, you will need to provide a correctly formed input SOAP document.  If you need to create one:-

  1. For the Siebel Contact web service in the Administration - Web Services > Inbound Web Services view, click the Generate WSDL button, you may get a download popup asking where you want to save the file. You may want to change the FileName to a meaningful value such as SiebelContact.WSDL and save the file.

  2. Import the wsdl to the web service tool (e.g. soapui) and cut/paste the example request doc

Invoke the Web Service Inbound Dispatcher 

Using the SOAP document, invoke the Web Service Inbound Dispatcher to call the Siebel Contact web service.

  1. In the Business Service Simulator, set the Service Name and Method Name :-

    Service Name

    Method Name

    Web Service Inbound Dispatcher

    Dispatch

  2. In the Input Arguments applet, provide a SOAP document in the Value field, an example is shown below (you should use encoding declaration UTF-16 for this test from the Business Service Simulator) :-

    <?xml version="1.0" encoding="UTF-16"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:asi="http://siebel.com/asi/"><soapenv:Header/><soapenv:Body><asi:SiebelContactQueryById_Input> <asi:PrimaryRowId>1-W9D</asi:PrimaryRowId></asi:SiebelContactQueryById_Input></soapenv:Body></soapenv:Envelope>

    Click the glyph on the Property Name, and provide the following Property information :-

  3. Property Name

    Property Value

    TransportType

    HTTP

    SOAPAction

    "document/http://siebel.com/asi/:SiebelContactQueryById"

    Note : If unsure of the required soap action to set, check the wsdl for 'soapAction' and cut and paste.

    Prior to invoking, the screen should look like:-



     

  4. Invoke it, click Run:-


Other Bindings

For either SOAP_RPC_ENCODED or SOAP_RPC_LITERAL, you can also test with the Web Service Inbound Dispatcher.  For these, you should not set a SOAPAction property as for the SOAP_DOC_LITERAL example (but do set TransportType=HTTP).  You can generate sample SOAP requests as above (e.g. using soapui) after generating a wsdl from Siebel with the binding set as required.  Example SOAP structures are shown below :-

  1. SOAP_RPC_ENCODED

    <?xml version="1.0" encoding="UTF-16"?><soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:asi="http://siebel.com/asi/"><soapenv:Header/><soapenv:Body><asi:SiebelContactQueryById soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><PrimaryRowId xsi:type="xsd:string">1-W9D</PrimaryRowId></asi:SiebelContactQueryById></soapenv:Body></soapenv:Envelope>

  2. SOAP_RPC_LITERAL

    <?xml version="1.0" encoding="UTF-16"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:asi="http://siebel.com/asi/"><soapenv:Header/><soapenv:Body><asi:SiebelContactQueryById> <PrimaryRowId>1-W9D</PrimaryRowId></asi:SiebelContactQueryById></soapenv:Body></soapenv:Envelope>

How To Use Local Web Service
Local Web Service is available in Siebel Enterprise Application version 7.5 and higher. Local Web Service provides customers with the ability to invoke inbound Web Service locally. When calling Local Web Service by the outbound Web Service, the request will not pass through the web server but directly call to the inbound Web Service. By using this characteristic you can use Local Web Service to test web service on a dedicated client.

How To Use Local Web Service

Setting up an Inbound Web Service as a Local Web Service

 
  1. Create a business service or a workflow process to be exposed. In this Technical Note, the Siebel Contact ASI will be used as an example.
 
  1. Activate the Siebel Contact ASI in the Siebel Web Services Administration View.
 
    1. In Siebel version 7.5, locate the view under Web Services Administration.
 
    1. In Siebel version 7.7 and higher, locate the view under Administration - Web Services.
 
    1. Navigate to the Inbound Web Services view and find the entry for Siebel Contact in the Name field.
 
    1. Change the status for this record from Inactive to Active.
 
 
  1. Click the Generate WSDL button, you may get a download popup asking where you want to save the file. You may want to change the FileName to a meaningful value such as SiebelContact.WSDL and save the file.
 
  1. Change the Service Ports for the Transport field which was created in step 3 to “Local Web Service“ and set the Address to the same value of port name:
 
 
Transport
Address
Binding
Local Web Service
<Port Name>
SOAP_RPC_ENCODED or SOAP_RPC_LITERAL
 

Creating Proxy Business Service and setting up an Outbound Web Service as a Local Web Service

 
  1. Launch Siebel Tools to import the WSDL and create the required objects.
 
    1. In Siebel Tools, launch the Web Service wizard. Go to File > New Object > EAI (tab) > Web Service.
 
    1. Fill in the required fields for the WSDL Import Wizard and click the Next button.
 
Required Field
Description
Project
A project to store business services and integration objects created. You can create a new project or use an existing project.
WSDL Document
This is the WSDL document that is generated in the previous step.
Runtime Data
This is a file that will be generated by the WSDL wizard. It will contain the values you will import into the Outbound Web Services Administration view.
Log File
This is the log that will be generated by the WSDL wizard. It will contain a summary of objects created and any errors.
 
 
    1. Check the summary and click the Finish button. After the wizard completes, you will have a new business service and new integration object, which is seen in the summary window:
 
 
NOTE: If you are testing with Siebel version 7.5 environments as a web service consumer, you will need to modify the Integration Object’s properties.
 
You will need to change the Cardinality property of the following:
 
Component Name
Original Cardinality
New Cardinality
ListOfContactInterfaceTopElmt
<blank>
One
/Contact
One or more
One
 
    1. Compile changes into the client's .srf file. Remember to compile both the business service and integration object.
 
  1. To register the imported WSDL, login to the Siebel Client and go to the Web Services Administration View for Outbound Web Services. Click on the Import button and point to the Runtime Data file generated by the Import WSDL wizard in step 1-c.
 
 
NOTE: If you have changed the name of the Proxy Business Service, you should change the value of the “ImplementationName” element to the new name of the proxy business service in the Runtime Data file generated by the Import WSDL wizard before importing.
 
 
In the above sample, the name of the Proxy Business Service is changed to “Default_SiebelContact_LWS”.
 
After the import completes, query for the newly registered Web Service, which will be called Siebel Contact.
 
 
If you get any errors while trying to import the XML file, make sure your Siebel client is using the .srf file with the compiled proxy business service and integration objects from the previous step.
 
  1. Change the Service Ports setting such as the following:
 
 

Testing Local Web Service

 
Outbound Web Service
 
  1. In the Siebel client, navigate to the Business Service test view.
 
    1. In Siebel version 7.5, locate the view under Business Service Administration.
 
    1. In Siebel version 7.7 and higher, locate the view under Administration – Business Service.
 
  1. In the Business Service Simulator, specify a Service Name and Method which you will test as follows:
 
Field
Value
Service Name
Default_SiebelContact_LWS (The name of the proxy business service)
Method Name
SiebelContactQueryById
 
  1. Click on the glyph next to the Property Name and enter in the input argument (you can check input arguments for methods in Siebel Tools) as follows:
 
Field
Value
Property Name
Siebel Contact SiebelContactQueryById  Input:PrimaryRowId
Property Value
<Row Id of Contact>
 
 
  1. Click the Run button to invoke the web service. If it is successful, you will see data returned to the Output Arguments.
Is it possible to add a searchspec to a child integration component when querying with EAI Siebel Adapter?

It is possible to add a searchspec to child integration components but some restrictions apply. you must also search on the parent.

Lets take the example of parent Accounts and child Contacts.

If you do a search on Account Name = ABC and contact Last Name = Smith it will first query all accounts whose name is ABC, then for each account it will filter the child contacts whose last name is Smith. If one of the acount records do not have a contact Last Name = Smith, the parent will still be in the output.If you only search on contact Last Name = Smith  without any search on the parent account it will still run and no errors will be seen. But the results may not be what you are looking for. It will bring back ALL accounts as you passed no search on accounts.
Then for each account it will bring contacts whose last name is Smith . If a parent account does not have a contact whose last name is Smith the parent account will appear in the result set anyway, without any children.

The important point here is it applies the searchspecs separately. First at the parent (even if no searchspec was passed to the parent) and then to each child of the returned parent records. Doc ID 523483.1 explains this in more detail, but it uses as examples the searchspecs '[Account.Updated] =' +Today() and [Contact.Updated]=' + Today()

How can we increase the default HTTP Sleep Time on outbound web service calls?

When an outbound web service is invoked, the outbound  web dispatcher class calls standard EAI Transport Business Service. For example "EAI HTTP Transport" BS is called if the Outbound Web Service  port's transport type set to "HTTP", while the "EAI JMS Transport" BS is triggered when port's transport type is "JMS".

Generally the EAI Transport BS is invoked only with address parameters  set ("HTTPRequestURLTemplate" for "HTTP" and "SendQueuemame" and "ConnectionFactory" for "JMS").

However, it may be required to amend certain parameters, for example for "HTTP" one would need to control timeout with "HTTPSleepTime", "HTTPMaxIdleSeconds" or even change the address at run-time. Similarly for JMS, the "SendUsername" and "SendPassword" parameters may need to be required to provide to access Messaging Subsystem.

Is there a way to set parameters on the transport service, when invoking an outbound web service ?

Solution

Below are the options:

1. Setting "siebel_transport_param:..."arguments on the proxy business service (Applicable to: Siebel version 8.1 and above)

You can add additional arguments to the proxy business service used for invoking the outbound web service.  

For example, you can include the following argument in your call to the proxy business service (name = value) to:

•set HTTPSleepTime:          

  siebel_transport_param:HTTPSleepTime  = 240000
•to provide JMS user credentils:

siebel_transport_param:SendUsername = oc4jadmin
siebel_transport_param:SendPassword = welcome1

2. Use a Local Business Service (Applicable to: Siebel version 7.5 and above)

With a Local Business Service, you write custom code to control what is actually sent in the EAI HTTP Transport, and any additional parameters can be set as required.  

3. Add script to an EAI Transport
Applicable to: Siebel version 7.5 and above

Although not generally recommended, it is possible to add script to the Service_PreInvokeMethod of the EAI Transport.  


Example for the "EAI HTTP Transport":
function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
{
    // this is the method called when the outbound web service is called.
    if(MethodName == "SendReceive")
    {
        Inputs.SetProperty("HTTPSleepTime", "240000");
    }

// continue operation to all method calls.
return (ContinueOperation);
}


Note: the above code would impact all calls to the EAI HTTP Transport, and could be made more 'intelligent' by checking certain values in the Inputs property set before continuing to change the parameters.

Siebel Webservice And EAI - Basic Concepts ans Steps Involved

A web service is a collection of protocols and standards.

Used for exchanging data between applications or systems.Various Programming languages and Software running on various platforms can use web services to exchange data over computer networks.Similar to inter-process communication on a single computer.Uses Common Network Protocols such as HTTP, SOAP, XML

Download the ppt below

How to integrate or consume an external RESTful web service in Siebel 8

Siebel Application does not support REST web services on Siebel 8.0.x version, inbound .

REST inbound web service support is GA in release 8.1.1.4.

Specifically for the OUTBOUND scenario, nothing new is added by release 8.1.1.4.

Outbound scenarios are similar to "pure" HTTP calls and EAI HTTP Transport business service is already capable of doing that on any siebel release.

Siebel  does have the EAI HTTP Transport, XML converters , eScript programming language and workflows, all of which can be leveraged to build a custom solution to call OUTBOUND REST services.

Customization is needed to build the message to be sent out and to read the message received.
EAI HTTP Transpor can make an http call to send data and receive responses back.
This works in all Siebel versions.

How To Use Different Ebiz Instance With The Same SIebel Instance

To move to the next stage in the lifecycle some times you need to use the same CRMOD instance with a new Ebiz instance.  What are the considerations to be aware of.

The question comes down to whether you want to use the same SOA instance or not.
Since you are only moving Ebiz then it primarily uses the DB and apps adapter to connect to Ebiz.  This means you are likely to only need to:
a) change any datasource in SOA pointing to point the new Ebiz instance.
b) the XREF_DATA table will need to be truncated.
c) All configuration for Ebiz will need to be validated e.g. cross references and DVM's etc. e.g. validate all post install steps.
d) This option will leave any existing ESB and BPEL data.

This means you will not need to reinstall SOA or AIA just point the existing PIP install elsewhere.

What should be the service name when Configuring Oracle Configurator in Siebel.

To Configuring Oracle Configurator - Use the following instructions to apply the run changes for the configuration to the database.

3. Navigate to Site Map > Administation Order Management > Signals.
a. Query for the Signal "Customize".
b. Lock the signal record and click on Workspace.
c. Change the service name to SWI Configurator Load.
-------------

However, the Order to Cash implementation guide on page labeled 196, section “Changing the Runtime Configuration to Invoke Oracle Configurator from Siebel CRM” step 3.c. says:-

“Change the service name to Oracle Configurator Load”

Solution

If on O2C PIP2.5,1 and Siebel QF7103 the configuration should be to have the service name as ‘SWI Configurator Load’.


This workflow internally calls the workflow “Oracle Configurator Load” as a subprocess and based on the system preference to enable O2C PIP it will call “Oracle Configurator Load” to launch Oracle Configurator else it will launch Siebel Configurator using subprocess “Configurator Load”.


 

Steps to Switch Siebel UCM and CRM Instance For Ch Pip And O2c Pip 2.5

Having already installed Customer Hub PIP 2.5 and Order To Cash PIP 2.5 with Siebel UCM & CRM instance say UCM-A and CRM-A. After the install, we planned to change the end points from UCM-A to UCM-B and also from CRM-A to CRM-B. What are the steps/procedure to make the changes required?

Solution

The main activities are:

1) Ensure all BPEL and ESB processes are completed - No active.
2) Switch endpoints (Since this is just Siebel):
a) Edit the $AIA_HOME/config/AIAConfigurationProperties.xml file and point to the correct endpoint for the Siebel instances - Please note user details are here also may need to be changed.
b) Edit the $AIA_HOME/config/deploy.properites file and point to the correct endpoint for the Siebel instances - this will not effect anything until you want to deploy or redeploy something.
c) Reload the AIAConfigurationProperties.xml. Log in to AIA Control page->Setup Tab->Configuration Tab->press RELOAD button.
3) Backup and truncate the XREF_DATA table in the AIA schema.

Can 2 Middleware environments share the same Siebel UCM 8.1.1 environment using the customer MDM PIP?

It is not feasible to link up the same UCM env to 2 Middleware environments without issues.  The UCM outbound services can be configured to publish events to only 1 Middleware environment at any given time.  So the outbound flows can point to only one PIP installation. If you intends to use both installations together, then outbound events won't happen on both Middleware environments, only one. If you are going to use it in turns, then that might work. Data corruption can occur if the same entity (Org/Person) is pushed to both EBS envs (somehow!).

For the flows inbound to UCM, well, technically it can be done. But here again, if it's the same account/person getting synced to the second EBS env, then data corruption will occur on the UCM end (the entity's cross reference COMMON ID is stamped on every record in UCM - if there are 2 Middleware environments, then this get corrupted).
 

Pages

Subscribe to Siebel EAI