You are here

Siebel EAI

How Can You Use SWE Commands with Bookmark URLs

SWE API Commands can be used to perform operations such as login, GoToView and query in the Siebel application. (Replace "callcenter_enu" by the name of the Siebel application that you use.)

  • Start the Siebel application.

http://<machine_name>/callcenter_enu/start.swe?SWECmd=Start

  • Login to the Siebel application.

http://<machine_name>/callcenter_enu/start.swe?SWECmd=ExecuteLogin&SWEUserName=<username>&SWEPassword=<password>

NOTE: ExecuteLogin is required from 8.0.0.12 onwards in order to obtain a valid Secure Random Number (SRN) for this SWE session. The SRN feature has been added to improve session security. SWE API solutions that attempt to hook into an existing Siebel session will not work with SRN-secured sessions. 

  • Navigate to a specific screen in the Siebel application.

http://<machine_name>/callcenter_enu/start.swe?SWECmd=GotoPageTab&SWEScreen=Service+Request+Screen&SWERF=1

NOTE: The SWERF SWE Argument for ReloadFrames is required for the GotoPageTab command to work. Using this command will display the default view specified for the screen.

  • Navigate to a specific view in the Siebel application.

http://<machine_name>/callcenter_enu/start.swe?SWECmd=GotoView&SWEView=Contact+List+View&SWEApplet=Contact+List+Applet

NOTE: If you want the user to explicitly login before navigating to the view then use the SWE Argument SWEBU=1 . This will make the user explicitly login before accessing the view. If SWEBU parameter is not specified then anonymous users will also be able to access the view using the above URL provided this view is part of the anonymous user's responsibility.

  • Log in to the Siebel application and navigate to a specific view.

http://<machine_name>/callcenter_enu/start.swe?SWECmd=ExecuteLogin&SWEUserName=<username>&SWEPassword=<password>&SWEAC=SWECmd=GotoView&SWEView=Contact+List+View&SWEApplet=Contact+List+Applet

NOTE:  The SWEAC command allows users to string two SWE commands in a single request. For example, the above URL does a SWECmd=ExecuteLogin, and then a SWEAC=GotoView. You cannot reference more than two SWE Commands using SWEAC.

  • Navigate to a specific record in the applet. The following URL command will navigate to a contact record whose row id is 12-2DPY4N:

http://<machine_name>/callcenter_enu/start.swe?SWECmd=GotoView&SWEView=Contact+List+View&SWERF=1&SWEBU=1&SWEApplet0=Contact+List+Applet&SWERowId0=12-2DPY4N

  • Drilldown on a specific field in an applet. In the following URL, SWEField indicates the drilldown field. If you want to drill down into a specific record, then specify the SWERowId parameter of the row you want to drill down to. When the SWERowId parameter is not supplied in a drill down, then SWE returns the first record in the list:

http://<machine_name>/callcenter_enu/start.swe?SWECmd=InvokeMethod&SWEApplet=Contact+List+Applet&SWEView=Contact+List+View&SWERowId=12-2DPY4N&SWENeedContext=true&SWEReqRowId=1&SWEMethod=Drilldown&SWEField=Last+Name&SWERF=1

  • To invoke a business service. In the following URL, SWEService is the name of the business service, SWEMethod is the name of the business service method and Viewname, BusObject is an input argument to the business service.

http://<machine_name>/callcenter_enu/start.swe?SWECmd=InvokeMethod&SWEMethod=Test&SWEService=MyBusinessService&ViewName=Contact+List+View&BusObject=Contact&BusComp=Contact&Id=1-24AKL&SWERF=1

NOTE: SWEMethods such as NewQuery and ExecuteQuery mentioned in the Portal Framework Guide are not supported through the SWE API when specified as a URL. They are reserved for use in the sXML interface. The alternate approach to accomplish this requirement would be to write a business service to perform the necessary query operation and call this business service using bookmark url

Drill down to a specific product in product catalog. This requirement can be achieved by using the following commands:

  • SWEPostnApplet=<The applet of the destinated view>
  • SWEPostnRowId=<The row Id to position>
  • SWEView=<The view to navigate to>
  • SWECmd=GotoView

http://machine/esales/start.swe?SWECmd=GotoView&amp;SWEPostnApplet=Product+Form+Applet+(eSales)&amp;SWEView=Product+Detail+-+Features+View+(eSales)&amp;SWEPostnRowId=1-CRB

How To Pass the Output of EAI Siebel Adapter Query Method in a Custom Business Service Published as an Inbound Web Service

Steps:

  1. Log in to Siebel Tools and create a new custom business service.e.g: MyBS.
  2. Expand to Business Service Method and add a record:
    Name = MyQuery
  3. Expand to Business Service Method Arg and add 3 records:
    • SiebelMessage, Type = Input, Data Type= Integration Object, Storage Type=Hierarchy , Integration Object = "EAI Account" (or your preferred IO)
    • MyIO, Type = Output, Data Type= Integration Object, Storage Type = HIERARCHY, Integration Object = "EAI Account" (or your preferred IO)
    • Error Message, Type = Output, Data Type = String, Storage Type = Property

Publishing Inbound Web Services
 

function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
{
if (MethodName == "MyQuery" )
{
// get hold of EAI Siebel Adapter BS
var adpBS = TheApplication().GetService("EAI Siebel Adapter");
// Variable to hold EAI Siebel Adapter output
var psQueryOutput = TheApplication().NewPropertySet();
// Variable to hold MyIO output argument.
var MyIOOutput = TheApplication().NewPropertySet();

// receiving an IO as input to the web service
// it gets passed to "Inputs" variable.
// passing "Inputs" directly to EAI Siebel Adapter.


adpBS.InvokeMethod("Query",Inputs,psQueryOutput);

// (Doc ID 476560.1)
MyIOOutput.SetType("MyIO");

// goes down the propertyset till you find the IO you are looking for.
// hint: Doc ID 477881.1

MyIOOutput.AddChild(psQueryOutput.GetChild(0).GetChild(0));

// set the output of your custom BS
Outputs.AddChild(MyIOOutput);
Outputs.SetProperty("Error Message","Record Retrieved Successfully");
// dump the output structure here
DumpPropSet(Outputs);
adpBS = null;
psQueryOutput = null;
MyIOOutput = null ;
return (CancelOperation);
}
else
{
return(ContinueOperation);
}
}
    4. Right click the business service name and select Edit Server Scripts.
    5. Choose eScript as the programming language.( could be Siebel VB too but the code sample below is eScript). Add the code below, review and compile to the server SRF.
    6. Publish the business service as an inbound web service the usual way.
    The steps are descriped in Bookshelf: Integration Platform Technologies: Siebel Enterprise Application Integration > Web Services > Invoking Siebel Web Services Using an External System >
    Notice during the publishing process, the BS will NOT be listed. You have to add a new record and type in the BS name as documented in bookshelf.
    7. Test. You may want to use a test utility such as SOAPUI or any other tool.
    You may as well use use a siebel dedicated client and sample database as seen in How To Test Siebel Inbound Web Services Using a Siebel Client (Doc ID 473838.1).
    If testing with a Siebel dedicated client, the following document may be helpful too: How To Create Integration Object Instances Programmatically (Doc ID 556846.1)

