Using Existing Integration Objects in Outbound REST Services

You can integrate Siebel modules with REST outbound module for Siebel REST requests of type Business Service, where the Integration Object that needs to be interfaced is the same. You can use existing Siebel Integration Objects, instead of those created by the Web Services Import Wizard, when creating a Siebel-to-Siebel outbound REST integration. This removes the necessity of creating data mapping for integrations, as it uses existing Siebel Integration Objects. You can also use this method of integration for business services that have simple properties defined at method argument level or have a combination of simple properties and Integration Objects.

To use existing Integration Objects in Outbound REST services, you must:

  1. Generate the input schema using an OpenAPI (swagger) description for the business service with the MatchRequestFormat flag enabled. For example: https://www.mysite.com/siebel/v1.0/service/PDS Order/QueryByExample/describe?matchrequestformat=y
  2. Import it in Web Tools to create the repository artefacts, such as proxy Business Service and Integration Objects.
  3. Replace the wizard-generated Integration Objects with the Integration Objects that are already available in Siebel repository in the appropriate Business Service method argument.
  4. Replace the business service method argument name with the actual type of the Siebel hierarchy.

Types of JSONs Supported

This feature supports simple JSONs and complex JSONs of Siebel hierarchy type. For detailed information see:

Simple JSON Example

In this example, Simple Arg Echo business service is imported in Web Tools in REST outbound wizard. It generates the proxy Business Service and the Integration Objects. You need to replace the tool generated Integration Objects with simple arguments available in the original business service, such as DateInput, NumberInput, StringInput, and specify the appropriate data type and input/output type. Once the workspace is delivered and the proxy Business Service is triggered, the implementation relies on the argument names, which do not have the colon sign (:), to recognize and align the input and output property set processing as per the Siebel standards. This helps the implementation to directly consume the property set generated from another Siebel module as input to the REST Outbound service or use the result generated from the REST Outbound for further processing of another Siebel module without having to create any data mapping.

Simple JSON example

Handling Data Types

Business Service argument data types are used to derive the data type of JSON value in the request. String and Date data types are converted to String in JSON. Number is retained as Number in JSON data type.

Example of Input/Output property set for proxy Business Service of type "Simple Arg Echo" for Echo

Property Set Request Example:

<?xml version="1.0" encoding="UTF-8"?><?Siebel-Property-Set EscapeNames="true"?><PropertySet matchrequestformat_clnquery="Y" password_clnsecurity="sadmin"
 username_clnsecurity="sadmin"
 type_clnsecurity="basic"
 StringInput="test"
 NumberInput="1"
 DateInput="09/03/2014 23:03:38"
></PropertySet>

Property Set Response Example:

<?xml version="1.0" encoding="UTF-8"?><?Siebel-Property-Set EscapeNames="true"?>
<PropertySet
 DateInput="09/03/2014 23:03:38"
 StatusCode="200"
 NumberInput="1"
 StringInput="test"
></PropertySet>

Complex JSON Example

In this example, PDS Order BS Synchronize method is imported in Web Tools in REST outbound wizard. It generates the proxy Business Service and Integration Objects. You need to replace the tool generated Integration Objects with the original PDS Order Integration Object and specify the appropriate data type and input/output type. Business Service method argument name should be the Siebel hierarchy type needed in the input or output. Note that the argument name doesn't have colon sign (:) here, which is used as an indicator to process it as a Siebel Integration Object.

Complex JSON example

Handling Data Types

For the Integration Object provided in the input, Integration Component field data type is used to derive the data type of JSON value in the request. Here's the conversion to compute the JSON value datatype from the Siebel data type.

  • TYPE_BOOL → Boolean
  • DTYPE_INTEGER → Integer
  • DTYPE_NUMBER → Number
  • DTYPE_ID / DATE / TEXT / [all other types] → String

Support for Special Parameters

Apart from normal property sets, this implementation supports additional parameters at Integration Object level or at the ListOf(array) level for features like pagination. This implementation also supports hierarchical Integration Components which are there in PDS Order Integration Object and others.

Example of Input/Output property set for proxy Business Service of type "PDS Order" Synchronize method

Property Set Request Example:

