16Siebel Pricer Deployment and Integration

Siebel Pricer Deployment and Integration

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.

The Pricing Manager business service (the Run-Time Pricing Engine) is described in the surrounding text.

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.

Caution: Perform these changes on the local environment only. The change has enterprise-wide effect and may affect others using the same URL. Do not perform these changes unless you are familiar with Web Tools and Siebel order management infrastructure.

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

    1. In Web Tools, open a workspace and then navigate to Object Explorer.

      For more information on using the workspace dashboard, see Using Siebel Tools.

    2. Select Business Component in the Object Explorer.

    3. Query for Opportunity Product and Opportunity.

    4. Lock these objects.

    5. For these objects, set Class to CSSBCOrderMgmtBase.

      Setting the base class to CSSBCOrderMgmtBase enables a business component to raise a signal.

    Note: You can do this only if the original business component is not using a specialized buscomp class. Otherwise, you risk losing the functionality offered by the specialized buscomp class.

      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

      1. In Web Tools, open a workspace and then navigate to Object Explorer.

        For more information on using the workspace dashboard, see Using Siebel Tools.

      2. In Object Explorer and under Business Component, click Business Component User Prop.

      3. 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

        1. The first user property sets the Integration Object to be used for the variable map.

        2. 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

        1. In Web Tools, open a workspace and then navigate to Object Explorer.

          For more information on using the workspace dashboard, see Using Siebel Tools.

        2. Click on the Applet object in Object Explorer, and query for Opportunity Product Applet.

        3. Expland the Applet list and click Control.

        4. In the Control applet, create a new control using the following information:

          • Name. Reprice

          • Caption. Reprice

          • HTML Type. Mini Button

          • Method Invoked. CalculatePriceForOpportunity

        5. Expand the Applet list and click Applet Web Template.

          1. In Applet Web Templates, select Name = Edit List, and expand the Web Template field.

          2. In Web Templates applet, expand the Name field.

        6. In the Object Explorer editor, map the Reprice control to the required control.

          You can preview your changes by clicking on the eye icon.

        7. Save and deliver your workspace.

          Designing the CalculatePriceForOpportunity Signal

          Use the following procedure to design the CalculatePriceForOpportunity signal.

          To design the CalculatePriceForOpportunity signal

          1. Create a new signal with a name CalculatePriceForOpportunity.

          2. Drill down on the workspace.

          3. Create an Action as shown in the following table.

            Sequence Service Name Service Type Service Method

            1

            PSP Driver Workflow Process

            Workflow

            RunProcess

          4. 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

          5. 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

            1. In Web Tools, open a workspace and then navigate to Object Explorer.

              For more information on using the workspace dashboard, see Using Siebel Tools.

            2. 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

            3. Expand Integration Object in the Object Explorer and click Integration Component.

            4. 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

            5. 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

            6. 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

            7. 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

              1. Create the Opportunity Pricing Variable Map - Context Variable Map.

              2. Drill down on Workspace.

              3. Create the Variable Definition as shown in the following table.

                Variable Name In/Out Type On Null

                Name

                In/Out

                Text

                Ignore

              4. Create the Variable Source for the Variable Definition as shown in the following table.

                Mode Path Source Type

                Opportunity

                $Current/Header/Name

                Instance

              5. Click the Mode tab and create the recording as shown in the following table.

                Mode Object Name

                Any

                Header

              6. Create the Opportunity Pricing Variable Map - Row Set Variable Map.

              7. Drill down on Workspace.

              8. 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

              9. 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

              10. 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.

                    This figure shows the Administration — Pricing tab in the Price Lists view. Two complex products and a simple product are listed in the Price List Line Items pane.

                    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.

                    This figure shows the Quotes tab in the Quote Test Quote view. Two complex products and a simple product are listed in the List Line Items pane.

                    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);
                      

                      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 &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

                        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 &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
                        

                          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

                            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.

                            The CalculatePriceExternal workflow is described in the surrounding text.

                            Workflow Description

                            This workflow does the following:

                            1. 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.

                            2. Pricing Procedure - Default. Calls the Dynamic Pricing Procedure workflow as a subprocess that handles all pricing operations.

                            3. 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.

                              The GetConfigItemPrice workflow is described in the surrounding text.

                              Workflow Description

                              This workflow does the following:

                              1. Get List Price. Gets the List Price for the input product and price list, which provides the basis for subsequent Pricing Designer adjustments.

                              2. 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.

                                The GetProductListPrice workflow is described in the surrounding text.

                                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.