The DumpPropSet(Outputs) below helps us understand both how to pass data as output as well as data for input scenarios.

The important here is the structure should have 4 levels :

1) Inputs (or Outputs) property. It does not have any type set.
2) Business service method argument level property. This is a child of (1) above and has type = business service method argument name (in the example below "MyIO")
3) Integration Object representation. This is a child of (2) above and has type =ListOf<IO_NAME>
(in the example below ListOfEAI Account)
4) root integration component level. Should have type = root IC name.
In this case type = Account




Wed Mar 02 15:30:28 2011 :
Wed Mar 02 15:30:28 2011 :
Wed Mar 02 15:30:28 2011 : 01 ---- Starting a new property set ----
Wed Mar 02 15:30:28 2011 :
Wed Mar 02 15:30:28 2011 : 01 Value is ........ : ""
Wed Mar 02 15:30:28 2011 : 01 Type is ........ : ""
Wed Mar 02 15:30:28 2011 : 01 Child count ..... : 1
Wed Mar 02 15:30:28 2011 :
Wed Mar 02 15:30:28 2011 : 01 Property 01 name : "Error Message"
Wed Mar 02 15:30:28 2011 : 01 Property 01 value : "Record Retrieved Successfully"
Wed Mar 02 15:30:28 2011 :
Wed Mar 02 15:30:28 2011 : 01 Child Property Set 1 of 1 follows below.
Wed Mar 02 15:30:28 2011 : 01 This child is on level 1
Wed Mar 02 15:30:28 2011 :
Wed Mar 02 15:30:28 2011 :
Wed Mar 02 15:30:28 2011 : 02 ---- Starting a new property set ----
Wed Mar 02 15:30:28 2011 :
Wed Mar 02 15:30:28 2011 : 02 Value is ........ : ""
Wed Mar 02 15:30:28 2011 : 02 Type is ........ : "MyIO"
Wed Mar 02 15:30:28 2011 : 02 Child count ..... : 1
Wed Mar 02 15:30:28 2011 :
Wed Mar 02 15:30:28 2011 : 02 Child Property Set 1 of 1 follows below.
Wed Mar 02 15:30:28 2011 : 02 This child is on level 2
Wed Mar 02 15:30:28 2011 :
Wed Mar 02 15:30:28 2011 :
Wed Mar 02 15:30:28 2011 : 03 ---- Starting a new property set ----
Wed Mar 02 15:30:28 2011 :
Wed Mar 02 15:30:28 2011 : 03 Value is ........ : ""
Wed Mar 02 15:30:28 2011 : 03 Type is ........ : "ListOfEAI Account"
Wed Mar 02 15:30:29 2011 : 03 Child count ..... : 1
Wed Mar 02 15:30:29 2011 :
Wed Mar 02 15:30:29 2011 : 03 Child Property Set 1 of 1 follows below.
Wed Mar 02 15:30:29 2011 : 03 This child is on level 3
Wed Mar 02 15:30:29 2011 :
Wed Mar 02 15:30:29 2011 :
Wed Mar 02 15:30:29 2011 : 04 ---- Starting a new property set ----
Wed Mar 02 15:30:29 2011 :
Wed Mar 02 15:30:29 2011 : 04 Value is ........ : ""
Wed Mar 02 15:30:29 2011 : 04 Type is ........ : "Account"
Wed Mar 02 15:30:29 2011 : 04 Child count ..... : 4
Wed Mar 02 15:30:29 2011 :
Wed Mar 02 15:30:29 2011 : 04 Property 01 name : "Competitor"
Wed Mar 02 15:30:29 2011 : 04 Property 01 value : "N"
Wed Mar 02 15:30:29 2011 :
Wed Mar 02 15:30:29 2011 : 04 Property 02 name : "EAI Sync Date"
Wed Mar 02 15:30:29 2011 : 04 Property 02 value : ""
Wed Mar 02 15:30:29 2011 :
Wed Mar 02 15:30:29 2011 : 04 Property 03 name : "Division"
Wed Mar 02 15:30:29 2011 : 04 Property 03 value : ""
Wed Mar 02 15:30:29 2011 :
Wed Mar 02 15:30:29 2011 : 04 Property 04 name : "Price List Integration Id"
Wed Mar 02 15:30:29 2011 : 04 Property 04 value : ""
Wed Mar 02 15:30:29 2011 :
Wed Mar 02 15:30:29 2011 : 04 Property 05 name : "EAI Sync Status Code"
Wed Mar 02 15:30:29 2011 : 04 Property 05 value : ""
Wed Mar 02 15:30:29 2011 :
Wed Mar 02 15:30:29 2011 : 04 Property 06 name : "DUNS Number"
Wed Mar 02 15:30:29 2011 : 04 Property 06 value : ""
Wed Mar 02 15:30:30 2011 :
Wed Mar 02 15:30:30 2011 : 04 Property 07 name : "Managers Review"
Wed Mar 02 15:30:30 2011 : 04 Property 07 value : ""
Wed Mar 02 15:30:30 2011 :
Wed Mar 02 15:30:30 2011 : 04 Property 08 name : "Account Status"
Wed Mar 02 15:30:30 2011 : 04 Property 08 value : "Active"
Wed Mar 02 15:30:30 2011 :
Wed Mar 02 15:30:30 2011 : 04 Property 09 name : "Main Phone Number"
Wed Mar 02 15:30:30 2011 : 04 Property 09 value : ""
Wed Mar 02 15:30:30 2011 :
Wed Mar 02 15:30:30 2011 : 04 Property 10 name : "Language Code"
Wed Mar 02 15:30:30 2011 : 04 Property 10 value : "ENU"
Wed Mar 02 15:30:30 2011 :
Wed Mar 02 15:30:30 2011 : 04 Property 11 name : "Currency Code"
Wed Mar 02 15:30:30 2011 : 04 Property 11 value : "USD"
Wed Mar 02 15:30:30 2011 :
Wed Mar 02 15:30:30 2011 : 04 Property 12 name : "CSN"
Wed Mar 02 15:30:30 2011 : 04 Property 12 value : "1-1UWF"
Wed Mar 02 15:30:30 2011 :
Wed Mar 02 15:30:30 2011 : 04 Property 13 name : "Partner Flag"
Wed Mar 02 15:30:30 2011 : 04 Property 13 value : "N"
Wed Mar 02 15:30:30 2011 :
Wed Mar 02 15:30:30 2011 : 04 Property 14 name : "Integration Id"
Wed Mar 02 15:30:30 2011 : 04 Property 14 value : ""
Wed Mar 02 15:30:30 2011 :
Wed Mar 02 15:30:30 2011 : 04 Property 15 name : "Freight Terms Info"
Wed Mar 02 15:30:30 2011 : 04 Property 15 value : ""
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 04 Property 16 name : "Alias"
Wed Mar 02 15:30:31 2011 : 04 Property 16 value : ""
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 04 Property 17 name : "Type"
Wed Mar 02 15:30:31 2011 : 04 Property 17 value : "Customer"
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 04 Property 18 name : "Prospect Flag"
Wed Mar 02 15:30:31 2011 : 04 Property 18 value : "N"
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 04 Property 19 name : "Last Manager Review Date"
Wed Mar 02 15:30:31 2011 : 04 Property 19 value : ""
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 04 Property 20 name : "Home Page"
Wed Mar 02 15:30:31 2011 : 04 Property 20 value : ""
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 04 Property 21 name : "GSA Flag"
Wed Mar 02 15:30:31 2011 : 04 Property 21 value : ""
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 04 Property 22 name : "EAI Sync Error Text"
Wed Mar 02 15:30:31 2011 : 04 Property 22 value : ""
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 04 Property 23 name : "Main Fax Number"
Wed Mar 02 15:30:31 2011 : 04 Property 23 value : ""
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 04 Property 24 name : "Location"
Wed Mar 02 15:30:31 2011 : 04 Property 24 value : ""
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 04 Property 25 name : "Region"
Wed Mar 02 15:30:31 2011 : 04 Property 25 value : ""
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 04 Property 26 name : "Name"
Wed Mar 02 15:30:31 2011 : 04 Property 26 value : "ACR 437"
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 04 Property 27 name : "Freight Terms"
Wed Mar 02 15:30:31 2011 : 04 Property 27 value : ""
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 04 Property 28 name : "Description"
Wed Mar 02 15:30:31 2011 : 04 Property 28 value : ""
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 04 Property 29 name : "Price List Id"
Wed Mar 02 15:30:31 2011 : 04 Property 29 value : ""
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 04 Property 30 name : "Price List"
Wed Mar 02 15:30:31 2011 : 04 Property 30 value : ""
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 04 Child Property Set 1 of 4 follows below.
Wed Mar 02 15:30:31 2011 : 04 This child is on level 4
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 05 ---- Starting a new property set ----
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 05 Value is ........ : ""
Wed Mar 02 15:30:31 2011 : 05 Type is ........ : "ListOfAccount_Business Address"
Wed Mar 02 15:30:31 2011 : 05 Child count ..... : 1
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 05 Child Property Set 1 of 1 follows below.
Wed Mar 02 15:30:31 2011 : 05 This child is on level 5
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 06 ---- Starting a new property set ----
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:31 2011 : 06 Value is ........ : ""
Wed Mar 02 15:30:31 2011 : 06 Type is ........ : "Account_Business Address"
Wed Mar 02 15:30:31 2011 : 06 Child count ..... : 0
Wed Mar 02 15:30:31 2011 :
Wed Mar 02 15:30:32 2011 : 06 Property 01 name : "Street Address 2"
Wed Mar 02 15:30:32 2011 : 06 Property 01 value : ""
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 06 Property 02 name : "County"
Wed Mar 02 15:30:32 2011 : 06 Property 02 value : ""
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 06 Property 03 name : "Address Active Status"
Wed Mar 02 15:30:32 2011 : 06 Property 03 value : "Y"
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 06 Property 04 name : "Street Address"
Wed Mar 02 15:30:32 2011 : 06 Property 04 value : "1449 creekside"
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 06 Property 05 name : "City"
Wed Mar 02 15:30:32 2011 : 06 Property 05 value : "Walnut Creek"
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 06 Property 06 name : "Bill Address Flag"
Wed Mar 02 15:30:32 2011 : 06 Property 06 value : "N"
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 06 Property 07 name : "State"
Wed Mar 02 15:30:32 2011 : 06 Property 07 value : "CA"
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 06 Property 08 name : "Country"
Wed Mar 02 15:30:32 2011 : 06 Property 08 value : ""
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 06 Property 09 name : "Province"
Wed Mar 02 15:30:32 2011 : 06 Property 09 value : ""
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 06 Property 10 name : "Address Integration Id"
Wed Mar 02 15:30:32 2011 : 06 Property 10 value : ""
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 06 Property 11 name : "Ship Address Flag"
Wed Mar 02 15:30:32 2011 : 06 Property 11 value : "N"
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 06 Property 12 name : "Main Address Flag"
Wed Mar 02 15:30:32 2011 : 06 Property 12 value : "N"
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 06 Property 13 name : "Fax Number"
Wed Mar 02 15:30:32 2011 : 06 Property 13 value : ""
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 06 Property 14 name : "Email Address"
Wed Mar 02 15:30:32 2011 : 06 Property 14 value : ""
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 06 Property 15 name : "Phone Number"
Wed Mar 02 15:30:32 2011 : 06 Property 15 value : ""
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 06 Property 16 name : "Postal Code"
Wed Mar 02 15:30:32 2011 : 06 Property 16 value : "94596"
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 06 (No children exist below this property set.)
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 04 Child Property Set 2 of 4 follows below.
Wed Mar 02 15:30:32 2011 : 04 This child is on level 4
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 05 ---- Starting a new property set ----
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 05 Value is ........ : ""
Wed Mar 02 15:30:32 2011 : 05 Type is ........ : "ListOfAccount_Position"
Wed Mar 02 15:30:32 2011 : 05 Child count ..... : 1
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 : 05 Child Property Set 1 of 1 follows below.
Wed Mar 02 15:30:32 2011 : 05 This child is on level 5
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:32 2011 :
Wed Mar 02 15:30:33 2011 : 06 ---- Starting a new property set ----
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 : 06 Value is ........ : ""
Wed Mar 02 15:30:33 2011 : 06 Type is ........ : "Account_Position"
Wed Mar 02 15:30:33 2011 : 06 Child count ..... : 0
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 : 06 Property 01 name : "Position"
Wed Mar 02 15:30:33 2011 : 06 Property 01 value : "Siebel Administrator"
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 : 06 Property 02 name : "Position Integration Id"
Wed Mar 02 15:30:33 2011 : 06 Property 02 value : ""
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 : 06 (No children exist below this property set.)
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 : 04 Child Property Set 3 of 4 follows below.
Wed Mar 02 15:30:33 2011 : 04 This child is on level 4
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 : 05 ---- Starting a new property set ----
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 : 05 Value is ........ : ""
Wed Mar 02 15:30:33 2011 : 05 Type is ........ : "ListOfContact"
Wed Mar 02 15:30:33 2011 : 05 Child count ..... : 0
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 : 05 (No children exist below this property set.)
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 : 04 Child Property Set 4 of 4 follows below.
Wed Mar 02 15:30:33 2011 : 04 This child is on level 4
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 : 05 ---- Starting a new property set ----
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 : 05 Value is ........ : ""
Wed Mar 02 15:30:33 2011 : 05 Type is ........ : "ListOfAccount_Organization"
Wed Mar 02 15:30:33 2011 : 05 Child count ..... : 1
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 : 05 Child Property Set 1 of 1 follows below.
Wed Mar 02 15:30:33 2011 : 05 This child is on level 5
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 : 06 ---- Starting a new property set ----
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 : 06 Value is ........ : ""
Wed Mar 02 15:30:33 2011 : 06 Type is ........ : "Account_Organization"
Wed Mar 02 15:30:33 2011 : 06 Child count ..... : 0
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 : 06 Property 01 name : "Organization Id"
Wed Mar 02 15:30:33 2011 : 06 Property 01 value : "0-R9NH"
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 : 06 Property 02 name : "Organization Integration Id"
Wed Mar 02 15:30:33 2011 : 06 Property 02 value : ""
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 : 06 Property 03 name : "Organization"
Wed Mar 02 15:30:33 2011 : 06 Property 03 value : "Default Organization"
Wed Mar 02 15:30:33 2011 :
Wed Mar 02 15:30:33 2011 : 06 (No children exist below this property set.)
How can users export System fields of an Integration Object?.

