Pricing Administration Guide > Siebel Pricer Deployment and Integration >

External Integration of Siebel Pricer Using Pricer as a Service


You use Pricer as an external service if you do not want to use the Siebel interface, but only the Siebel pricing engine. The Siebel pricing engine must receive data in a particular format, which is called the property set. Integration involves getting data in that format and passing it to the pricing procedure.

A typical flow for this type of external integration is as follows:

  • The property set is the standard data format for integration. It is created by a Business Service Script that is based on the data from the external system. However, the property set format must be understood by the pricing procedure. For the property set format expected by the pricing procedure, see Sample Pricing Procedure for Internal Integration and Sample XML Output Property Set for External Integration.
  • The desired pricing procedure is called with the property set generated in the previous step. Pricing information is updated on the property set.
  • The Business Service Script extracts updated information from the property set and synchronizes back to the external data source.

The following example illustrates this process.

A simple product and a complex product with a component product are created. A price list is then created and the products are associated with it, as shown in Figure 25.

Figure 25. Price List for External Integration Example
Click for full size image

Products are added to the quote, as shown in Figure 26. As expected, prices are stamped on each of the products, and all the steps under Internal Integration are performed to produce the prices.

Figure 26. Quote for External Integration Example
Click for full size image

Now, instead of using the Siebel application interface to create the quote, the following script is used to create the quote:

function Service_PreInvokeMethod (MethodName, Inputs, Outputs)

{

var fileName = "C:\\log.txt";

var xmlFile = "C:\\pricer_input.xml";

var procedureName = "Dynamic Pricing Procedure";

var psXMLSvcInputs = TheApplication ().NewPropertySet ();

var psPricingProcedureInputs = TheApplication ().NewPropertySet ();

var psPricingProcedureOutputs = TheApplication ().NewPropertySet ();

// In this example, Read the Property Set from an XML file.

// The Property Set contains a simple product and a complex product to be priced.

// This can be generated from other sources as well, such as from

// external systems, as long as the Property Set conformed to the format

var xmlSvc = TheApplication().GetService ("EAI XML Read from File");

psXMLSvcInputs.SetProperty ("FileName", xmlFile);

xmlSvc.InvokeMethod ("ReadPropSet", psXMLSvcInputs, psPricingProcedureInputs);

// After the property set is created, the "Dynamic Pricing Procedure" WF

// is invoked. The output would contain the simple product and the complex

// product with updated pricing information.

var wfSvc = TheApplication().GetService ("Workflow Process Manager");

psPricingProcedureInputs.SetProperty ("ProcessName", procedureName);

wfSvc.InvokeMethod ("RunProcess", psPricingProcedureInputs, psPricingProcedureOutputs);

return (CancelOperation);

}

The first function in this script contains three essential processes for external integration:

  • A property set is created by a Business Service Script based on the data from the external system. In this example, the property set is loaded from an XML file. The property set format must be understood by the pricing procedure. For the required property set format, see the step that follows this one.

    // In this example, Read the Property Set from an XML file.

    // The Property Set contains a simple product and a complex product to be priced.

    // This can be generated from other sources as well, such as from

    // external systems, as long as the Property Set conformed to the format

    var xmlSvc = TheApplication().GetService ("EAI XML Read from File");

    psXMLSvcInputs.SetProperty ("FileName", xmlFile);

    xmlSvc.InvokeMethod ("ReadPropSet", psXMLSvcInputs, psPricingProcedureInputs);

  • The desired Pricing Workflow is called with the property set generated in the previous step. Pricing information is updated on the property set.

    var procedureName = "Dynamic Pricing Procedure";

    // ...

    var wfSvc = TheApplication().GetService ("Workflow Process Manager");

    psPricingProcedureInputs.SetProperty ("ProcessName", procedureName);

    wfSvc.InvokeMethod ("RunProcess", psPricingProcedureInputs, psPricingProcedureOutputs);

  • The Business Service Script extracts updated information from the property set and synchronizes back to the external data source. Sample XML Input Property Set for External Integration

<?xml version="1.0" encoding="UTF-8"?><?Siebel-Property-Set EscapeNames="true"?><PropertySet

><Context

Local_spcLanguage="ENU"

Local_spcTime_spcZone="(GMT-08:00) Pacific Time (US &amp; Canada); Tijuana"

CPScope="Whole"

CPCollapseAll=""

