16Siebel Pricer Deployment and Integration
Siebel Pricer Deployment and Integration
This chapter contains information about integrating Siebel Pricer with Siebel business components and external applications. It covers the following topics:
About Pricing Integration
You can integrate Siebel Pricer internally or externally, that is, from other Siebel application modules, or from other manufacturers' applications.
Siebel Pricer functionality is used internally for quotes, orders, and agreements, and can be used with popular external applications and services, for example, Enterprise Resource Planning (ERP) applications. Pricing integration executes as follows:
External Modules. This is the point where the integration starts. For example, Oracle eBusiness Suite, SAP or other systems provide product pricing information to Siebel.
Enterprise Application Integration. Siebel adapters and transport mechanisms are used to obtain the pricing information from external modules.
Workflow Engine or the Pricing Manager Business Service. Siebel workflow processes are triggered using signals that use events within the Siebel application.
Context Service. The first step in the pricing workflow is to retrieve the context information from the quote, the order, and so on, to obtain the header information from the database, and then to provide it to the pricing workflow.
Siebel Workflow Process. This consists of steps that invoke methods from Row Set Transformation Toolkit business service.
The following figure shows how the Pricing Manager business service can be integrated to provide Siebel Pricer functionality to both internal and external application modules.

Integration Methods for Siebel Pricer
Siebel Pricer supports the following types of integration:
Internal integration. This allows you to configure the Siebel application so that Siebel Pricer works with other Siebel business objects. Without configuration, Siebel Pricer works with quotes, orders, and agreements. For more information, see Internal Integration of Siebel Pricer.
External integration. This allows you to integrate Siebel Pricer with other external applications, such as back office applications, in the following way:
External integration using Pricer as a service. You can use the Siebel Pricer engine without using the Siebel interface. Use this method when your business model does not require the external quotes and orders to be replicated in the Siebel application. For more information, see External Integration of Siebel Pricer Using Pricer as a Service.
Integration using the Pricer API. The API is retained to support users who used the Pricer API in earlier versions of the Siebel application, but for whom it is no longer the best practice in version 7.8 or later. For more information, see Siebel Pricing Manager API Reference.
Internal Integration of Siebel Pricer
Without configuration, pricing functionality is used by quotes, orders, and agreements.
You can configure the application so that any business component can use pricing functionality. This topic gives an example of configuring the Opportunity business component to integrate it with Pricer. You can use similar methods for other business components.
This example allows the Opportunity and Opportunity Product business components to invoke the pricing procedure. For information about the pricing procedure, see Siebel Pricer Technical Reference.
To allow the Opportunity and Opportunity Product business components to invoke the pricing procedure, do the following:
Changing the Base Class of the Business Component to User CSSBCOrderMgmt Base
Use the following procedure to change the base class of the business component to user CSSBCOrderMgmtBase.
To change the base class of the business component to User CSSBCOrderMgmtBase
In Web Tools, open a workspace and then navigate to Object Explorer.
For more information on using the workspace dashboard, see Using Siebel Tools.
Select Business Component in the Object Explorer.
Query for Opportunity Product and Opportunity.
Lock these objects.
For these objects, set Class to CSSBCOrderMgmtBase.
Setting the base class to CSSBCOrderMgmtBase enables a business component to raise a signal.
Setting Up the Context Service Variable Map Integration Object and Mode
Use the following procedure to set up the Context Service Variable Map Integration Object and Mode
To set up the Context Service Variable Map Integration Object and Mode
In Web Tools, open a workspace and then navigate to Object Explorer.
For more information on using the workspace dashboard, see Using Siebel Tools.
In Object Explorer and under Business Component, click Business Component User Prop.
For both the Opportunity Product and Opportunity Buscomp, add the new user properties shown in the following table.
Name Value Instance Uniform Name EAI Object:Opportunity
ISS Opportunity
Mode
Opportunity
The first user property sets the Integration Object to be used for the variable map.
- The second user property set the mode of the business component. This corresponds to the mode in the Signal and Variable Map definition. In this case, items with mode All and Opportunity would be picked up.
Triggering CalculatePriceForOpportunity
Use the following procedure to expose a button on the UI to trigger CalculatePriceForOpportunity.
To expose a button on the UI to trigger CalculatePriceForOpportunity
In Web Tools, open a workspace and then navigate to Object Explorer.
For more information on using the workspace dashboard, see Using Siebel Tools.
Click on the Applet object in Object Explorer, and query for Opportunity Product Applet.
Expland the Applet list and click Control.
In the Control applet, create a new control using the following information:
Name. Reprice
Caption. Reprice
HTML Type. Mini Button
Method Invoked. CalculatePriceForOpportunity
Expand the Applet list and click Applet Web Template.
In Applet Web Templates, select Name = Edit List, and expand the Web Template field.
In Web Templates applet, expand the Name field.
In the Object Explorer editor, map the Reprice control to the required control.
You can preview your changes by clicking on the eye icon.
Save and deliver your workspace.
Designing the CalculatePriceForOpportunity Signal
Use the following procedure to design the CalculatePriceForOpportunity signal.
To design the CalculatePriceForOpportunity signal
Create a new signal with a name CalculatePriceForOpportunity.
Drill down on the workspace.
Create an Action as shown in the following table.
Sequence Service Name Service Type Service Method 1
PSP Driver Workflow Process
Workflow
RunProcess
Create the parameters as shown in the following table.
Name Value CPScope
Whole
RowScope
Selected
SubPSPWFName
Pricing Procedure - Opportunity
Variable Map - Context
Opportunity Pricing Variable Map - Context
Variable Map - Row Set
Opportunity Pricing Variable Map - Row Set
Click the Release New Version button.
Create the signal to be triggered by the button created in Step 4.
Creating an Integration Object
Use the following procedure to create an Integration Object.
To create an integration object
In Web Tools, open a workspace and then navigate to Object Explorer.
For more information on using the workspace dashboard, see Using Siebel Tools.
Select Integration Object in Object Explorer and create a new record, ISS Opportunity Integration Object, as shown in the following table.
Name Project Business Object External Name XML Tag ISS Opportunity
ISS Order Management
Opportunity
ISS Object
ListOfISSObject
Expand Integration Object in the Object Explorer and click Integration Component.
Create two new records under ISS Opportunity Integration Object, as shown in the following table.
Name
External Name Context
Parent Integration Component
External Name
External Sequence
Card-inality
XML Container Elemen
XML Tag
Header
Opportunity
-
Opportunity
1
One
ListOfHeader
Header
Line Item
Opportunity Product
Header
Opportunity Product
2
Zero or More
ListOfLineItem
LineItem
Enter Integration Component Fields of Opportunity, as shown in the following table.
Name
Data Type
Length
External Name
External Data Type
External Length
XML Style
XML Tag
Name
DTYPE_TEXT
50
Name
DTYPE_TEXT
50
Element
Name
Enter Integration Component Fields of Opportunity Product, as shown in the following table.
Name
Data Type
Length
Precision
External Name
External Data Type
External Length
XML Style
XML Tag
Comment
DTYPE_TEXT
255
N/A
Comment
DTYPE_TEXT
255
Element
Comment
Cost
DTYPE_NUMBER
N/A
N/A
Cost
DTYPE_NUMBER
N/A
Element
Cost
Product Id
DTYPE_ID
N/A
N/A
Product Id
DTYPE_ID
N/A
Element
ProductId
Product Price
DTYPE_NUMBER
N/A
N/A
Product Price
DTYPE_NUMBER
N/A
Element
ProductPrice
Product Quantity
DTYPE_NUMBER
N/A
16
Product Quantity
DTYPE_NUMBER
N/A
Element
Product Quantity
Quotable
DTYPE_TEXT
N/A
N/A
Quotable
DTYPE_BOOL
N/A
Element
Quotable
Revenue
DTYPE_NUMBER
N/A
N/A
Revenue
DTYPE_NUMBER
N/A
Element
Revenue
Save your changes and submit the workspace for delivery.
Creating the Variable Map
Use the following procedure to create the variable map.
To create the variable map
Create the Opportunity Pricing Variable Map - Context Variable Map.
Drill down on Workspace.
Create the Variable Definition as shown in the following table.
Variable Name In/Out Type On Null Name
In/Out
Text
Ignore
Create the Variable Source for the Variable Definition as shown in the following table.
Mode Path Source Type Opportunity
$Current/Header/Name
Instance
Click the Mode tab and create the recording as shown in the following table.
Mode Object Name Any
Header
Create the Opportunity Pricing Variable Map - Row Set Variable Map.
Drill down on Workspace.
Create the Variable Definitions as shown in the following table.
Variable Name In/Out Type On Null Comment
In/Out
Text
Ignore
Cost
In/Out
Number
Ignore
Product Id
In/Out
Id
Ignore
Product Price
In/Out
Number
Ignore
Product Quantity
In/Out
Number
Ignore
Quotable
In/Out
Boolean
Ignore
Revenue
In/Out
Number
Ignore
Create the Variable Source for each of these Variable Definitions as shown in the following table.
Mode Path Source Type Opportunity
$Current/Line Item/Comment
Instance
Opportunity
$Current/Line Item/Cost
Instance
Opportunity
$Current/Line Item/Product Id
Instance
Opportunity
$Current/Line Item/Product Price
Instance
Opportunity
$Current/Line Item/Product Quantity
Instance
Opportunity
$Current/Line Item/Quotable
Instance
Opportunity
$Current/Line Item/Revenue
Instance
Click the Mode tab and create the recording as shown in the following table.
Mode Object Name Any
Line Item
Create the variable maps referenced by the signal.
Creating the Pricing Procedure
Use the following procedure to create the pricing procedure.
To create the pricing procedure
Create a pricing procedure that drives the pricing logic.
One example is Pricing Procedure - Opportunity.xml in Sample Pricing Procedure for Internal Integration. Make additions or modifications to this example as needed.
Pricing procedures are a type of PSP procedure. For more information about PSP procedures, see Siebel Order Management Infrastructure Guide.
Sample Pricing Procedure for Internal Integration
This topic contains Pricing Procedure - Opportunity.xml, the XML version of a sample pricing procedure meant to drive the pricing logic for internally integrating pricing with the Opportunity and Opportunity Product business components.
<?xml version="1.0" encoding="UTF-8" ?> <?Siebel-Property-Set EscapeNames="false"?> -<SiebelMessage MessageId="" IntObjectName="Repository Workflow Definition Export V.7.7.1" MessageType="Integration Object" IntObjectFormat="Siebel Hierarchical"> -<ListOfRepositoryWorkflowProcess> -<RepositoryWorkflowProcess> <BusinessObject /> <CacheLocale /> <Comments /> <Description>Support Pricer APIs GetProductListPrice and GetConfigItemPrice</ Description> <EffectiveEndDate /> <EffectiveStartDate /> <ErrorProcessName /> <Group /> <Inactive>N</Inactive> <Module /> <Name>Pricing Procedure - Opportunity: 3</Name> <PersistentFrequency>N</PersistentFrequency> <PersistentLevel /> <ProcessName>Pricing Procedure - Opportunity</Proces sName> <ProjectName>Pricer</ProjectName> <ReplicationLevel>None</ReplicationLevel> <Runnable>N</Runnable> <Status>COMPLETED</Status> <Version>3</Version> <WorkflowMode>SRVFLOW</WorkflowMode> - <ListOfRepositoryWfProcessProp> - <RepositoryWfProcessProp> <AccessMode>RW</AccessMode> <BusinessComponent /> <Comments>Variables that are shared across all rows in Row Set.</Comments> <CorrelatorFlag>N</CorrelatorFlag> <DataType>PROPSET_CHILD</DataType> <DefaultDate /> <DefaultNumber /> <DefaultString /> <DisplayName /> <InOut>INOUT</InOut> <Inactive /> <IntegrationObject /> <Name2>Context</Name2> <VirtualField /> </RepositoryWfProcessProp> - <RepositoryWfProcessProp> <AccessMode>RW</AccessMode> <BusinessComponent /> <Comments>The set of line items to reprice.</Comments> <CorrelatorFlag>N</CorrelatorFlag> <DataType>PROPSET_CHILD</DataType> <DefaultDate /> <DefaultNumber /> <DefaultString /> <DisplayName /> <InOut>INOUT</InOut> <Inactive /> <IntegrationObject /> <Name2>Row Set</Name2> <VirtualField /> </RepositoryWfProcessProp> </ListOfRepositoryWfProcessProp> - <ListOfRepositoryWfStep> - <RepositoryWfStep> <AllowRetryFlag>N</AllowRetryFlag> <BusinessComponent /> <Operation /> <BusinessServiceMethod /> <BusinessServiceName /> <Comments /> <Description /> <ErrorCode /> <ErrorMessage /> <EvaluateAll>Y</EvaluateAll> <Inactive>N</Inactive> <Layout>@0*0*3*0*0*0*1*r13*288 12 352 529*FillBgClr8 *167641088*ArrowEnd1*1</ Layout> <MaximumIterations /> <Name3>End</Name3> <ProcessingMode /> <SubprocessName /> <Type>END</Type> <UserInteractView /> <ListOfRepositoryWfStepBranch /> <ListOfRepositoryWfStepIOArgument /> <ListOfRepositoryWfStepRecipient /> </RepositoryWfStep> - <RepositoryWfStep> <AllowRetryFlag>N</AllowRetryFlag> <BusinessComponent /> <Operation /> <BusinessServiceMethod>Simple Look-Up Transform</Bus inessServiceMethod> <BusinessServiceName>Row Set Transformation Toolkit< /BusinessServiceName> <Comments /> <Description>Look up all values on the price list it em.</Description> <ErrorCode /> <ErrorMessage /> <EvaluateAll>Y</EvaluateAll> <Inactive>N</Inactive> <Layout>@0*0*3*0*0*0*1*r13*180 12 244 529*FillBgClr8 *134217218*ArrowEnd1*1</ Layout> <MaximumIterations /> <Name3>Get List Price</Name3> <ProcessingMode /> <SubprocessName /> <Type>TASK</Type> <UserInteractView /> - <ListOfRepositoryWfStepBranch> - <RepositoryWfStepBranch> <Comments /> <Count /> <EvaluateSequence /> <Event /> <EventCancelFlag>N</EventCancelFlag> <EventObject /> <EventObjectType /> <EventVisibility>ENTERPRISE</EventVisibility> <Expression /> <Inactive>N</Inactive> <Name2>NewConn:1-3J9N9</Name2> <Subevent /> <TimeLimit /> <Type>CONNECTOR</Type> <UserEventName /> <UserEventStorage /> <UserEventTimeout>0</UserEventTimeout> <ListOfRepositoryWfBranchCriteria /> </RepositoryWfStepBranch> </ListOfRepositoryWfStepBranch> - <ListOfRepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>Business Component</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>Price List Item</ValueSear chSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>Business Component</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>Price List Item</ValueSearchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>Business Component</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>Price List Item</ValueSear chSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>Business Component</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>Price List Item</ValueSear chSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>Business Object</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>Admin Price List</ValueSea rchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>Business Object</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>Admin Price List</ValueSea rchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>Business Object</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>Admin Price List</ValueSea rchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>Business Object</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>Admin Price List</ValueSea rchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>Context</Name2> <OutputArg /> <PropertyName>Context</PropertyName> <Sequence>0</Sequence> <Type>PROPERTY</Type> <ValueSearchSpecification /> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>On First Match 5</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>{Row.Product Price} = {Mat ch.List Price}</ ValueSearchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>On First Match 5</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>{Row.Product Price} = {Mat ch.List Price}</ ValueSearchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>On First Match 5</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>{Row.Product Price} = {Mat ch.List Price}</ ValueSearchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>On First Match 5</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>{Row.Product Price} = {Mat ch.List Price}</ ValueSearchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>On First Match 6</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>{Row.Revenue} = {Match.MSR P Price}</ ValueSearchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>On First Match 6</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>{Row.Revenue} = {Match.MSR P Price}</ ValueSearchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>On First Match 6</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>{Row.Revenue} = {Match.MSR P Price}</ ValueSearchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>On First Match 6</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>{Row.Revenue} = {Match.MSR P Price}</ ValueSearchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>On First Match 8</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>{Row.Cost} = {Match.Cost}</ ValueSearchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>On First Match 8</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>{Row.Cost} = {Match.Cost}</ ValueSearchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>On First Match 8</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>{Row.Cost} = {Match.Cost}</ ValueSearchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>On First Match 8</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>{Row.Cost} = {Match.Cost}</ ValueSearchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>Row Set</Name2> <OutputArg /> <PropertyName>Row Set</PropertyName> <Sequence>0</Sequence> <Type>PROPERTY</Type> <ValueSearchSpecification /> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>Search Specification</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>[Price List Id] = {Context .Name} AND [Product Id] = {Row.Product Id}</ValueSearchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>Search Specification</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>[Price List Id] = {Context .Name} AND [Product Id] = {Row.Product Id}</ValueSearchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>Search Specification</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>[Price List Id] = {Context .Name} AND [Product Id] = {Row.Product Id}</ValueSearchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>I</InputFlag> <ItemTypeName /> <Name2>Search Specification</Name2> <OutputArg /> <PropertyName /> <Sequence>0</Sequence> <Type>LITERAL</Type> <ValueSearchSpecification>[Price List Id] = {Context .Name} AND [Product Id] = {Row.Product Id}</ValueSearchSpecification> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>O</InputFlag> <ItemTypeName /> <Name2>O:Get List Price1</Name2> <OutputArg>Row Set</OutputArg> <PropertyName>Row Set</PropertyName> <Sequence>1</Sequence> <Type>ARGUMENT</Type> <ValueSearchSpecification /> </RepositoryWfStepIOArgument> - <RepositoryWfStepIOArgument> <BusinessComponent /> <BusinessComponentField /> <Comments /> <Inactive>N</Inactive> <InputFlag>O</InputFlag> <ItemTypeName /> <Name2>O:Get List Price20</Name2> <OutputArg>Context</OutputArg> <PropertyName>Context</PropertyName> <Sequence>2</Sequence> <Type>ARGUMENT</Type> <ValueSearchSpecification /> </RepositoryWfStepIOArgument> </ListOfRepositoryWfStepIOArgument> <ListOfRepositoryWfStepRecipient /> </RepositoryWfStep> - <RepositoryWfStep> <AllowRetryFlag>N</AllowRetryFlag> <BusinessComponent /> <Operation /> <BusinessServiceMethod /> <BusinessServiceName /> <Comments /> <Description /> <ErrorCode /> <ErrorMessage /> <EvaluateAll>Y</EvaluateAll> <Inactive>N</Inactive> <Layout>@0*0*3*0*0*0*1*r12*96 12 160 529*FillBgClr8* 167641088*ArrowEnd1*1</ Layout> <MaximumIterations /> <Name3>Start</Name3> <ProcessingMode /> <SubprocessName /> <Type>START</Type> <UserInteractView /> - <ListOfRepositoryWfStepBranch> - <RepositoryWfStepBranch> <Comments /> <Count /> <EvaluateSequence /> <Event /> <EventCancelFlag>N</EventCancelFlag> <EventObject /> <EventObjectType /> <EventVisibility>ENTERPRISE</EventVisibility> <Expression /> <Inactive>N</Inactive> <Name2>NewConn:1-3J9N7</Name2> <Subevent /> <TimeLimit /> <Type>DEFAULT</Type> <UserEventName /> <UserEventStorage /> <UserEventTimeout>0</UserEventTimeout> <ListOfRepositoryWfBranchCriteria /> </RepositoryWfStepBranch> </ListOfRepositoryWfStepBranch> <ListOfRepositoryWfStepIOArgument /> <ListOfRepositoryWfStepRecipient /> </RepositoryWfStep> </ListOfRepositoryWfStep> - <ListOfRepositoryWfBranchConnector> - <RepositoryWfBranchConnector> <Comments /> <FromStepName>Start</FromStepName> <Inactive>N</Inactive> <Layout>@0*0*9*0*0*0*9*LineWidth1*24*FrHS1*22*P16*18 0 324*NPts1*22*P06*152 324*ToID8*04-EAATQ6*FromID8*04-EAAU84*ToHS1*08*Arrow End1*1</Layout> <Name2>NewConn:1-3J9N7</Name2> <ForBranchName>NewConn:1-3J9N7</ForBranchName> <ParentType>DEFAULT</ParentType> <ToStepName>Get List Price</ToStepName> </RepositoryWfBranchConnector> - <RepositoryWfBranchConnector> <Comments /> <FromStepName>Get List Price</FromStepName> <Inactive>N</Inactive> <Layout>@0*0*9*0*0*0*9*LineWidth1*24*FrHS1*22*P16*2 8 8 324*NPts1*22*P06*244 324*ToID8*04-EAATP6*FromID8*04-EAATQ4*ToHS1*08*Arro w End1*1</Layout> <Name2>NewConn:1-3J9N9</Name2> <ForBranchName>NewConn:1-3J9N9</ForBranchName> <ParentType>CONNECTOR</ParentType> <ToStepName>End</ToStepName> </RepositoryWfBranchConnector> </ListOfRepositoryWfBranchConnector> </RepositoryWorkflowProcess> </ListOfRepositoryWorkflowProcess> </SiebelMessage>
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 application. 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 the following figure.

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

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 application. 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. See the following examples for more information:
Sample XML Input Property Set for External Integration
The following code sample shows some 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 & 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 & 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
The following code sample shows some 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 & 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 & 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 'Test Price List' 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 'Test Price List' 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 'Test Price List' 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 'Test Price List' 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 'Test Price List' 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 'Test Price List' price list" Adjustment_spcType="Price Override" ></Waterfall ></Net_spcPrice_spcWaterfall ></Line_spcItem ></Row_spcSet ></PropertySet
Siebel Pricing Manager API Reference
Earlier versions of the Pricing Manager API reference included a user property reference and a business service reference. These user properties are obsolete because of the new order management infrastructure. If your integration needed these user properties, then you must rework the integration using pricing procedures, signals, variable maps and other features of the new order management infrastructure. For more information, see Siebel Order Management Infrastructure Guide.
The methods are retained for backward compatibility, even though the API is no longer the best practice for external integration. For preferred integration methods, see Integration Methods for Siebel Pricer.
This topic describes the following:
Pricing Manager methods internal to the application in the first table in this topic.
Pricing Manager methods that are published in Web Tools in the second table in this topic.
Parameters for the CalculatePriceExternal Method in the third table in this topic.
The following table describes the Pricing Manager methods that are internal to Siebel application.
Method Name | External or Internal | Purpose | Input Arguments | Output Arguments |
---|---|---|---|---|
CalculatePrice |
Internal |
Used for calling Siebel Pricer from other business components. |
None |
None |
CalculatePriceAll |
Internal |
CalculatePrice for all quote Item discounts and calculate aggregate price for the whole quote. |
None |
None |
The following table describes the Pricing Manager methods that are published in Web Tools.
Method Name | External or Internal | Purpose | Input Arguments | Output Arguments |
---|---|---|---|---|
CalculateFinalDiscountExternal |
External |
Calculates aggregate pricing for external application user. A multiple item record must be passed as the argument. Assumes the CalculatePrice function was called for each individual line. |
Price list ID, current total (current total item price), Pricer VBC BO Name (current business component for pricing operations), list total (total list price of all items). |
Pricing Comments, Final Discount Price, Pricing Comments and Discount Amount on the children Property set. |
CalculatePrice |
Internal |
Used for calling Oracle’s Siebel Pricer from other business components. |
Not applicable |
Not applicable |
CalculatePrice- External |
External |
Single Item repricing for external users. |
See the following table. |
Not applicable |
GetFinalDiscount |
Obsolete - will be removed |
Obsolete. |
Not applicable |
Not applicable |
GetProductListPrice |
External or Internal |
Retrieve List Prices and other information from Price List Item for a product and price list combination. |
Price List Id, Product Id. |
Currency Code, Min Sale Price, Max Sale Price, Price Book Id, Current Price, List Price, List Price Field x (Auxiliary outputs start with List Price Field, then followed by List Price Field 1, and so on.) |
Reload Cache |
External or Internal |
Obsolete |
None. |
None. |
SetPriceList |
External or Internal |
To set the price list at the profile attribute level. This is currently used in Sales to override the Price list ID set by the session. |
No input because this set is based on the global profile attributes in eSales. |
No output arguments as described for input arguments. |
Start |
Internal |
Hidden - not for use by external users. Obsolete |
None. |
None. |
The following table describes the Parameters for the CalculatePriceExternal Method.
Name | Optional | Type | Explanation |
---|---|---|---|
Currency Code |
N |
Output |
The currency code for the price |
Current Discount |
N |
Output |
The current volume discount. |
Current Discount ID |
N |
Output |
The current volume discount ID. |
Current Price |
N |
Output |
The final price. |
List Price |
N |
Output |
The start price. |
Next Discount |
N |
Output |
The next available item for volume discount. |
Next Discount ID |
N |
Output |
None |
Original List Price |
Y |
Input |
None |
Price List ID |
N |
Input |
Not applicable |
Pricing Comments |
N |
Output |
Not applicable |
Product ID |
N |
Input |
Not applicable |
Quantity |
N |
Input |
Not applicable |
Service Price % |
N |
Output |
Indicates the percentage used to determine the price of the Service Product, where the Service Price is set to a percentage of the product price. |
Upsell Message |
N |
Output |
The volume discount upsell message. |
Volume Discount ID |
N |
Output |
The volume discount ID (a copy of the ID in Quote). |
Workflows for External Pricing API
Earlier releases expose APIs on the Pricing Manager Business Service for external integration. To support backward compatibility, Oracle continues to provide support for these APIs.
Because of changes to the pricing engine for version 7.8 or later, the internals of these APIs are replaced by the Row Set Transformation Toolkit Business Service, which is driven by workflows. External API support uses the following workflows:
CalculatePriceExternal Workflow (for Business Service method CalculatePriceExternal)
Get Config Item Price Workflow (for Business Service method GetConfigItemPrice)
Get Product List Price Workflow (for Business Service method GetProductListPrice)
CalculatePriceExternal Workflow
The CalculatePriceExternal Business Service method is an external interface that takes in product line items in a property set and provides pricing information for each of the product line items. The following figure illustrates the CalculatePriceExternal workflow process.