In Siebel, Integration Component Fields with Field Type property as "System" are not exported even if these fields are active during a query operation.

This is the expected behavior. This setting prevents the EAI Siebel Adapter from treating the field as a data field, which means for the Query and QueryPage method the EAI Siebel Adapter do not write to the fields.

If such fields are required in an exported message, you can change the Integration Component Field Type property value to 'Data' from 'System'.

Compile the Repository after making the above changes to Integration Object.

How Do You Pass or Receive a Property Set to or from a Custom Business Service?

Within a workflow process, you can store a property set in a process property of type Hierarchy. To pass the content of a process property to or from a custom business service, however, the Type of the child property set stored in the process property must match the name of the input or output argument of the business service.

The following two examples demonstrate this principle.

Example 1: Getting a Property Set from a Business Service

This example shows how to set up a workflow process to invoke a custom business service, and retrieve a process property that is in a hierarchal property set.

  1. In Siebel Tools, create a business service, MyBS, defined with the following method and arguments:

    Method Name: Method1
    Arguments:

    NameData typeTypeDisplay nameStorage TypeOptional
    HierarchyArg1HierarchyInput / OutputHierarchy Argument 1HierarchyTrue

    The name of the argument, for example, HierarchyArg1, must match the Type of the child property set in the business service script.

    Add the following Server script (eScript):

    function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
    {
        if (MethodName == "Method1") {
            var outPropset = TheApplication().NewPropertySet() ;
            outPropset.SetType("HierarchyArg1") ;
            outPropset.SetProperty("PropName1", "Hello") ;
            outPropset.SetProperty("PropName2", "Goodbye") ;
            Outputs.AddChild(outPropset) ;
            outPropset = null;
            return (CancelOperation);
        }
        else return (ContinueOperation);
    }

    Create a workflow process, myWF, with a process property defined as follows: 

    Name: myHierarchy
    Data Type: Hierarchy
  2. You can name this process property with any name you choose. This process property name becomes the Type of your output property set.

  3. Add a business service step to the workflow process defined as follows to invoke the business service you created in steps 1 and 2: 

    Business Service: MyBS
    Method: Method1
     
  4. For the output argument of the business service step, add a record as follows: 

    Property Name: myHierarchy
    Type: Output Argument
    Output Argument: Hierarchy Argument 1

    The execution of this step puts the property set built in the myBS business service into the myHierarchy process property. Please refer to the Note at the end of this FAQ for additional information about this step.

  5. Run the workflow process in the workflow process simulator. At the end of the business service, the myHierarchy process property with the following structure is available:

    TypeValueChild Type
    myHierarchy HierachyArg1
    TypeValueProperty KeyProperty Value
    HierachyArg1 PropName1Hello
      PropName2Goodbye