RowScope="Current"

Mode="Quote"

>Default Pricing Variable Map - Context<Header

Currency_spcCode="USD"

Discount_spcPercent=""

Exchange_spcDate="02/09/2005"

Price_spcList_spcId="2-478KT"

>2-478L2</Header

></Context

><Row_spcSet

Local_spcLanguage="ENU"

Local_spcTime_spcZone="(GMT-08:00) Pacific Time (US &amp; Canada); Tijuana"

CPScope="Whole"

CPCollapseAll=""

RowScope="Current"

Mode="Quote"

>Default Pricing Variable Map - Row Set<Line_spcItem

NRC_spcCxTotal="0"

Class_spcId=""

Unit_spcof_spcMeasure=""

Service_spcPrice_spcMethod=""

Id="2-478LF"

Current_spcDiscount_spcId=""

Exclude_spcPricing_spcFlag="N"

Extended_spcQuantity_spcRequested="1"

Sales_spcService_spcFlag="N"

Covered_spcProduct_spcNet_spcPrice=""

Currency_spcCode="USD"

Product_spcId="2-478K6"

Min_spcPrice=""

Next_spcDiscount_spcId=""

Discount_spcPercent=""

Prod_spcProm_spcId=""

Rollup_spcAmount="0"

Covered_spcProduct_spcId=""

Covered_spcAsset_spcProduct_spcId=""

Parent_spcItem_spcId=""

Product_spcPort_spcId=""

Net_spcPrice=""

List_spcPrice=""

Promotion_spcItem_spcFlag="N"

Upsell=""

Root_spcBundle_spcFlag="N"

Price_spcType="One-Time"

Covered_spcLine_spcItem_spcId=""

Product_spcLine_spcId="No Match Row Id"

Unit_spcPrice=""

Max_spcPrice=""

Discount_spcAmount=""

Exchange_spcDate="02/09/2005"

Quantity="1"

Action_spcCode="Add"

Usage_spcAsset_spcProduct_spcId=""

Price_spcList_spcId=""

Start_spcPrice=""

Service_spcPrice_spcPercent=""

MRC_spcCxTotal="0"

>2-478LF<Attributes

>Default Pricing Variable Map - XA</Attributes

></Line_spcItem

><Line_spcItem

NRC_spcCxTotal=""

Class_spcId=""

Unit_spcof_spcMeasure=""

Service_spcPrice_spcMethod=""

Id="2-478NH"

Current_spcDiscount_spcId=""

Exclude_spcPricing_spcFlag="N"

Extended_spcQuantity_spcRequested="2"

Sales_spcService_spcFlag="N"

Covered_spcProduct_spcNet_spcPrice=""

Currency_spcCode="USD"

Product_spcId="2-478JP"

Min_spcPrice=""

Next_spcDiscount_spcId=""

Discount_spcPercent=""

Prod_spcProm_spcId=""

Rollup_spcAmount="0"

Covered_spcProduct_spcId=""

Covered_spcAsset_spcProduct_spcId=""

Parent_spcItem_spcId="2-478LF"

Product_spcPort_spcId="2-478KD"

Net_spcPrice=""

List_spcPrice=""

Promotion_spcItem_spcFlag="N"

Upsell=""

Root_spcBundle_spcFlag="N"

Price_spcType="One-Time"

Covered_spcLine_spcItem_spcId=""

Product_spcLine_spcId="No Match Row Id"

Unit_spcPrice=""

Max_spcPrice=""

Discount_spcAmount=""

Exchange_spcDate="02/09/2005"

Quantity="2"

Action_spcCode="Add"

Usage_spcAsset_spcProduct_spcId=""

Price_spcList_spcId=""

Start_spcPrice=""

Service_spcPrice_spcPercent=""

MRC_spcCxTotal=""

>2-478NH<Attributes

>Default Pricing Variable Map - XA</Attributes

></Line_spcItem

><Line_spcItem

NRC_spcCxTotal="0"

Class_spcId=""

Unit_spcof_spcMeasure="Per Month"

Service_spcPrice_spcMethod=""

Id="2-478OD"

Current_spcDiscount_spcId=""

Exclude_spcPricing_spcFlag="N"

Extended_spcQuantity_spcRequested="1"

Sales_spcService_spcFlag="N"

Covered_spcProduct_spcNet_spcPrice=""

Currency_spcCode="USD"

Product_spcId="2-478J6"