Workflow Description
This workflow does the following:
Get Sales Service Flag. Determines if the product is a service product. Service products have different pricing requirements from regular sales products. For more information, see Dynamic Pricing Procedure Workflow.
Pricing Procedure - Default. Calls the Dynamic Pricing Procedure workflow as a subprocess that handles all pricing operations.
Get Next Discount. Populates Volume Discount upsell messages.
The following table lists the steps in the CalculatePriceExternal workflow with the business service and method that is called by each.
Name | Type | Business Service | Method | Sub Process | Description |
---|---|---|---|---|---|
Get Sales Service Flag |
Business Service |
Row Set Transformation Toolkit Service |
Simple Look-Up Transform |
Not applicable |
Determines if the product is a service product. |
Dynamic Pricing Procedure |
Sub Process |
Not applicable |
Not applicable |
Dynamic Pricing Procedure |
Calls the Dynamic Pricing Procedure workflow as a subprocess that handles all the pricing operations. |
Get Next Discount |
Business Service |
Row Set Transformation Toolkit Service |
Simple Look-Up Transform |
Not applicable |
Populates Volume Discount upsell messages. |
Get Config Item Price Workflow
The GetConfigItemPrice Business Service Method is an API that fetches price adjustments from Customizable Product Pricing Designer for a price list, product, or product port combination. The following figure illustrates the GetConfigItemPrice workflow process.