Example 2: Passing the Process Property to a Business Service

This second example builds on the workflow and business service developed in Example 1 and assumes that you have a workflow process with a hierarchy process property that has been initialized by another step. This example shows how to pass a property set from a workflow process to a business service. For this example, the Type of the property set must be stored within this process property.

In Example 1, the step calling the MyBS business service returned a property set with a Type of HierarchyArg1 into the myHierarchy process property. In this example, this process property is passed to another business service called MyBS2 using the Method2 method.

  1. Create a new business service named MyBS2 and define it with the following method and argument (created in Siebel Tools):  

    Method Name: Method2
    Arguments:

    NameData typeTypeDisplay nameStorage TypeOptional
    HierarchyArg1HierarchyInput / OutputHierarchy Argument 1HierarchyTrue
  2. Add the following Server script (eScript) to the business service:

    function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
    {
        if (MethodName == "Method2") {
            var childPropset = TheApplication().NewPropertySet();
            childPropset = Inputs.GetChild(0);
            var a = childPropset.GetProperty("PropName1");
            var b = childPropset.GetProperty("PropName2");
            var outPropset = TheApplication().NewPropertySet();
            outPropset.SetType("HierarchyArg1");
            outPropset.SetProperty("PropName3", a+b);
            Outputs.AddChild(outPropset);
            outPropset = null;
            childPropset = null;
            return (CancelOperation);
        }
        else return (ContinueOperation);
    }

    Modify the workflow process from Example 1 to add another business service step and a new process property of type hierarchy called myHierarchy2.
  3. The business service step invokes the MyBS2 business service you created above. This step should be added after the step that invokes the MyBS business service. In that step, pass it the process property as indicated below:

    Business Service: MyBS2
    Method: Method2

  4. Add a record into Input Arguments applet as follows: 

    Input Argument: Hierarchy Argument 1
    Type: Process Property
    Property Name: myHierarchy

  5. For the output argument of the business service step, add a record as follows: 

    Property Name: myHierarchy2
    Type: Output Argument
    Output Argument: Hierarchy Argument 1

    The execution of the MyBS2 business service step passes the content of the myHierarchy process property (a hierarchical process property) into a child property set having a Type of HierarchyArg1. The HierarchyArg1 property set is received by the Service_PreInvokeMethod function of the MyBS2 business service.
     
  6. Run the workflow process in the workflow process simulator. At the end of the business service, the myHierarchy2 process property with the following structure is available:

    Type

    ValueChild Type
    myHierarchy2 HierachyArg1

    TypeValueProperty KeyProperty Value
    HierachyArg1 PropName3HelloGoodbye

 Note.  In above steps (Example 1, step 5 and Example 2, step 4) the Output Argument and Input Argument columns show the display name of the argument, not its name. This is the reason why the Type of the property set is HierarchyArg1 and not Hierarchy Argument 1.

How to work with file attachments in web service calls ?

Siebel 7.7.2.10 and higher supports attachments encoded as base-64.
All you need is :

a) attachments properly working at the user interface as a pre-requisite
b) the integration object you use contains an attachment integration component.
c) You also need the 3rd party application communicating with siebel to be able to handle base-64 encoded attachments.

We do not have detailed and exact step by step procedure as this is mostly a design decision and as such is beyond scope of support.
I am glad to share ideas though and suggest the following exercise to gain insight:

1) Use the thin client.Query for an account or service request.
Add an attachment to it in the UI.
Ensure you can attach and download a file from the UI.if not, fix it first.

2) Use an integration object with the correct structure for attachments.
Some siebel versions had issues with the siebel tools wizard when creating an IO with attachments so I suggest you try a standard one and once it works you can use it as a reference for other objects.
e.g: activate and compile Sample Account.
or use Service Request IO
(once this works you can just extend your own IO to have an attachment IC with the same fields)

3) Log in to thin client.
Site map -> administration - Business service -> Simulator.
Simulate EAI Siebel Adapter, method Query and provide the input arguments:
OutputIntObjectName = Sample Account (or Service Request, or other of your choice).
PrimaryRowId = a valid row id for accounts, srs or the object you chose. This object must have an attachment.
 