<?xml version="1.0" encoding="UTF-8"?><?Siebel-Property-Set EscapeNames="true"?><PropertySet matchrequestformat_clnquery="Y" password_clnsecurity="sadmin"
 username_clnsecurity="sadmin"
 type_clnsecurity="basic">
     <SiebelMessage
     MessageId="88-4XL9E"
     MessageType="Integration Object"
     IntObjectName="PDS Order"
     IntObjectFormat="Siebel Hierarchical">
         <ListOfPDS_spcOrder>
            <Header
             Account_spcLocation="SHIP_FROM"
             Comments=""
             Id="88-3TSBB"
             Revision="1"
             Service_spcAccount_spcId="88-3TS9P"
            ................................
             Compound_spcProduct_spcNumber="88-3TSBB"
             Price_spcList_spcId="88-17KYJ">
                 <ListOfLine_spcItem>
                     <Line_spcItem
                     Related_spcAsset_spcIntegration_spcId=""
                     Eligibility_spcReason=""
                     Extended_spcQuantity_spcRequested="1"
                     Need_spcRefresh="Y"
                    .............................>
                        <Line_spcItem
                         Related_spcAsset_spcIntegration_spcId=""
                         Eligibility_spcReason=""
                         Extended_spcQuantity_spcRequested="1"
                         Need_spcRefresh="Y"
                         .............................>
                         </Line_spcItem>
                         <Line_spcItem
                         Related_spcAsset_spcIntegration_spcId=""
                         Eligibility_spcReason=""
                         Extended_spcQuantity_spcRequested="1"
                         Need_spcRefresh="Y"
                         ..............................>
                             <ListOfXA>
                                 <XA
                                 Parent_spcId="88-3TSEV"
                                 Value="Microsoft"
                                 Cfg_spcState_spcCode="Engine Picked Item"
                                 Unit_spcof_spcMeasure=""
                                 Id="88-3TSEW"
                                 ..............................>
                                 </XA>
                                 <XA
                                 Parent_spcId="88-3TSEV"
                                 Value=""
                                 Cfg_spcState_spcCode="Engine Picked Item"
                                 Unit_spcof_spcMeasure=""
                                 Id="88-3TSEX"
                                 ...............................>
                                 </XA>
                             </ListOfXA>
                         </Line_spcItem>
                     </Line_spcItem>
                 </ListOfLine_spcItem>
             </Header>
         </ListOfPDS_spcOrder>
     </SiebelMessage>
 </PropertySet>

Property Set Response Example:

<?xml version="1.0" encoding="UTF-8"?><?Siebel-Property-Set EscapeNames="true"?><PropertySet
 StatusCode="200">
     <SiebelMessage
     MessageId="88-4XL9E"
     MessageType="Integration Object"
     IntObjectName="PDS Order"
     IntObjectFormat="Siebel Hierarchical">
         <ListOfPDS_spcOrder>
             <Header
             Account_spcLocation="SHIP_FROM"
             Revision="1"
             Id="88-3TSBB"
             Status="Pending"
             ...................>
                 <ListOfLine_spcItem>
                    <Line_spcItem
                     Eligibility_spcReason=""
                     Extended_spcQuantity_spcRequested="1"
                     Need_spcRefresh="Y"
                     Discount_spcPercent=""
                    .....................>
                        <Line_spcItem
                         Extended_spcQuantity_spcRequested="1"
                         Eligibility_spcReason=""
                         Need_spcRefresh="Y"
                         Current_spcPrice=""
                         ....................>
                         </Line_spcItem>
                        <Line_spcItem
                         Extended_spcQuantity_spcRequested="1"
                         Eligibility_spcReason=""
                         Need_spcRefresh="Y"
                         Current_spcPrice=""
                         Discount_spcPercent=""
                        ........................>
                            <ListOfXA>
                                <XA
                                 Parent_spcId="88-3TSEV"
                                 Value="OM_FULL"
                                 Unit_spcof_spcMeasure=""
                                 Id="88-3TSF4"
                                ........................>
                                </XA>
                                <XA
                                 Parent_spcId="88-3TSEV"
                                 Value="1"
                                 Unit_spcof_spcMeasure=""
                                 Id="88-3TSF3"
                                 .......................>
                                 </XA>
                            </ListOfXA>
                        </Line_spcItem>
                    </Line_spcItem>
                </ListOfLine_spcItem>
            </Header>
        </ListOfPDS_spcOrder>
    </SiebelMessage>
</PropertySet>

HTTP Status Response

The response generated has the HTTP status of the REST outbound request. It is available in property set with property name: StatusCode.