Min_spcPrice=""

Next_spcDiscount_spcId=""

Discount_spcPercent=""

Prod_spcProm_spcId=""

Rollup_spcAmount="0"

Covered_spcProduct_spcId=""

Covered_spcAsset_spcProduct_spcId=""

Parent_spcItem_spcId=""

Product_spcPort_spcId=""

Net_spcPrice=""

List_spcPrice=""

Promotion_spcItem_spcFlag="N"

Upsell=""

Root_spcBundle_spcFlag="N"

Price_spcType="Recurring"

Covered_spcLine_spcItem_spcId=""

Product_spcLine_spcId="No Match Row Id"

Unit_spcPrice=""

Max_spcPrice=""

Discount_spcAmount=""

Exchange_spcDate="02/09/2005"

Quantity="1"

Action_spcCode="Add"

Usage_spcAsset_spcProduct_spcId=""

Price_spcList_spcId=""

Start_spcPrice=""

Service_spcPrice_spcPercent=""

MRC_spcCxTotal="0"

>2-478OD<Attributes

>Default Pricing Variable Map - XA</Attributes

></Line_spcItem

></Row_spcSet

></PropertySet

>

Sample XML Output Property Set for External Integration

<?xml version="1.0" encoding="UTF-8"?><?Siebel-Property-Set EscapeNames="true"?><PropertySet

><Context

Local_spcLanguage="ENU"

Local_spcTime_spcZone="(GMT-08:00) Pacific Time (US &amp; Canada); Tijuana"

CPScope="Whole"

CPCollapseAll=""

RowScope="Current"

Mode="Quote"

>Default Pricing Variable Map - Context<Header

Price_spcList_spcName="Test Price List"

Currency_spcCode="USD"

Discount_spcPercent=""

Is_spcPrice_spcList_spcExpired_spcFlag="N"

Exchange_spcDate="02/09/2005"

Is_spcPrice_spcList_spcNot_spcEffective_spcFlag="N"

Price_spcList_spcId="2-478KT"

>2-478L2</Header

></Context

><Row_spcSet

Local_spcLanguage="ENU"

Local_spcTime_spcZone="(GMT-08:00) Pacific Time (US &amp; Canada); Tijuana"

CPScope="Whole"

CPCollapseAll=""

RowScope="Current"

Mode="Quote"

>Default Pricing Variable Map - Row Set<Line_spcItem

Extended_spcQuantity_spcRequested="1"

Temp_spcList_spcPrice="5000"

Discount_spcPercent=""

Rollup_spcAmount="4000"

Upsell=""

Covered_spcLine_spcItem_spcId=""

Temp_spcMRC_spcRollup_spcItem_spcPrice="0"

Quantity="1"

Price_spcList_spcId="2-478KT"

MRC_spcCxTotal="0"

Temp_spcNRC_spcCxTotal="9000"

Skip_spcPricing_spcFlag="N"

Effective_spcPromotion_spcId=""

Product_spcId="2-478K6"

Prod_spcProm_spcId=""

Temp_spcNRC_spcLine_spcTotal="9000"

Covered_spcAsset_spcProduct_spcId=""

Temp_spcMRC_spcLine_spcTotal="0"

Max_spcPrice=""

Root_spcPrice_spcList_spcItem_spcId="2-478KW"

MSRP_spcPrice=""

Temp_spcNRC_spcNet_spcPrice="5000"

Bundle_spcSequence_spcId=""

Net_spcPrice="5000"

List_spcPrice="5000"

Root_spcBundle_spcFlag="N"

Price_spcType="One-Time"

Product_spcLine_spcId="No Match Row Id"

Unit_spcof_spcMeasure=""

Temp_spcMRC_spcNet_spcPrice="0"

Id="2-478LF"

Purchase_spcPrice=""

Parent_spcItem_spcId=""

Rollup_spcItem_spcPrice="9000"

Exchange_spcDate="02/09/2005"

Covered_spcProduct_spcNet_spcPrice=""

Currency_spcCode="USD"

Root_spcExchange_spcDate="02/09/2005"

Cost_spcPrice=""

Covered_spcProduct_spcId=""

Product_spcPort_spcId=""

Root_spcPromotion_spcId=""

Unit_spcPrice=""

Discount_spcAmount=""

Dynamic_spcMatrix=""

Root_spcPrice_spcList_spcId="2-478KT"