4) once #3 works. scroll down to the lowermost applet. Click save to file.
This will save the output to file and now you have a sample message to play with and know what the attachment looks like in the XML. (SIEBEL MESSAGE at this point. not a SOAP.)

5) since the goal is to use webservices... once #3 is good, create a custom BS or a workflow that calls EAI Siebel Adapter with the specific IO you tested and publish it as a webservice.

6)To thest the web service you may want to download http://www.soapui.org. This is a free 3rd party tool. We do not offer support for it and have limited experience with it. You may find it usefull for simple tests though.
Import the siebel inbound web service WSDL to it.
Call the method query.
Give it a valid row id for a record that has an attachment and there you are !!! you have a sample SOAP message this time (item 3 gave you a sample Siebel message as opposed to SOAP)
The attachment should be in base-64

Edit the response message to call a different method e.g: insert and make sure the message has a new parent data (like a new account or a new SR).
Send it through SOAP UI and it should create a new record with the same attachment.

Now you know how to query and also how to insert.
Your last point of attention is :
 

The attachment is encoded as base-64 and there is not much we can do about it.. the 3rd party app has to be able to handle that.


Once you can get this simple example to work it should be feasible extend the idea to your existing web service.
Basically you just have to create an extra IC for attachments using a standard attachment IC as an example.

Is it possible to modify Siebel Message Property Set without using custom business service (scripting option)?

This section explains how to manipulate a property set in a workflow without custom script. The mechanisms used here are:

  • The Workflow Utilities business service, echo method.

  • Workflow process aliases

  • The dot notation.

The following techniques allow reading and setting property set content. It is limited to hierarchies that do not have many children of the same type. For example, if a hierarchy has an Account and several Activities, retrieving the value of an Activity attribute is only possible for the first activity of the hierarchy.

If the requirement is to navigate the property set and loop through children, scripted is needed.

  • Aliases

Workflow Processes can have Process Properties of type "Alias". This kind of Process Property works as a pointer to a specific attribute inside a Property Set. Aliases can be used to get an attribute from or set an existing attribute in a Property Set.

Syntax description:
ProcessProperty/[PropertySeta]/[PropertySetb]/.../[PropertySetn]/@attribute

  • ProcessProperty (mandatory): an existing Workflow Process Property of type Hierarchy.

  • PropertySeta to PropertySetn (optional): any sub-property set used to reach the sub-levels of the hierarchy.

  • @attribute (mandatory): the attribute being referenced in the alias.

"/" is the mandatory separator between the ProcessProperty, sub-propertysets and the attribute
Example:
psSiebelMessage/ListOfOrder Interface/Orders/@Account Id
Below Table describes the behavior of different Aliases

Alias

Get

Set

Comments

psSiebelMessage/ListOfOrder Interface/Orders/@Id

1-110CJ

1-110CJ

 

psSiebelMessage/ListOfOrder Interface/@Id

Empty value

Nothing happens

There is no attribute called "Id" inside the psSiebelMessage/ListOfOrder Interface.

psSiebelMessage/ListOfOrder Interface//@Id

Error

Error

There is a syntax error in the Alias "//@Id"

  • Dot Notation - Read Attributes

As an alternative for Aliases, the dot notation can also be used to get attributes from a PropertySet. We commonly use Echo Steps with dot notation.
The table below shows the behavior of reading values from PropertySets using dot notation and an Echo step. Assuming the Input argument is called with the Process Property psSiebelMessage.

Output Argument

Get

Comments

psSiebelMessage.ListOfOrder Interface.Orders.Account Id

1-110CJ

 

psSiebelMessage.ListOfOrder Interface.Account Id

Error

There is no attribute called "Account Id" inside the PS

  • Dot Notation - Set Attributes

As an alternative for Aliases, the dot notation can also be used to set attributes from a Property Set. We commonly use Echo Steps with dot notation.

The table below shows the behaviour of setting values to Property Sets using dot notation and an Echo step. Assuming the Input argument is called with the Process Property psSiebelMessage and the psSiebelMessage is recaptured in the Output of the Echo step from the PS.

Input Arguments

Result

Comments

psSiebelMessage.ListOfOrder Interface.Orders.Account Id

The new value is replaced inside the Property Set

 

psSiebelMessage.ListOfOrder Interface.Orders.Id

The new value is added to the Hierarchy

A new attribute called "Id" will be created under the hierarchy "psSiebelMessage.ListOfOrder Interface.Orders"

psSiebelMessage.ListOfOrder Interface.Orders..Id

The new value is added to a Hierarchy without name

A new non-named hierarchy (or PropertySet) will be created under the hierarchy "psSiebelMessage.ListOfOrder Interface.Orders" with an attribute called "Id".


When the sample workflow attached to this document  is simulated/tested to set the attributes using dot notation, output after populate alias step in the workflow for the following elements will be as follows:
sLocationIntegrationId:Testing String - value added
sMessageId:Test Message Id via Alias

SiebelMessage/@MessageId, SiebelMessage/ListOfOrder Interface/Orders/ListOfLine Items/Line Items/ListOfRequested Schedule Lines/Requested Schedule Lines/@Source Inventory Location Integration Id in siebel message are undisturbed.

If you want to populate the SiebelMessage/@MessageId then you need to specify the property name as aMessageId in output arguments.

Summary

  • Dot notation can create new items under hierarchies, aliases cannot. This operation doesn't Error-out with any of them.

  • Dot notation Error-outs when reading a non-existing attribute from a Property Set. Aliases do not.

  • Dot notation has a limitation of 75 characters (maximum size for step input/output arguments). Aliases can have up to 255 characters.

  • Process property of type Alias will not show up in Watch Windows.

  • There is no need to echo the Alias to a process property if it is used it in an expression or decision step. It is considered by the workflow as the value it is pointing to in the PropertySet.

  • To read attributes from Generic Inbound messages, the Dispatch Rule transformation should be used to populate the attribute value inside the Workflow Process Property, avoiding additional Echo Steps. Use aliases if the attribute is not part of the message.

Handling Error - Unable to create the Business Service 'Web Service Deployment Service'

While trying to deploy a workflow process or a custom business service as Web Service, using "Deploy as Web Service..." right mouse click menu item of in Siebel Tools:

1) Unable to create the Business Service 'Web Service Deployment Service'(SBL-DAT-00227)
2) Could not find 'Class' named 'Web Service Deployment Service'. This object is inactive or
    nonexistent.(SBL-DAT-00144)

Cause
The missing standard Business Service is part of the Siebel Repository change that comes with the ACR331 delivery of the Siebel Fix Pack: 7.8.2.5 and above.

This ACR Backports Siebel Customer Order Management version 8.0 Catalog, Asset, Pricer, and CFG broker Web Services to Siebel 7.8.2.5, and also it backports the core framework (Hierarchy and EAI IO to XML Converter) to support the ability to subscribe to catalogs, customer assets, and prices from an external application as a service.

Solution
Complete the ACR 331 installation steps, outlined in the "Instructions for ACR 331" section of the "Configuration Instructions for Enhancements and Updates" chapter in the "Siebel Maintenance Release Guide" document.