Workflow Description
This workflow does the following:
Get List Price. Gets the List Price for the input product and price list, which provides the basis for subsequent Pricing Designer adjustments.
Get Root Price List Item Id and Customizable Product Adjustment. These steps retrieve the Customizable Product Pricing Designer adjustment.
The following table lists the steps in the GetConfigItemPrice workflow with the business service and method that is called by each.
Name | Type | Business Service | Method | Sub Process | Description |
---|---|---|---|---|---|
Get List Price |
Business Service |
Row Set Transformation Toolkit Service |
Simple Look-Up Transform |
Not applicable |
Gets the List Price for the input product and price list. |
Get Root Price List Item Id |
Business Service |
Row Set Transformation Toolkit Service |
Simple Look-Up Transform |
Not applicable |
Retrieves the Root Price List Item Id for each item for use in the next step. |
Customizable Product Adjustment |
Business Service |
Row Set Transformation Toolkit Service |
Simple Look-Up Transform |
Not applicable |
Queries in Price Config Item Buscomp for Pricing Designer adjustments. |
Get Product List Price Workflow
The GetProductListPrice Business Service method is an API that gets the price and some other attributes from the Price List Item Business Component for a price list and product combination. The following figure illustrates the GetProductListPrice workflow process.

This workflow gets the list price for the input product and price list. Also, it retrieves other information such as Min Price, Max Price, Volume Discount Id, Dynamic Matrix Id, and so on.
The following table lists the steps in the GetProductListPrice workflow with the business service and method that is called.
Name | Type | Business Service | Method | Sub Process | Description |
---|---|---|---|---|---|
Get List Price |
Business Service |
Row Set Transformation Toolkit Service |
Simple Look-Up Transform |
Not applicable |
Gets List Price for the input product and price list. |
Cache Configuration Settings
Parameters specifying cache size typically determine the number of records cached locally. When the specified cache limit is reached, the next new record must be loaded. As a rule, you should not change the cache sizes specified for your application unless advised to do so by your server administrator.
Configuration settings for pricing can be set at the server level and at the remote client level. The standard configuration file includes a section called pricing cache which includes the following parameter settings and corresponding default values:
[PricingCache] PriceListCacheLifeTime = -1 PriceListItemCacheLifeTime = -1 PricerMappingCacheSize = 100 PricerPriceItemCacheSize = 100 PricerPriceListCacheSize = 20 PricerPriceModelCacheSize = 50
The following table describes the pricing cache parameters in more detail.
Parameter Name | Description |
---|---|
PriceListCacheLifeTime |
This is the lifetime of the price list header information where the integer value represents seconds, the time unit of measure. The price list header information must be reloaded after this number of seconds has passed. If all other factors remain the same, then there is a trade-off between refresh-time and loading speed. If you decrease a LifeTime value, then the result is more frequent refresh of data and a longer loading time for data. This is represented by the parameter PARAM_SUBSYS_PRICE_LIFE-TIME. The default value for PriceListItemCacheLifeTime is -1. |
PriceListItemCacheLifeTime |
This is the lifetime of the price list line item and volume discount information where the integer value represents seconds, the time unit of measure. The price list line item information must be reloaded after this number of seconds has passed. This is represented by the parameter PARAM_SUBSYS_PRICE_ITEM_LIFE_TIME. The default value for PriceListItemCacheLifeTime is -1. |
PricerMappingCacheSize |
Not Applicable.
Note: This is the number of records to be cached for each mapping factor. The default is 100. If this value is set to zero, then mapping information will not be cached, and the database will immediately be searched.
|
PricerPriceItemCacheSize |
Not applicable.
Note: This applies to the price list line item records for each price list cache.
|
PricerPriceListCacheSize |
Not applicable.
Note: This applies to the price list records at the header level.
|
PricerPriceModelCacheSize |
Not applicable.
Note: This applies to the model cache.
|
The default value for PriceListCacheLifeTime and PriceListItemCacheLifeTime is -1, which means that the cache remains unrefreshed indefinitely. You can change this value to any number between zero and 86400. Zero means to turn off the cache. 86400 is the number of seconds in a full day.
If you want to reload new list prices for products without having to log out of and back in again to your Siebel Business Application, then you must set the following pricing cache parameters to, for example, 60:
PriceListCacheLifeTime = 60 PriceListItemCacheLifeTime = 60
Setting both parameters (PriceListCacheLifeTime and PriceListItemCacheLifeTime) to low values results in more frequent refreshing and slows down performance, but keeps the pricing information up to date.