Root_spcCurrency_spcCode="USD"

Exclude_spcPricing_spcFlag="N"

List_spcPrice_spcWaterfall_spcText="List price from &apos;Test Price List&apos; price list"

Price_spcList_spcItem_spcId="2-478KW"

Min_spcPrice=""

Temp_spcMRC_spcCxTotal="0"

Service_spcPrice_spcMethod=""

Next_spcDiscount_spcId=""

Promotion_spcItem_spcFlag="N"

Header_spcDiscount_spcAmount="0"

Action_spcCode="Add"

NRC_spcCxTotal="9000"

Class_spcId=""

List_spcPrice_spcWaterfall="5000"

Current_spcDiscount_spcId=""

Sales_spcService_spcFlag="N"

Rollup_spcAmount_spcMRC="0"

Temp_spcParent_spcQuantity="1"

Volume_spcDiscount_spcId=""

Root_spcProduct_spcId="2-478K6"

Pricing_spcAdjustment_spcAmount="0"

Usage_spcAsset_spcProduct_spcId=""

Start_spcPrice="5000"

Service_spcPrice_spcPercent=""

>2-478LF<Attributes

>Default Pricing Variable Map - XA</Attributes

><Net_spcPrice_spcWaterfall

><Waterfall

Adjustment_spcAmount="5000"

Price="5000"

Currency_spcCode="USD"

Text="List price from &apos;Test Price List&apos; price list"

Adjustment_spcType="Price Override"

></Waterfall

></Net_spcPrice_spcWaterfall

></Line_spcItem

><Line_spcItem

Extended_spcQuantity_spcRequested="2"

Temp_spcList_spcPrice="2000"

Discount_spcPercent=""

Rollup_spcAmount="0"

Upsell=""

Covered_spcLine_spcItem_spcId=""

Temp_spcMRC_spcRollup_spcItem_spcPrice="0"

Quantity="2"

Price_spcList_spcId="2-478KT"

MRC_spcCxTotal=""

Temp_spcNRC_spcCxTotal="4000"

Skip_spcPricing_spcFlag="N"

Effective_spcPromotion_spcId=""

Product_spcId="2-478JP"

Prod_spcProm_spcId=""

Temp_spcNRC_spcLine_spcTotal="4000"

Covered_spcAsset_spcProduct_spcId=""

Temp_spcMRC_spcLine_spcTotal="0"

Max_spcPrice=""

Root_spcPrice_spcList_spcItem_spcId="2-478KW"

MSRP_spcPrice=""

Temp_spcNRC_spcNet_spcPrice="2000"

Bundle_spcSequence_spcId=""

Net_spcPrice="2000"

List_spcPrice="2000"

Root_spcBundle_spcFlag="N"

Price_spcType="One-Time"

Product_spcLine_spcId="No Match Row Id"

Unit_spcof_spcMeasure=""

Temp_spcMRC_spcNet_spcPrice="0"

Id="2-478NH"

Purchase_spcPrice=""

Parent_spcItem_spcId="2-478LF"

Rollup_spcItem_spcPrice="2000"

Exchange_spcDate="02/09/2005"

Covered_spcProduct_spcNet_spcPrice=""

Currency_spcCode="USD"

Root_spcExchange_spcDate="02/09/2005"

Cost_spcPrice=""

Covered_spcProduct_spcId=""

Product_spcPort_spcId="2-478KD"

Root_spcPromotion_spcId=""

Unit_spcPrice=""

Discount_spcAmount=""

Dynamic_spcMatrix=""

Root_spcPrice_spcList_spcId="2-478KT"

Root_spcCurrency_spcCode="USD"

Exclude_spcPricing_spcFlag="N"

List_spcPrice_spcWaterfall_spcText="List price from &apos;Test Price List&apos; price list"

Price_spcList_spcItem_spcId="2-478KY"

Min_spcPrice=""

Temp_spcMRC_spcCxTotal="0"

Service_spcPrice_spcMethod=""

Next_spcDiscount_spcId=""

Promotion_spcItem_spcFlag="N"

Header_spcDiscount_spcAmount="0"

Action_spcCode="Add"

NRC_spcCxTotal=""

Class_spcId=""

List_spcPrice_spcWaterfall="2000"

Current_spcDiscount_spcId=""

Sales_spcService_spcFlag="N"

Rollup_spcAmount_spcMRC="0"