This document is supplied starting  with the 7.8.2.5 Fix Pack of 7.8 Release

After running of the Fix Pack for Siebel Tools, the REPPATCH folder of Siebel Tools installation root, will contain the "ACR331ImportFilesApps.v1205.zip" and "ACR331ImportFilesCore.zip" files with the to be installed Siebel Repository improvements.

JMSReceiver fails with error "SBL-EAI-05006: Failed to load the JVM Dll"

When starting a task for JMSReceiver server component using Siebel server command line you may encounter below error:

start task for comp JMSReceiver with ReceiverConnectionSubsystem= CRMAEAIJMSConnSubSys, ReceiverDataHandlingSubsystem=SiebelEcho, ReceiverMethodName=ReceiveDispatchSend 

SBL-ADM-60070: Error reported on server 'ss_migsvil1' follows:
SBL-SVR-01014: Internal: Could not send the HELLO message: (null)
SBL-NET-01033: The SISNAPI handshake timed out. The Siebel Service may not be running.

Cause

Error was caused by the DLL parameter used/required by this component was referencing the wrong version of the DLL/.so library file.

Customer enabled detailed logging on the server component, reproduced the error, inspected the log file and was able to see to detailed error message indicating that "SBL-EAI-05006: Failed to load the JVM Dll"

Customer is on HP-UX, they were setting the DLL parameter to value:

"/opt/java1.5/jre/lib/IA64W/server/libjvm.so"

However, this is not the correct version to use.  The correct version for HP-UX is from "/opt/java1.5/jre/lib/IA64N/server/libjvm.so"

The library file that should be used is from "/opt/java1.5/jre/lib/IA64N/server/libjvm.so", as this is the version documented in Siebel Bookshelf:

Siebel Bookshelf > Siebel Application Deployment Manager Guide > Configuring and Administering the ADM Framework > Process of Configuring the ADM Framework after Installing Siebel Management Server and Siebel Management Agent > Configuring the Siebel Server for ADM:

Select the JVM DLL Name parameter, and verify that the entry in the Value field references the location of the jvm.dll file in the JRE installation.

The JVM DLL Name parameter value depends on the operating system. See the following table for the values for the different operating systems.

Operating System Parameter Value

Windows: JRE_HOME/bin/client/jvm.dll
Solaris: JRE_HOME/lib/sparc/client/libjvm.so
AIX: JRE_HOME/bin/j9vm/libjvm.so (IBM JRE)
Novell SUSE Linux JRE_HOME/lib/i386/client/libjvm.so
Oracle Enterprise Linux: JRE_HOME/lib/i386/client/libjvm
HP-UX: JRE_HOME/lib/IA64N/server/libjvm.so



Solution
Once the DLL parameter was updated to "/opt/java1.5/jre/lib/IA64N/server/libjvm.so", the error no longer occurred.

How To Add a New Property or Set the Value of an Existing Property in the Siebel Message XML that is Being Sent Out Through a Workflow Process

When you Need to add a property called SessionId to a SiebelMessage header to pass it to an external application. To illustrate this example, the integration uses the EAI XML Write to File business service and writes the XML to a file for easy inspection. In this case, the XML Converter business service is not needed because the EAI XML Write to File business service uses a property set as an input instead of an XML string. This will simplify the workflow process a bit. The workflow process will have 4 steps : Start, Query an Account, Write to File, and End.

  1. Create a new workflow process record called SessionId and define 4 steps, one start step, two business service steps, and finally an end step.
 
  1. Connect each step and rename them as shown above.
 
  1. In the Query an Account step, use the EAI Siebel Adapter business service and Query method.
 
  1. In the Write to File step, use the EAI XML Write to File business service and Write Siebel Message method.
 
  1. Define an additional Process Property on the workflow process with Type = Hierarchy and Name = Accnt Msg.
 
  1. Set the Object Id process property with the value of the ROW_ID of an existing Account in the Siebel database.
 
  1. For the Query an Account step, create the following input arguments:
 
Input Argument
Type
Value
Property Name
Output Integration Object Name
Literal
Sample Account
 
Object Id
Process Property
 
Object Id
 
  1. For the Query an Account step, create the following output arguments:
 
Output Argument
Type
Property Name
Siebel Message
Output Argument
Accnt Msg
 
  1. For the Write to File step, create the following input arguments:
     
Input ArgumentTypeValueProperty NameSequence*
(see note)
File NameLiteralc:\sessionid.xml 1
Siebel MessageProcess Property Accnt Msg2
SiebelMessage.SessionIdLiteral12345 3

 

NOTE From CR 10598825: For Siebel version 8.0, set the Sequence property of the SiebelMessage.SessionId input argument to a value higher than in the Siebel Message input argument,in other words, the sequence of the Siebel Message argument must be lesser in value. Or, create the SiebelMessage.SessionId input argument after creating the Siebel Message argument so that the auto-generated value for the sequence in the SiebelMessage.SessionId is greater than Siebel Message argument.

 

 
The result of this workflow process is that the header of the XML will change from:
 
<SiebelMessage MessageId="" MessageType="Integration Object" IntObjectName="Sample Account">
 
To:
 
<SiebelMessage MessageId="" MessageType="Integration Object" IntObjectName="Sample Account" SessionId="12345">
 
NOTE: One common error with this technique is to use "Siebel Message" instead of "SiebelMessage" as the top-level node. To determine how to name the nodes, view the process property hierarchy values in the workflow process simulator and check the child type value. Check this by clicking on the ellipse in the Process Property Hierarchy control. Examine the properties at each level of the XML by expanding the Child Type control in the parent and then inspect the values in the Property Key control.
 
In this example the child type for the Accnt Msg process property hierarchy is SiebelMessage not "Siebel Message". The node value must be the same as the type value. Expand the SiebelMessage child type and notice the next level node is ListOfSample Account and that the Property Keys control for the SiebelMessage node now includes the SessionId property.
 
NOTE: In Siebel version 7.7 onwards, the workflow process simulator is located in Siebel Tools. Use the Watch window to review the value in the process properties.
 

Scenario 2: Using the same workflow process, need to set a value for the MessageId property in the SiebelMessage header.

 
In the Query an Account step, add the following input argument:
 
Input Argument
Type
Value
MessageId
Literal
ABCDE
 
The result of this workflow process is that the header of the XML will change from:
 
<SiebelMessage MessageId="" MessageType="Integration Object" IntObjectName="Sample Account" SessionId="12345">
 
To:
 
<SiebelMessage MessageId="ABCDE" MessageType="Integration Object" IntObjectName="Sample Account" SessionId="12345">
 
NOTE: If user tries to add a new property to the SiebelMessage header at this point (for example SessionId), the value will not be set. If user tries to add it in the format  SiebelMessage.SessionId the following error is received:
 
Error invoking service 'EAI Siebel Adapter', method 'Query' at step 'Query an Account'.
Next ->
Required message header property 'IntObjectName' is missing or invalid
 

Scenario 3: Need to add a property called SessionId to a SiebelMessage header when using the EAI XML Converter to pass the XML as a string to the transport business service.

 
In this case create a new workflow process with 5 steps  Start, Get Account, Convert to XML, Contact External App, and End.
 
  1. Create a new workflow process record called SessionIdEAIXMLConverter and define 5 steps, one start step, three business service steps, and finally an end step.
 
  1. Connect each step and rename them as shown above.
 
  1. In the Get Account step, use the EAI Siebel Adapter business service and Query method.
 
  1. In the Convert to XML step, use the EAI XML Converter business service and Property Set to XML method.
 
  1. In the Contact External App step, use the EAI File Transport business service and the Send method.
 
NOTE: In the Contact External App step, it is possible to use any transport business service that takes an XML string as an input - the EAI MQ Series Server Transport, the EAI HTTP Transport, etc. The example uses the EAI File Transport business service to illustrate the technique and allow the user to inspect the output easily, but it is possible to use the other transport business services as well.
 
  1. Define two additional process properties on the workflow process:
 
Name
Type
Accnt Msg
Hierarchy
XML
String
 
  1. Set the Object Id process property with the value of the ROW_ID of an existing Account record in the Siebel database.
 
  1. For the Get Account step, create the following input arguments:
 
Input Argument
Type
Value
Property Name
Output Integration Object Name
Literal
Sample Account
 
Object Id
Process Property
 
Object Id
 
  1. For the Get Account step, create the following output arguments:
 
Output Argument
Type
Property Name
Siebel Message
Output Argument
Accnt Msg
 
  1. For the Convert to XML step, create the following input arguments:
 
Input Argument
Type
Value
Property Name
Siebel Message
Process Property
 
Accnt Msg
SiebelMessage.SessionId
Literal
12345
 
 
NOTE: For Siebel version 8.0, set the Sequence property of the SiebelMessage.SessionId input argument to a value higher than in the Siebel Message input argument, in other words, the sequence of the Siebel Message argument must be lesser in value. Or, create the SiebelMessage.SessionId input argument after creating the Siebel Message argument so that the auto-generated value for the sequence in the SiebelMessage.SessionId is greater than Siebel Message argument.
 
  1. For the Convert to XML step, create the following output arguments:
 
Output Argument
Type
Property Name
Message Text
Output Argument
XML
 
  1. For the Contact External App step, create the following input arguments:
 
Input Argument
Type
Value
Property Name
Message Text
Process Property
 
XML
Append To File
Literal
true
 
File Name
Literal
<path to file> for example c:\filetest.txt
 
Is Text File
Literal
true
 
 
The result of this workflow process is that the XML will be written to the file specified in the Contact External App step. The header of the XML will change from:
 
<SiebelMessage MessageId="" MessageType="Integration Object" IntObjectName="Sample Account">
 
To:
 
<SiebelMessage MessageId="" MessageType="Integration Object" IntObjectName="Sample Account" SessionId="12345">
 

Scenario 4: Using the same workflow process as scenario 3, need to set a value for the MessageId property in the SiebelMessage header.

 
For the Convert to XML step, create the following input arguments:
 
Input Argument
Type
Value
SiebelMessage.MessageId
Literal
ABCDE
 
NOTE: For Siebel version 8.0, set the Sequence property of the above argument to be higher than the sequence of Siebel Message argument.
 
The result of this workflow process is that the header of the XML will change from:
 
<SiebelMessage MessageId="" MessageType="Integration Object" IntObjectName="Sample Account" SessionId="12345">
 
To:
 
<SiebelMessage MessageId="ABCDE" MessageType="Integration Object" IntObjectName="Sample Account" SessionId="12345">
 

Scenario 5: Using the same workflow process as scenario 4, need to update the value for the Home Page property of the Account.

 
For the Convert to XML step, create the following input arguments:
 
Input Argument
Type
Value
SiebelMessage.ListOfSample Account.Account.Home Page
Literal
www.test.com
 
NOTE: For Siebel version 8.0, set the Sequence property of the above argument to be smaller than the sequence of Siebel Message argument.
 
The result of this is that the Home Page value of the Account you are passing out through the workflow is set to www.test.com.
 

NOTE: Regarding the format, even though the second node of the SiebelMessage has its XML tag set to ListofSampleAccount, the type shown in the workflow process simulator is ListOfSample Account (with the o in Of an upper case character and a space between Sample and Account) and therefore the input argument must reflect that. Similarly, although the Home Page integration component field in the Account integration component shows the XML tag is HomePage, the property in the simulator shows that the value is Home Page (with a space between Home and Page) and therefore the input argument must reflect that. In general, when listing several records, the prefix ListOf will be appended to the name of the integration object to represent the top-level node name, and then the next level will be defined with the integration component name. If the integration component name is not the same as the integration object then it will have a node with the ListOf prefix as well as a sub-level node with the integration component name (for example ListOfBusiness Address and ListOfContact in the level below the Account node).

Finally, when setting the value of a node element where several records are present, only the first record will have its value updated. If there were several records returned by the Get Account step for instance, only the first one in the list would have its Home Page value updated. For this reason, updating node elements should be limited to those nodes with only one record or the top level node in a group (those with the Type = ListOf<some value>). One other caution is that the workflow step input argument is limited to 75 characters so the names of the integration object, integration component and integration component fields should be kept short if they need to be updated in this type of scenario.
How to define Siebel CRM specific service fields (Fault, Header) in .WSDL, generated for a Siebel Inbound Web Service?

An external application, that consumes WSDL file, generated by Siebel CRM for an Inbound Web Service,  may need  to know details (schema) about Siebel CRM standard fields, appearing in SOAP message (request or response).

 
Siebel Web Services Framework use at run-time some standard fields in SOAP Header and SOAP Fault parts of SOAP message. Such definitions are not produced by WSDL Generator of Siebel User Interface (design-time).

This documents provides some usage examples, how scheme for some standard Siebel fields could be explicitly included in .WSDL file, after it has generated.

Solution

SOAP Fault: Siebel Details part


<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified" attributeFormDefaul="unqualified"
                      xmlns:xsd        ="http://www.w3.org/2001/XMLSchema"
           xmlns:siebelfault="http://www.siebel.com/ws/fault"
           targetNamespace  ="http://www.siebel.com/ws/fault">
 
   <xsd:element        name="siebdetail" type="siebelfault:siebdetail"/>
   <xsd:complexType    name="siebdetail">
       <xsd:sequence>
          <xsd:element name="logfilename" maxOccurs="1" minOccurs="0" type="xsd:string"/>
          <xsd:element name="errorstack"  maxOccurs="1" minOccurs="0" type="siebelfault:errorstack"/>
       </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType   name="errorstack">
       <xsd:sequence>
          <xsd:element name="error" maxOccurs="unbounded" minOccurs="0" type="siebelfault:error"/>
       </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType   name="error">
       <xsd:sequence>
          <xsd:element name="errorcode"   maxOccurs="1" minOccurs="0" type="xsd:string"/>
          <xsd:element name="errorsymbol" maxOccurs="1" minOccurs="0" type="xsd:string"/>
          <xsd:element name="errormsg"    maxOccurs="1" minOccurs="0" type="xsd:string"/>
       </xsd:sequence>
    </xsd:complexType>
</xsd:schema>

 