Temp_spcParent_spcQuantity="1"

Volume_spcDiscount_spcId=""

Root_spcProduct_spcId="2-478K6"

Pricing_spcAdjustment_spcAmount="0"

Usage_spcAsset_spcProduct_spcId=""

Start_spcPrice="2000"

Service_spcPrice_spcPercent=""

>2-478NH<Attributes

>Default Pricing Variable Map - XA</Attributes

><Net_spcPrice_spcWaterfall

><Waterfall

Adjustment_spcAmount="2000"

Price="2000"

Currency_spcCode="USD"

Text="List price from &apos;Test Price List&apos; price list"

Adjustment_spcType="Price Override"

></Waterfall

></Net_spcPrice_spcWaterfall

></Line_spcItem

><Line_spcItem

Extended_spcQuantity_spcRequested="1"

Temp_spcList_spcPrice="1000"

Discount_spcPercent=""

Rollup_spcAmount="0"

Upsell=""

Covered_spcLine_spcItem_spcId=""

Temp_spcMRC_spcRollup_spcItem_spcPrice="1000"

Quantity="1"

Price_spcList_spcId="2-478KT"

MRC_spcCxTotal="1000"

Temp_spcNRC_spcCxTotal="0"

Skip_spcPricing_spcFlag="N"

Effective_spcPromotion_spcId=""

Product_spcId="2-478J6"

Prod_spcProm_spcId=""

Temp_spcNRC_spcLine_spcTotal="0"

Covered_spcAsset_spcProduct_spcId=""

Temp_spcMRC_spcLine_spcTotal="1000"

Max_spcPrice=""

Root_spcPrice_spcList_spcItem_spcId="2-478KX"

MSRP_spcPrice=""

Temp_spcNRC_spcNet_spcPrice="0"

Bundle_spcSequence_spcId=""

Net_spcPrice="1000"

List_spcPrice="1000"

Root_spcBundle_spcFlag="N"

Price_spcType="Recurring"

Product_spcLine_spcId="No Match Row Id"

Unit_spcof_spcMeasure="Per Month"

Temp_spcMRC_spcNet_spcPrice="1000"

Id="2-478OD"

Purchase_spcPrice=""

Parent_spcItem_spcId=""

Rollup_spcItem_spcPrice="0"

Exchange_spcDate="02/09/2005"

Covered_spcProduct_spcNet_spcPrice=""

Currency_spcCode="USD"

Root_spcExchange_spcDate="02/09/2005"

Cost_spcPrice=""

Covered_spcProduct_spcId=""

Product_spcPort_spcId=""

Root_spcPromotion_spcId=""

Unit_spcPrice=""

Discount_spcAmount=""

Dynamic_spcMatrix=""

Root_spcPrice_spcList_spcId="2-478KT"

Root_spcCurrency_spcCode="USD"

Exclude_spcPricing_spcFlag="N"

List_spcPrice_spcWaterfall_spcText="List price from &apos;Test Price List&apos; price list"

Price_spcList_spcItem_spcId="2-478KX"

Min_spcPrice=""

Temp_spcMRC_spcCxTotal="1000"

Service_spcPrice_spcMethod=""

Next_spcDiscount_spcId=""

Promotion_spcItem_spcFlag="N"

Header_spcDiscount_spcAmount="0"

Action_spcCode="Add"

NRC_spcCxTotal="0"

Class_spcId=""

List_spcPrice_spcWaterfall="1000"

Current_spcDiscount_spcId=""

Sales_spcService_spcFlag="N"

Rollup_spcAmount_spcMRC="0"

Temp_spcParent_spcQuantity="1"

Volume_spcDiscount_spcId=""

Root_spcProduct_spcId="2-478J6"

Pricing_spcAdjustment_spcAmount="0"

Usage_spcAsset_spcProduct_spcId=""

Start_spcPrice="1000"

Service_spcPrice_spcPercent=""

>2-478OD<Attributes

>Default Pricing Variable Map - XA</Attributes

><Net_spcPrice_spcWaterfall

><Waterfall

Adjustment_spcAmount="1000"

Price="1000"

Currency_spcCode="USD"

Text="List price from &apos;Test Price List&apos; price list"

Adjustment_spcType="Price Override"

></Waterfall

></Net_spcPrice_spcWaterfall

></Line_spcItem

></Row_spcSet

></PropertySet

Pricing Administration Guide