SOAP Header: Siebel WS-Security part (Siebel 7.7 onwards)


<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified"
         xmlns:xsd       ="http://www.w3.org/2001/XMLSchema"
         xmlns:siebelwsse="http://schemas.xmlsoap.org/ws/2002/07/secext"
         targetNamespace ="http://schemas.xmlsoap.org/ws/2002/07/secext">

    <xsd:element       name="Security" type="siebelwsse:Security"/>
    <xsd:complexType   name="Security">
       <xsd:sequence>
          <xsd:element name="UsernameToken" maxOccurs="1" minOccurs="0" type="siebelwsse:UsernameToken"/>
       </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType   name="UsernameToken">
       <xsd:sequence>
          <xsd:element name="Username" maxOccurs="1" minOccurs="0" type="xsd:string"/>
          <xsd:element name="Password" maxOccurs="1" minOccurs="0" type="xsd:string"/>
       </xsd:sequence>
     </xsd:complexType>
</xsd:schema>


SOAP Header: Siebel Web Service Session Management part (Siebel 7.8 onwards)

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified"
            xmlns:xsd      ="http://www.w3.org/2001/XMLSchema"
            xmlns:siebelwsh="http://siebel.com/webservices"
            targetNamespace="http://siebel.com/webservices">

    <xsd:element    name = "SessionToken" type="xsd:string" />

    <xsd:element    name = "UsernameToken" type="siebelwsh:SiebelUsernameToken" />
    <xsd:simpleType name = "SiebelUsernameToken">
       <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>

    <xsd:element    name = "PasswordText" type="siebelwsh:SiebelPasswordText" />
    <xsd:simpleType name = "SiebelPasswordText">
       <xsd:restriction base="xsd:string"/>
    </xsd:simpleType>

    <xsd:element    name = "SessionType" type="siebelwsh:SiebelSessionType" />
    <xsd:simpleType name = "SiebelSessionType">
       <xsd:restriction base="xsd:string">
          <xsd:enumeration value="None"/>
          <xsd:enumeration value="Stateless"/>
          <xsd:enumeration value="Statefull"/>
          <!--
             Siebel 8.1.1 onwards:
           --->
          <xsd:enumeration value="ServerDetermine"/>
       </xsd:restriction>
    </xsd:simpleType>

    <!--
         Siebel 8.1.1 onwards (application internal use):
     --->
    <xsd:element name = "LangCode"     type="xsd:string" />
    <xsd:element name = "Locale"       type="xsd:string" />
    <xsd:element name = "CurrencyCode" type="xsd:string" />

</xsd:schema>

Usage example (post-edition of WSDL, generated for a Siebel Inbound Web Service)

It is presumed here, that:
   - the SOAP Fault part is stored in the "SiebelFault.xsd" file, in the same folder as the .WSDL
   - the SOAP Header part for Siebel Web Service Session Management is stored in the "SiebelWSHeader.xsd" file, in the same folder as the .WSDL
    - the Web Service name is: "Svc1"
   - the URI of the Inbound Web Service is: "http://my.site.com/Svc1"
   - the Web Service port name of HTTP Transport is: "Default"
   - the Web Service method(operation) name is: "Execute"
   - the SOAP Binding is: rpc/literal
   - the URL to virtual folder of the EAI Object Manager on Siebel Web Server is: "http://my.site.com/eai_enu"

<?xml version="1.0" encoding="UTF-8"?>
<definitions 
        xmlns                     = "http://schemas.xmlsoap.org/wsdl/"
        xmlns:xsd             = "http://www.w3.org/2001/XMLSchema"
        xmlns:soap          = "http://schemas.xmlsoap.org/wsdl/soap/"
        xmlns:soapenc    ="http://schemas.xmlsoap.org/soap/encoding/"
        xmlns:soapenv    ="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:siebelwsh   ="http://siebel.com/webservices"
        xmlns:siebelfault ="http://www.siebel.com/ws/fault"
        xmlns:xsdLocal0 ="http://my.site.com/Svc1"
        xmlns:tns              ="http://my.site.com/Svc1"
        targetNamespac  ="http://my.site.com/Svc1">

       <!--
             Import of  Siebel scheme for parts in  SOAP Fault and SOAP Header
       -->
      <import namespace = "http://www.siebel.com/ws/fault" location = "SiebelFault.xsd"/>
       <import namespace = "http://siebel.com/webservices" location = "SiebelWSHeader.xsd"/>

       . . .

       <!--
            Definition of message types for Siebel part  in SOAP Fault and SOAP Header
        -->
       <message name="SiebelFault">
               <part name="siebdetail" element="siebelfault:siebdetail"/>
       </message>


       <message name="SiebelWSHeader">
             <part name="UsernameToken" element="siebelwsh:UsernameToken"/>
             <part name="PasswordText"     element="siebelwsh:PasswordText"/>
             <part name="SessionType"       element="siebelwsh:SessionType"/>
             <part name="SessionToken"    element="siebelwsh:SessionToken"/>
       </message>


        . . .

      <portType name="Default">

              <operation name="Execute">

                  . . .

                 <!--
                      Definition of faut message for Siebel part in SOAP Fault
                   -->
                  <fault message="tns:SiebelFault" name="SiebelFault"/>
             </operation>

              . . .

     </portType>

     . . .

     <binding name="Default" type="tns:Default">
          <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>

          <operation name="Execute">
                 <soap:operation soapAction="rpc/http://my.site.com/Svc1:Execute"/>

                   <input>
                          <soap:body namespace="http://my.site.com/Svc1" use="literal"/>

                           <!--
                                Declaration of Siebel parts in SOAP Header (request)
                            -->
                           <soap:header namespace="http://siebel.com/webservices"  use="literal" message="tns:SiebelWSHeader" part="UsernameToken"/>
                           <soap:header namespace="http://siebel.com/webservices"  use="literal" message="tns:SiebelWSHeader" part="PasswordText"/>
                           <soap:header namespace="http://siebel.com/webservices" use="literal" message="tns:SiebelWSHeader" part="SessionType"/>
                           <soap:header namespace="http://siebel.com/webservices" use="literal" message="tns:SiebelWSHeader" part="SessionToken"/>


                    </input>

                    <output>
                              <soap:body namespace="http://my.site.com/Svc1" use="literal"/>

                               <!--
                                    Declaration of Siebel parts in SOAP Header (response)
                                -->
                               <soap:header namespace="http://siebel.com/webservices" use="literal" message="tns:SiebelWSHeader" part="SessionToken"/>

                     </output>

                   <!--
                       Declaration of Siebel part in SOAP Fault (fault response)
                    -->
                   <fault name="SiebelFault">
                         <soap:fault namespace="http://www.siebel.com/ws/fault" use="literal" name="SiebelFault"/>
                   </fault>


                   . . .

           </operation>

           . . .

      </binding>

      . . .

    <service name="Svc1">
         <port binding="tns:Default" name="Default">
             <soap:address location="http://my.site.com/eai_enu/start.swe?SWEExtSource=WebService&SWEExtCmd=Execute&WSSOAP=1"/>
         </port>

         . . .

     </service>

     . . .

</definitions>

Pages

Subscribe to Siebel EAI