26Siebel Configurator API Reference

About Siebel Product Configurator APIs

This chapter introduces advanced users to Siebel Product Configurator APIs. It assumes that you know Siebel Product Configurator and Siebel server architecture. Implementing the APIs described in this topic also requires proficiency in Siebel EAI and Siebel Object Interfaces.

To use these APIs, the user must be familiar with the following:

  • Siebel Business Process Designer

  • Runtime Events (personalization) if invoked from the UI

  • Siebel Object Interfaces

  • A Siebel scripting language (Siebel VB or Siebel eScript)

  • Recursive programming techniques

  • Constraint satisfaction theory

  • Underlying behavior of Siebel Product Configurator

  • Siebel product definition data model

  • Siebel property set representation of data (creation and transformation)

  • EAI Transports and Interfaces

    Available Siebel Product Configurator APIs

    Three main groups of APIs are used for accessing Siebel Product Configurator:

    • Group 1: UI

      • CPRUI Service API as Siebel Web Template items.

      • DOM API within the browser inherent in JavaScript and HTML.

    • Group 2: Model

      • Scripts that execute in the context of the current session and are implemented as part of the configuration model in the Scripts view.

    • Group 3: Instance

      • This API is for using Siebel Product Configurator or for manipulating the configuration session from a place other than the Siebel Product Configurator runtime UI.

      • The Remote Complex Object Instance Service is a business service that is available for accessing the Instance API.

    Note: For more information on debugging the Configurator APIs, see see 2037936.1 (Doc ID) on My Oracle Support.

      Instance APIs for the Complex Object Manager

      Instance APIs for the Complex Object Manager follow these general rules:

      • The Remote Complex Object Instance Service (RCOIS) is a business service. It can be accessed by anything in the Siebel architecture that can use a business service. As a business service, it is used by invoking methods, passing in property sets with input arguments, and getting results from the Outputs property set.

        Note: Before 7.8 the RCOIS was the API for using remote Siebel Product Configurator while Complex Object Instance Service (COIS) was the API for the embedded Siebel Product Configurator. In 7.8 and later versions the COIS and RCOIS are both proxies to the internal business service Siebel Product Configurator Service. All previous scripting efforts are still supported. Do all future scripting on the RCOIS.
      • A session is uniquely identified by two ID values, the Object Id and the Root Id. In quotes, the Object Id is the Quote Id and the Root Id is the Quote Item Id for the top-level parent (the root). In assets, the Object Id and the Root Id are both the root Asset Id.

      • A session is unique only within its own user session on a given Object Manager.

      • A port is another name for a Relationship.

      • A complex product is another name for a customizable product.

      • The Port Id is the ID of the relationship as defined in the Complex Product Structure BusComp.

      • The Prod Item Id is the ID of the relationship item as defined in the Complex Product Structure BusComp.

      • The Path for an item is the Integration ID of the specific item.

      • Version arguments are used only when testing a customizable product version that is different from the currently released version.

      Note: The parameters are property set and, unless indicated, all properties are on the root level property set.

      Instance APIs include the following methods:

        LoadInstance Method

        This method loads the complex object into memory. This is the starting point for all configurations.

        You cannot use this method unless you have first called the LoadEAI method, which is part of the Copy business service. For more information, see the topic about the ISS Copy Service business service in Siebel Order Management Infrastructure Guide.

        LoadInstance must always be called with Product Id as an additional parameter. This will certify that the application can find the correct remote Siebel Product Configurator object manager based on the Product Id.

        Note: This method is part of the Complex Object Instance business service. It must not be confused with LoadInstance Method, which is part of Cfg Web UI Service Loader business service.

        Input Arguments

        • ObjId. The unique identifier of the complex object header (for example, Quote ID).

        • RootId. The unique identifier of the complex object root (for example, Quote Line Item row id).

        • IntObjName. The name of the integration object specified in Oracle's Web Tools.

        • TriggerEvent. The flag that determines if script events are triggered. Normally, it must be set to Y. Set it to N for special uses of the API where customizable product model script events are not desired.

        • (Optional) Product Id. This parameter is used to find the correct remote Siebel Product Configurator object manager if Siebel Product Configurator object manager is enabled and used with component or server-based routing.
          Note: Product Id is mandatory if the Siebel Product Configurator is setup in remote mode, and also for customized workflows where the LoadInstance method is not the first method in the workflow.
        • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

        • (Optional) NewRecord. If set to Y, the instance will be populated with default values. The default is N.

        • (Optional) AutoSync. If set to Y, the instance will be synchronized to the database immediately after loading. The default is N.

        • (Optional) SearchSpec. Set this parameter to filter out all other hierarchical instances in the child buscomp. The default is an empty search specification. This parameter must have the following format:

          "[Header Buscomp.Id] = 'Id' AND [Item Buscomp.Root Id] = 'Root Id'"

          ex. [Quote.Id] = '10-4FR6D' AND [Quote Item.Root Id] = '10-81DUX'

        • (Optional) ExternalScript. Set this parameter to Y when running headless configurations (for example, through Siebel COM Data Server). Anything other than the Cfg Web UI Service is considered headless configuration. The difference is based on the Siebel user who is calling the service. The default is N.

        • (Optional) ClearValues. Y or N. Clears all cached Link Item Values. Use this parameter if you must clear values from the cache, for example because you the cached values are wrong and you must replace them.

        Output Arguments

        The following properties will be returned from the output property set:

        • CreateSession. If this property is set to Y the method CreateSession must be called after LoadInstance. CreateSession will be used with the input parameter Links to pass a set of links to the method.

        • (Optional) IsConfig. If this property is present and set to Y the configuration model has configuration rules defined.

        • (Optional) Links. If this property is set to Y the model has linked items.

        • (Optional) Links. If model has linked items, this parameter will hold linked items as child property set. This information shall be passed to CreateSession call in case there are any rules configured based on linked items.

        • (Optional) UnresolvedLinks. If this property is set to Y the model has unresolved linked items that must be calculated by the caller.

        • If NewRecord is set to Y in the input property set and CreateSession is set to N in the output property set, the output will have the instance property set returned as a child of type CxObj (see the output example below). Here is an example of a return property set:

        < IsConfig='Y' UnresolvedLinks='Y' CreateSession='Y' Links='Y'>
        
        <Links 1-19D0X='10/19/2001' 1-1Z876='SADMIN' 1Z771='SADMIN'> 
        
        </Links>"
        
              <UnresolvedLinks>"
        
                 <UnresolvedLink DispName='Quote Name' Definition='<CfgVariableDef BUS_OBJ 
        = ""Quote"" BUS_COMP = ""Quote"" FIELD_NAME = ""Name"" SEARCH_SPEC = """" 
        SORT_SPEC = """" DEFAULT_VAL = """" EXECUTE = ""N""/>' Description='' DefValue='' 
        Name='Quote Name' BusObj='Quote' Field='Name' ID='1-1Z875' BusComp='Quote'>
        
                 </UnresolvedLink>
        
              </UnresolvedLinks>
        
           </>
        

        Extracting the instance property set from LoadInstance. The instance property set can be extracted by first getting the child property set of type CxObj and then extracting its only child.

        Handling Links. A child property set of type Links is returned if the model has linked items. The Links child property set must then be extracted and passed in to CreateSession's OUTPUT arguments as a child property set. Since version 7.0.4 this changed to the INPUT property set for CreateSession. Configuration rules may have been defined for these linked items, so the configuration session must know the link values. The linked items are represented as property-value pairs with link IDs as properties and link values as property values, as in this example:

        <Links 1-19D0X='10/19/2001' 1-1Z876='SADMIN' 1-1Z771='SADMIN'>
        

        A child property set of type UnresolvedLinks is returned if the model has linked items that the business service could not resolve. The children of this property contain the information necessary to calculate the value of the linked item.

              <UnresolvedLinks>"
        
                 <UnresolvedLink DispName='Quote Name' Definition='<CfgVariableDef BUS_OBJ = 
        ""Quote"" BUS_COMP = ""Quote"" FIELD_NAME = ""Name"" SEARCH_SPEC = """" SORT_SPEC = """" 
        DEFAULT_VAL = """" EXECUTE = ""N""/>' Description='' DefValue='' Name='Quote Name' 
        BusObj='Quote' Field='Name' ID='1-1Z875' BusComp='Quote'>
        
                 </UnresolvedLink>
        
              </UnresolvedLinks>
        

        Only links that have the execute flag set or pull system parameters such as TODAY will be resolved by Siebel Product Configurator when used as headless configurations. The programmer must resolve all other links.

        Note: Make sure the unresolved links are calculated and their IDs and values are added to the Links child property set as properties, with the link ID as the property and the link value as the property value.

          CreateSession Method

          This method initializes a configuration session, which is necessary for products with components that have constraint rules. It is called immediately following LoadInstance where required.

          Input Arguments

          • ObjId. The unique identifier of the complex object header (for example, Quote Id).

          • RootId. The unique identifier of the complex object root (for example, Quote Line Item row id).

          • IntObjName. The name of the integration object specified in Oracle's Web Tools.

          • TriggerEvent. The flag that determines if script events are triggered. Normally, it must be set to Y. Set to N for special uses of the API where script events are not desired. LoadInstance and CreateSession must have the same setting.

          • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

          • (Optional) NewRecord. If set to Y, the instance will be populated with default values. The default is N.

          • (Optional) AutoSync. If set to Y, the instance will be synchronized to the database immediately after loading. The default is N.

          • (Optional) ExternalScript. This parameter must be set to Y when running headless configurations (for example, through Siebel COM Data Server). The default is N.

          Output Arguments

          If NewRecord is set to Y in the input property, the output will have the instance property set returned as a child of type CxObj. This is essentially the same output as the one that is returned from GetInstance.

            SetInstance Method

            This method creates a configuration session with the supplied property set, permitting configuration without directly writing to the database. The structure of the input property set does not need to correspond to a Siebel object, such as a quote that is indicated by the integration object specified.

            When you use SetInstance, the input property set must be wrapped inside a parent property set.

            For example, to use the following instance property set:

            <PropertySet PrimaryRowId="42-56O78" OutputIntObjectName="7.7 Quote Integration 
            Object">
              ......
            
            </PropertySet>
            

            You must wrap it in another property set, as follows:

            <PropertySet>
            
            <PropertySet PrimaryRowId="42-56O78" OutputIntObjectName="7.7 Quote Integration 
            Object">
            
              ......
            </PropertySet>
            
            </PropertySet>
            

            Input Arguments

            Same arguments as LoadInstance but also requires the property set indicating the state to load. This property set must have the SiebelMessage object as the only first level child.

            Output Arguments

            Same arguments as LoadInstance.

              SyncInstance Method

              This method saves the complex object instance where it originated.

              Input Arguments

              • ObjId. The unique identifier of the complex object header.

              • RootId. The unique identifier of the complex object root (for example, Quote Line Item row Id).

              • IntObjName. The name of the integration object specified in Oracle's Web Tools.

              • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

              Output Arguments

              None

                UnloadInstance Method

                This method removes the existing configuration session from memory. It must be called after synchronizing the instance at the end of the configuration session.

                Input Arguments

                • ObjId. The unique identifier of the complex object header.

                • RootId. The unique identifier of the complex object root.

                • IntObjName. The name of the integration object that was used to load the instance.

                Output Arguments

                None.

                  GetAllPorts Method

                  This method retrieves a list of all ports and (possibly) their contents for a product. It gets all ports for a product but not for its child products. It retrieves the basic definition of the product and does not consider any current configuration session state, so every possible port is retrieved.

                  Input Arguments

                  • Product Id. The ID of the product in Internal Product.

                  • (Optional) Version. Version is used only in validate mode.

                  • GetPortDomain. The flag that determines whether or not to also retrieve the domain of each port. Use Y or N to get the domain or not.

                  Output Arguments

                  All ports are returned as children of the output property set of type Port.

                  <GetAllPorts>
                  
                     <Port
                  
                        	Class Id="<value>"
                  
                       	 MinCardinality="<value>"
                  
                        	ClassName="<value>"
                  
                        	MaxCardinality="<value>"
                  
                        	Port Item Id="<value>"
                  
                        	DefCardinality="<value>"
                  
                              Port Display Name="<value>"
                  
                      		  DefaultPortObjId="<value>"
                  
                        	Name="<value>"
                  
                     ></Port>
                  
                     <Port
                  
                        Port Information here
                  
                     ></Port>
                  
                  </GetAllPorts>
                  

                  Port information can be returned through GetProperty(). For example, GetProperty(Class Id).

                    EnumObjects Method

                    This method returns either all immediate objects under an object or all immediate objects under a specified port. This gets the items that are currently in the port, not the items that could be there.

                    Input Arguments

                    • ObjId. The unique identifier of the complex object header (for example, Quote ID).

                    • RootId. The unique identifier of the complex object root (for example, Quote Line Item row id).

                    • IntObjName. The name of the integration object specified in Oracle's Web Tools.

                    • Parent Path. The path to the parent object whose child objects you want to enumerate. The path is the object's Integration ID.

                    • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                    • (Optional) Port Item Id. The ID of a specific port (for example, ORIG_ID of the port in S_PROD_ITEM table). If specified, only the items in this port are enumerated; otherwise, all items in all immediate ports are returned.

                    Output Arguments

                    Output can be in the form of two types of property sets, instance property sets and generic property sets.

                    Instance property sets return information about child items, as follows:

                    <Output>
                    
                       < Name="value" Product Id="value" Path="value" Sequence Number="value" />
                    
                       …
                    
                    </Output>
                    

                    Generic property sets send notifications to the user that there is a violation of the minimum or maximum required quantity for a one or more items within the relationship. A generic property set follows each instance property set, if there is a violation of the minimum or maximum required quantity for this instance.

                      GetAttribute Method

                      This method retrieves the value of an attribute.

                      Input Arguments

                      • ObjId. The unique identifier of the complex object root.

                      • RootId. The unique identifier of the complex object root.

                      • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                      • Path. The path of the item where you are retrieving an attribute.

                      • Name. The attribute name.

                      Output Arguments

                      The value is returned as a property of the output property set, as follows:

                      <Output Value="value">
                      
                      </Output>
                      

                        GetFieldValues Method

                        This method retrieves field values for a product that exists in the complex product.

                        Input Arguments

                        • ObjId. The unique identifier of the complex object root (for example, Quote ID).

                        • RootId. The unique identifier of the complex object root (for example, Quote Line Item row Id).

                        • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                        • Path - the path to the item.

                        Output Arguments

                        The output property set returned will have the field names as properties, as follows:

                        < Field="value" Field="value" ... Field="value"/>
                        

                          GetInstance Method

                          This method gets the loaded instance as a property set. It returns the full structure of products and attributes.

                          Input Arguments

                          • ObjId. The unique identifier of the complex object root.

                          • RootId. The unique identifier of the complex object root.

                          • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                          Output Arguments

                          The entire property set output is the complex object instance.

                            GetParents Method

                            This method retrieves all the parents of an item.

                            Input Arguments

                            • ObjId. The unique identifier of the complex object root.

                            • RootId. The unique identifier of the complex object root.

                            • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                            • Path. The path of the item.

                            Output Arguments

                            The property set returned will have child property sets, each with the following properties:

                            < >
                               < Product Id="value" Name="value" Sequence Number="value" Path="value"/>
                               …
                            </ >
                            

                              GetPossibleDomain Method

                              This method retrieves selectable items from the configuration engine for a port

                              Input Arguments

                              • ObjId. The unique identifier of the complex object root (for example, Quote ID).

                              • RootId. The unique identifier of the complex object root (for example, Quote Line Item row id).

                              • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                              • Parent Path. The item parent path.

                              • Port Item Id. The item port id.

                              Output Arguments

                              The property set returned will have the possible domain item product Ids as properties, each with the value 0, as follows:

                              < ProdId1="0" ProdId2="0" … ProdIdn="0" />
                              

                                GetPossibleValues Method

                                This method retrieves selectable values from the configuration engine for an attribute.

                                Input Arguments

                                • ObjId. The unique identifier of the complex object root (for example, Quote ID).

                                • RootId. The unique identifier of the complex object root (for example, Quote Line Item row id).

                                • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                                • IntObjName. The name of the integration object.

                                • Path. The Integration ID of the port to which this attribute is attached.

                                • XA Id. The ID of the attribute for which the values need to be determined.

                                Output Arguments

                                The property set returned will have the possible values as the property names, as follows:

                                < [PossibleValue1]="Val1" [PossibleValue2]="Val2"/>
                                

                                  GetProductId Method

                                  This method gets the root Product ID of the complex object instance.

                                  Input Arguments

                                  • ObjId. The unique identifier of the complex object header (for example, Quote ID).

                                  • RootId. The unique identifier of the complex object root (for example, Quote Line Item row Id).

                                  • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                                  Output Arguments

                                  The product Id is returned as a property of the output property set, as follows:

                                  < Product Id="value" />
                                  

                                    GetRootPath Method

                                    This method returns the path of the complex object instance root.

                                    Input Arguments

                                    • ObjId. The unique identifier of the complex object header (for example, Quote ID).

                                    • RootId. The unique identifier of the complex object root (for example, Quote Line Item row Id).

                                    • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                                    Output Arguments

                                    The root path is returned as a property of the output property set, as follows:

                                    < Path="value" />
                                    

                                      HasGenerics Method

                                      This method returns generics and children flags for an item. A port has generics if the required cardinality is greater than the current cardinality and no default product is specified.

                                      Input Arguments

                                      • ObjId. The unique identifier of the complex object root (for example, Quote ID).

                                      • RootId. The unique identifier of the complex object root (for example, Quote Line Item row id).

                                      • IntObjName. The name of the integration object.

                                      • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                                      • Port Item Id. The ID for the port item that will have either children or generics.

                                      • Path. The path to the parent item of interest.

                                      Output Arguments

                                      • HasGenerics. Y is present if it does, not present if it does not.

                                      • HasChildren. Y is present if it does, not present if it does not.

                                        GetConditionVal Method

                                        This method allows users to call and retrieve the values of the named expression variables.

                                        Input Arguments

                                        • CondName. The name of the condition variable.

                                        • IntId. The integration id of the product.

                                        Output Arguments

                                        If the condition variable is found and evaluates to true, the property Result is set to Y in the output arguments. If not, the Result is set to N.

                                        For example, define a Product as follows:

                                        Class1

                                        -> Att1

                                        Product: Child1 (associated with Class1)

                                        Attribute: Att1 (which has the default value of one)

                                        Constraints List:

                                        Name: RuleOne

                                        Constraint: The attribute SekAtt1 = one sets the value of the procedural condition variable to true

                                        Product: Root (associated with Class1)

                                        Re1: Child1

                                        You can use the following script:

                                        function Cfg_AttributeChanged (ChangedAttribute)

                                        {

                                        var Service = TheApplication().GetService("Configurator Service");

                                        var Variable ="RuleOne";

                                        var VariableVal = "";

                                        var IntegrationID= AddItem("$.[Root]#1", "R1", "Child1", "1")

                                        var InputArgs = TheApplication().NewPropertySet();

                                        var OutputArgs = TheApplication().NewPropertySet();

                                        InputArgs.SetProperty("CondName", Variable);

                                        InputArgs.SetProperty("IntId", IntegrationID);

                                        Service.InvokeMethod("GetConditionVal", InputArgs, OutputArgs);

                                        Variable = OutputArgs.GetProperty("Result");

                                        if (Variable == "Y")

                                        {

                                        TheApplication().RaiseErrorText("True" );

                                        }

                                        else

                                        {

                                        TheApplication().RaiseErrorText("False" );

                                        }

                                        }

                                          Instance APIs to Interact with Conflicts and Messages

                                          APIs to Interact with Conflicts and Messages include the following methods:

                                          Note: These methods apply only to products with components with constraint rules.

                                            GetDetailedReqExpl Method

                                            This method retrieves conflict messages.

                                            Input Arguments

                                            • ObjId. The unique identifier of the complex object root (for example, Quote ID).

                                            • RootId. The unique identifier of the complex object root (for example, Quote Line Item row Id).

                                            • IntObjName. The name of the integration object.

                                            Output Arguments

                                            Expl#. The explanations for the conflicts. Substitute a number for #, such as Expl0, Expl1, and so on.

                                              GetExplanations Method

                                              This method retrieves configuration explanations for an item.

                                              Input Arguments

                                              • ObjId. The unique identifier of the complex object root (for example, Quote ID).

                                              • RootId. The unique identifier of the complex object root (for example, Quote Line Item row Id).

                                              • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                                              • Path. The path of the item.

                                              Output Arguments

                                              The property set returned will have child property sets, each with the property Value as the explanation, as follows:

                                              <Output>
                                              
                                                 <Expl Value="Explanation"/>
                                              
                                                 <Expl Value="Explanation"/>
                                              
                                                 ...
                                              
                                                 <Expl Value="Explanation"/>
                                              
                                              </Output>
                                              

                                                GetSignals Method

                                                This method retrieves configuration engine signals.

                                                Input Arguments

                                                • ObjId. The unique identifier of the complex object root (for example, Quote ID).

                                                • RootId. The unique identifier of the complex object root (for example, Quote Line Item row Id).

                                                • (Optional) Path. The integration ID where the item gets signals.

                                                • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                                                Output Arguments

                                                The property set returned will have child property sets, as follows:

                                                < >
                                                
                                                   <Signal Expl="signal"/>
                                                
                                                   <Signal Expl="signal"/>
                                                   …
                                                   <Signal Expl="signal"/>
                                                
                                                </ >
                                                

                                                  RemoveFailedRequests Method

                                                  This method removes all failed requests sent to the configuration engine.

                                                  Input Arguments

                                                  • ObjId. The unique identifier of the complex object root (for example, Quote ID).

                                                  • RootId. The unique identifier of the complex object root (for example, Quote Line Item row Id).

                                                  • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                                                  Output Arguments

                                                  None.

                                                    UndoLastRequest Method

                                                    This method removes the last request sent to the configuration engine.

                                                    Input Arguments

                                                    • ObjId. The unique identifier of the complex object root (for example, Quote ID).

                                                    • RootId. The unique identifier of the complex object root (for example, Quote Line Item row Id).

                                                    • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                                                    Output Arguments

                                                    None.

                                                      Instance APIs to Set Product and Attribute Values

                                                        AddItem Method

                                                        This method adds an item to a specified port, creating a new instance of an item. If you want to change the quantity of an existing instance of an item, use SetItemQuantity.

                                                        Input Arguments

                                                        • ObjId. The unique identifier of the complex object header.

                                                        • RootId. The unique identifier of the complex object root.

                                                        • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                                                        • (Optional) AutoResolve. Automatically resolves port cardinality violations. The default is N.

                                                        • Prod Item Id. Product Id. This is S_ISS_SUB_OBJ.SUB_OBJ_ID (in other words CFG_MODEL_ID of referred product).

                                                        • Name. The name of the item.

                                                        • Product Id. The product id in S_PROD_INT table.

                                                        • Port Item Id. Port or domain information. This is:

                                                          • S_ISS_SUB_OBJ.PAR_REL_ID if this field is not null. Port has type Domain of class or dynamic class relationships

                                                          • S_ISS_SUB_OBJ.ORIG_ID if S_ISS_SUB_OBJ.PAR_REL_ID is null. Port has type Product (S_ISS_SUB_OBJ.SUB_OBJ_TYPE_CD = Product)

                                                        • Quantity. The item quantity.

                                                        • List Price. The item list price from Pricing Manager, which can be empty.

                                                        • Current Price. The current price from Pricing Manager, which can be empty.

                                                        • Parent Path. The path is the object's Integration ID of the Parent Line Item where this additem call will be acted on.

                                                        Output Arguments

                                                        None.

                                                          CopyInstance Method

                                                          This method copies an instance.

                                                          Input Arguments

                                                          • ObjId. The unique identifier of the complex object header of the source instance.

                                                          • RootId. The unique identifier of the complex object root of the source instance.

                                                          • DestObjId. The unique identifier of the complex object header of the destination instance.

                                                          • IntObjName. The name of the integration object specified in Oracle's Web Tools.

                                                          Output Arguments

                                                          None.

                                                            RemoveItem Method

                                                            This method removes an item from the instance.

                                                            Input Arguments

                                                            • ObjId. The unique identifier of the complex object header.

                                                            • RootId. The unique identifier of the complex object root.

                                                            • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                                                            • Path. The path of the item.

                                                            Output Arguments

                                                            None.

                                                              ReplaceItem Method

                                                              This method replaces an existing item with the new item on a specified port, removing the existing item from the port and creating a new instance for new item.

                                                              Input Arguments

                                                              • ObjId. The unique identifier of the complex object header.

                                                              • RootId. The unique identifier of the complex object root.

                                                              • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                                                              • Path. Integration Id of the existing product (which is going to be replaced by new product)

                                                              • Name. The name of the new item.

                                                              • Product Id. The new product id in S_PROD_INT table.

                                                              • Prod Item Id. The ID of the new item (for example, ORIG_ID in S_PROD_ITEM table).

                                                              • Port Item Id. The ID of the item's port (for example, ORIG_ID of the port in S_PROD_ITEM table).

                                                              • Quantity. The new item quantity.

                                                              • (Optional) AutoResolve. Automatically resolves port cardinality violations. The default is N.

                                                              • (Optional) List Price. The item list price from Pricing Manager, which can be empty.

                                                              • (Optional) Current Price. The current price from Pricing Manager, which can be empty.

                                                              • (Optional) Parent Path. Integration Id of the parent item the port belongs to.

                                                              • (Optional) Parent Display Name. Display name of the parent product. This parameter and the display parameters that follow would be used in logging error messages in case of error.

                                                              • (Optional) New Child Display Name. Display name of the new child product.

                                                              • (Optional) Port Display Name. Display name of the Relationship of the child product.

                                                              Output Arguments

                                                              None.

                                                                RepriceInstance Method

                                                                This method updates the instance with values from the Pricing Manager service. A call to the Pricing Manager service's CalculatePriceCX method returns a property set that is the input to this method.

                                                                Input Arguments

                                                                • ObjId. The unique identifier of the complex object header.

                                                                • RootId. The unique identifier of the complex object root.

                                                                • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                                                                The input property set has child property sets containing the repricing information. The format of the input property set is as follows:

                                                                < ObjId="value" RootId="value" Version="value" >
                                                                
                                                                   < IntId="integration id" FieldName="value"… FieldName="value" >
                                                                
                                                                   < IntId="integration id" FieldName="value"… FieldName="value" >
                                                                
                                                                    …
                                                                
                                                                < />
                                                                

                                                                In this context, the Integration ID is used to retrieve the instance item.

                                                                Output Arguments

                                                                None.

                                                                  SetAttribute Method

                                                                  This method sets the value of an item's attribute.

                                                                  Input Arguments

                                                                  • ObjId. The unique identifier of the complex object root.

                                                                  • RootId. The unique identifier of the complex object root.

                                                                  • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                                                                  • Path. The path of the item with attribute to set.

                                                                  • Value. The attribute value.

                                                                  • Name. The attribute name.

                                                                  • XA Id. The extended attribute ID. This is the row ID of the attribute in the XA Attribute business component. This parameter is required, and you can use a dummy value instead of the actual row ID.

                                                                  • Property Type Code. The attribute type.

                                                                  Output Arguments

                                                                  None.

                                                                    SetItemQuantity Method

                                                                    This method sets the quantity of an item.

                                                                    Input Arguments

                                                                    • ObjId. The unique identifier of the complex object root.

                                                                    • RootId. The unique identifier of the complex object root.

                                                                    • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version.

                                                                    • Path. The path of the item.

                                                                    • Quantity. The quantity to set.

                                                                    Output Arguments

                                                                    None.

                                                                      SetFieldValue Method

                                                                      This method updates the value of a field in a line item.

                                                                      Input Arguments

                                                                      • Path. The Integration Id of the line item (or of the parent line item in the case of an attribute).

                                                                      • FieldName. The field name. This must not be a field that is used and controlled by Siebel Product Configurator (such as: Quantity, Port Item Id, Integration Id, Attribute Value, and so on).

                                                                      • XA Id. (Optional) The attribute Id. Specify only if you are setting the value in an attribute field.

                                                                      • Value. The value of the field.

                                                                      • ObjId. A unique identifier of the complex object header (for example, quote ID).

                                                                      • RootId. A unique identifier of the complex object root (for example, quote line item row ID).

                                                                      Output Arguments

                                                                      None.

                                                                        Object Broker Methods

                                                                        The following methods call the Cfg Object Broker business service, which functions as a wrapper for the Object Broker:

                                                                          ResetSKC Method

                                                                          This method posts a request to invalidate all cached object definitions. The application does this logically by going through the cached records in the ISS VOD Cache Sync business component and resetting the fields values for all the VOD objects versions that are recorded as been cached. For more information about how this method is invoked, see Clearing the Siebel Product Configurator Cache to Improve Performance.

                                                                          Input Arguments

                                                                          Not applicable.

                                                                          Output Arguments

                                                                          Not applicable.

                                                                            ResetObjInSKC Method

                                                                            This method posts a request to invalidate a specific cached object definition. The application does this logically by querying the ISS VOD Cache Sync business component to find the record based on the Type and VodId input parameters. If a record is found then the field values for that specific record are reset.

                                                                            Input Arguments

                                                                            • Type. The type of the VOD object. Valid values are: ISS_ATTR_DEF, ISS_CLASS_DEF or ISS_PROD_DEF.

                                                                            • VodId. The value of the VOD object Id. This value must match the value found in either the S_VOD.OBJECT_NUM or the S_PROD_INT.CFG_MODEL_ID field.

                                                                            Note: Both input arguments are required.

                                                                            Output Arguments

                                                                            Not applicable.

                                                                              GetProdStruct Method

                                                                              This method returns the full structure of the customizable product.

                                                                              Input Arguments

                                                                              • RootId. The unique identifier of the complex object root. If provided, RootName, Vendor, and Org are ignored. If not provided, RootName, Vendor, and Org are used to uniquely identify the product.

                                                                              • RootName. The root product name. Optionally, you can use Name together with Vendor and Org to uniquely identify a product.

                                                                              • (Optional) Version. Version arguments are used only when testing a customizable product version that is different from the currently released version. Specify 0 to return the work space.

                                                                              • (Optional) Vendor. Use with RootName to uniquely identify the product. By default, this is empty.

                                                                              • (Optional) Org. Use with RootName to uniquely identify the product. By default, this is empty.

                                                                              • Full. Y returns the full product structure. N returns the first level of the product.

                                                                              Output Arguments

                                                                              The output is in Property Set format.

                                                                               <ProdStruct> RootId 
                                                                              
                                                                                  <ProdId> Name ClassId
                                                                              
                                                                                     <Port> Name ClassName ClassId OrigId Type MinCard MaxCard DefltCard LocalType 
                                                                              
                                                                              InternalType 
                                                                              
                                                                                        <Subobject Id/>
                                                                              
                                                                                        ...
                                                                              
                                                                                     </port>
                                                                              
                                                                                     ...
                                                                              
                                                                                     <Attribute> Name
                                                                              
                                                                                        <Domain Value />
                                                                              
                                                                                        ...
                                                                              
                                                                                     </Attribute>
                                                                              
                                                                                     ...
                                                                              
                                                                                  </ProdId>
                                                                              
                                                                                  ...
                                                                              
                                                                               </ProdStruct>
                                                                              

                                                                                DeltaQuote Method

                                                                                This method performs a recursive tree comparison of two property sets to determine the difference between them based on supplied criteria. It returns a copy of the destination product instance, marked up to indicate changes. This preconfigured API is called from an external service only in SIS Order Management, which is the only way to see this API function for the API Discovery.

                                                                                In one example, you start with a computer that has one hard drive and a 900 MHz processor. You upgrade it to add a second hard drive (quantity now = 2) and replace the processor with a 1000 MHz model. The result would be one existing hard drive, one new hard drive (the instance is split), one 900 MHz CPU removed, and one new 1000 MHz CPU.

                                                                                If the output property set is empty and no error code is thrown, the most likely cause is that the instances were not recognized. Check the RootId parameters and the indenting of your source and destination SiebelMessages.

                                                                                Input Arguments

                                                                                • SrcRootId. The root ID for the product in the source of the comparison. This is the "before" property set.

                                                                                • DestRootId. The root ID for the product in the destination of the comparison. This is the "after" property set.

                                                                                • DeltaSrcField. The Path field in the source instance.

                                                                                • DeltaDestField. The Path field in the destination instance.

                                                                                • SrcItemIntComp. The name of the integration component for the items in the source instance (for example, Quote Item).

                                                                                • DestItemIntComp. The name of the integration component for the items in the destination instance (for example, Quote Item).

                                                                                • SrcXAIntComp. The name of the integration component for the XA in the source instance (for example, Quote Item XA).

                                                                                • DestXAIntComp. The name of the integration component for the XA in the destination instance (for example, Quote Item XA.)

                                                                                • ITEM_MAPPING. This is a property set with type= "ITEM_MAPPING." It contains a list of those fields that must be copied when creating a new instance of an item in the destination property set. The property names are the fields in the source instance, and the property values are the names in the destination instance. Here is an example output from the API sniffers:

                                                                                  CHILD PROPERTY SET 3
                                                                                        Type: ITEM_MAPPING Value:
                                                                                        Unit Price = Unit Price
                                                                                        Action Code = Action Code
                                                                                        Root Id = Root Id
                                                                                        Port Item Id = Port Item Id
                                                                                        Integration Id = Integration Id
                                                                                        Discount Amount = Discount Amount
                                                                                        Parent Id = Parent Id
                                                                                        Product Id = Product Id
                                                                                        Prod Item Id = Prod Item Id
                                                                                        Quantity = Quantity
                                                                                  
                                                                                • XA_MAPPING. This is a property set with type= "XA_MAPPING." It contains a list of those fields that must be copied for each of the attributes when creating a new instance of an item in the destination property set. The property names are the fields in the source instance, and the property values are the names in the destination instance. Here is an example output from the API sniffers:

                                                                                  CHILD PROPERTY SET 2
                                                                                        Type: XA_MAPPING Value:
                                                                                        Action Code = Action Code
                                                                                        Value = Value
                                                                                        Read Only = Read Only
                                                                                        Name = Name
                                                                                        Property Type Code = Property Type Code
                                                                                        XA Id = XA Id
                                                                                  
                                                                                • ITEM_COMPARE. This is a property set with type= "ITEM_COMPARE." It defines what constitutes a unique instance of an item in the source and destination instances. For the service, it answers the question "How do I know if these two things are the same?" Here is an example output from the API sniffers:

                                                                                  CHILD PROPERTY SET 1
                                                                                        Type: ITEM_COMPARE Value:
                                                                                        Port Item Id = Port Item Id
                                                                                        Product Id = Product Id
                                                                                  
                                                                                • XA_COMPARE. This is a property set with type= "XA_COMPARE." It defines what constitutes a unique instance of an attribute in the source and destination instances. For the service, it answers the question "How do I know if these two things are the same?" Here is an example output from the API sniffers:

                                                                                  CHILD PROPERTY SET 0
                                                                                        Type: XA_COMPARE Value:
                                                                                        Value = Value
                                                                                        Name = Name
                                                                                        Property Type Code = Property Type Code
                                                                                        XA Id = XA Id
                                                                                  
                                                                                • SrcInst. This is the Source Instance ("before") that will be used in the delta comparison. It is a double-indented SiebelMessage with a type of SrcInst. The first section of the output from the API sniffers is shown here for reference. Note the indenting of the SiebelMessage.

                                                                                  CHILD PROPERTY SET 4
                                                                                        Type: SrcInst Value:
                                                                                        CHILD PROPERTY SET 0
                                                                                           Type: Value:
                                                                                           CHILD PROPERTY SET 0
                                                                                              Type: SiebelMessage Value:
                                                                                              MessageId = 1-12949
                                                                                              IntObjectFormat = Siebel Hierarchical
                                                                                              MessageType = Integration Object
                                                                                              IntObjectName = CX Product Validation
                                                                                              CHILD PROPERTY SET 0
                                                                                                 Type: ListOfCX Product Validation Value:
                                                                                                 CHILD PROPERTY SET 0
                                                                                                    Type: Product Header Value:
                                                                                                    Name = 1-12950
                                                                                                    Price List Id = 1-ZEC
                                                                                                    Id = 1-12951
                                                                                                    CHILD PROPERTY SET 0
                                                                                                      Type: ListOfProduct Item Value:
                                                                                                      CHILD PROPERTY SET 0
                                                                                                         Type: Product Item Value:
                                                                                                         Action Code = Existing
                                                                                                         Port Item Id =
                                                                                                         Integration Id = 1-12744
                                                                                                         Cfg Type = Configurator
                                                                                                         Name = System Chassis
                                                                                                         Product Id = 1-1M9Y
                                                                                                         Prod Item Id = null
                                                                                                         Quantity = 1.0
                                                                                                         Id = 1-12744
                                                                                  
                                                                                • DestInst. This is the Destination Instance ("after") that will be used in the delta comparison. It is a double-indented SiebelMessage with a type of DestInst. The first section of the output from the API sniffers is shown here for reference. Note the indenting of the SiebelMessage.

                                                                                  CHILD PROPERTY SET 5
                                                                                        Type: DestInst Value:
                                                                                        CHILD PROPERTY SET 0
                                                                                           Type:  Value:
                                                                                           CHILD PROPERTY SET 0
                                                                                              Type: SiebelMessage Value:
                                                                                              MessageId = 123
                                                                                              IntObjectFormat = Siebel Hierarchical
                                                                                              MessageType = Integration Object
                                                                                              IntObjectName = CX Product Validation
                                                                                              CHILD PROPERTY SET 0
                                                                                                 Type: ListOfCX Product Validation Value:
                                                                                                 CHILD PROPERTY SET 0
                                                                                                    Type: Product Header Value:
                                                                                                    Name = 1-12950
                                                                                                    Price List Id = 1-ZEC
                                                                                                    Id = 1-12951
                                                                                                    CHILD PROPERTY SET 0
                                                                                                       Type: ListOfProduct Item Value:
                                                                                                       CHILD PROPERTY SET 0
                                                                                                          Type: Product Item Value:
                                                                                                          Has Generics Flag = Y
                                                                                                          Action Code = Existing
                                                                                                          Integration Id = 1-12744
                                                                                                          Port Item Id =
                                                                                                          Sequence Number =
                                                                                                          Name = System Chassis
                                                                                                          Cfg Type = Configurator
                                                                                                          Product Id = 1-1M9Y
                                                                                                          Quantity = 1.0
                                                                                                          Prod Item Id = null
                                                                                                          Id = 1-12744
                                                                                  

                                                                                The destination instance is returned as a SiebelMessage, modified and marked up with status information. The status (new, modified, existing, removed) is indicated in the Action Code field of each item and attribute.

                                                                                  Instance APIs to Select the Siebel Product Configurator User Interface

                                                                                  The following methods allow you to select the Siebel Product Configurator User Interface:

                                                                                  These methods are part of the Cfg Web UI Service Loader business service.

                                                                                    SelectCfgUIService Method

                                                                                    Syntax

                                                                                    SelectCfgUIService (inputArgs as Property Set, outputArgs as Property Set)

                                                                                    Input Arguments

                                                                                    • CxVersion. The version of the product that you are validating or customizing. Empty means latest version.

                                                                                    • ComplexProductId. The product id (in S_PROD_INT) for the product that you are validating or customizing.

                                                                                    Output Arguments

                                                                                    • Cfg UI Option Id. Optional. If empty, Siebel Product Configurator will use the default templates.

                                                                                    • High Interactivity. Required. The value is Y.

                                                                                    Usage

                                                                                    For any method you call on the UI service, you can call SelectCfgUIService to determine which UI Service to load.

                                                                                    You must specify the name of your business service in the User Property of the UI Service (Cfg Web UI Service (JS) and Cfg Web UI Service) as follows:

                                                                                    Loader Service Name = <your business service name>
                                                                                    

                                                                                    You must also modify all the related workflows (such as Validate and Customize) to first call this customized method in your business service.

                                                                                    Example

                                                                                    For example, you can use the LoadInstance method to call SelectCfgUIService as follows:

                                                                                    function LoadInstance (inputArgs, outputArgs)
                                                                                    {
                                                                                    var oUIService;
                                                                                    var oService = TheApplication().GetService("Cfg Web UI Service Loader");
                                                                                    var oOutputs = TheApplication().NewPropertySet();
                                                                                    oService.InvokeMethod("SelectCfgUIService", inputArgs, oOutputs);
                                                                                    var optionId      = oOutputs.GetProperty ("Cfg UI Option Id");
                                                                                    var strSupportJS  = oOutputs.GetProperty ("High Interactivity");
                                                                                    with(inputArgs)
                                                                                    {
                                                                                    SetProperty ("Cfg UI Option Id",    optionId);
                                                                                    SetProperty ("High Interactivity", strSupportJS);
                                                                                    }
                                                                                    [if (strSupportJS == "Yes")]
                                                                                    {
                                                                                    oUIService = TheApplication().GetService ("Cfg Web UI Service (JS)");
                                                                                    }
                                                                                    else
                                                                                    {
                                                                                    oUIService = TheApplication().GetService ("Cfg Web UI Service");
                                                                                    }
                                                                                    oUIService.InvokeMethod("LoadInstance", inputArgs, outputArgs);
                                                                                    }
                                                                                    

                                                                                      SetUIOption Method

                                                                                      SetUIOption method is used to display Siebel Product Configurator interface.

                                                                                      Syntax

                                                                                      SetUIOption (inputArgs as Property Set, outputArgs as Property Set).

                                                                                      Input Arguments

                                                                                      A property set that contains the name or value pairs representing the value of the Product Id and UI Option Name fields.

                                                                                      Usage

                                                                                      Because this method is part of a cached Business Service, you can call this method at any time before Configurator is called.

                                                                                      The values you use as input arguments indicate which UI option to use for each product you specify.

                                                                                      Example

                                                                                      Add a workflow step at the beginning of the Siebel Product Configurator Load Workflow. This step calls a custom business service that determines which UI option to use for the Product that is being customized. After determining which UI option to use, the workflow uses the SetUIOption method to set the appropriate UI option.

                                                                                      The sample custom business service has the following features:

                                                                                      • Business Service Name: SIS OM Workflow Utility

                                                                                      • Business Service Method Name: Force_UI

                                                                                      Business Service Method Arguments

                                                                                      Argument Name Data Type Storage Type Type

                                                                                      Product_Id

                                                                                      String

                                                                                      Property

                                                                                      Input

                                                                                      UI_Name

                                                                                      String

                                                                                      Property

                                                                                      Input

                                                                                      Business Service Server Script:

                                                                                      function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
                                                                                      {
                                                                                      
                                                                                      
                                                                                      
                                                                                      	Outputs.SetProperty("ErrorCode", "");
                                                                                      	Outputs.SetProperty("ErrorText", "");
                                                                                      	Outputs.SetProperty("Error Code", "");
                                                                                      	Outputs.SetProperty("Error Message", "");
                                                                                      
                                                                                      
                                                                                      
                                                                                      	switch(MethodName)
                                                                                      	{
                                                                                      
                                                                                      		case "Force_UI":
                                                                                      
                                                                                      			var strProdId = Inputs.GetProperty("Product_Id");
                                                                                      
                                                                                      			var strUI_Name = Inputs.GetProperty("UI_Name");
                                                                                      
                                                                                      			var oService = TheApplication().GetService("Cfg Web UI Service Loader");
                                                                                      
                                                                                      			var oInputs = TheApplication().NewPropertySet();
                                                                                      
                                                                                      			var oOutputs = TheApplication().NewPropertySet();
                                                                                      
                                                                                      
                                                                                      
                                                                                      	with(oInputs)
                                                                                      	{
                                                                                      	/* The input argument name is passed as a string (the product id)*/
                                                                                      /*****************************************************************/
                                                                                      
                                                                                      	SetProperty(strProdId,strUI_Name);
                                                                                      
                                                                                      	}
                                                                                      
                                                                                      	/* Force Configuration session UI */
                                                                                      
                                                                                      	/*********************************/
                                                                                      
                                                                                      	oService.InvokeMethod("SetUIOption", oInputs, oOutputs);
                                                                                      
                                                                                      	return (CancelOperation);
                                                                                      
                                                                                      	break;
                                                                                      
                                                                                      
                                                                                      
                                                                                      default:
                                                                                      		return (ContinueOperation);
                                                                                      
                                                                                      		break;
                                                                                      
                                                                                      	}
                                                                                      
                                                                                      }
                                                                                      

                                                                                      In the previous code, consider the scenario where product KG1 and KG2 are to be displayed. Assume both products have the following properties.

                                                                                      Argument Name Data Type Storage Type

                                                                                      UI Options

                                                                                      Open UI Option 1, Open UI Option 2, Open UI Option3

                                                                                      Open UI Option 1, Open UI Option 2, Open UI Option3

                                                                                      Product Id

                                                                                      12-12345

                                                                                      12-67890

                                                                                      To set Open UI Option 1 for KG1 and Open UI Option 3 for KG2, replace the code SetProperty(strProdId,strUI_Name) with the following lines:

                                                                                      SetProperty("12-12345", "Open UI Option 1");
                                                                                      
                                                                                      SetProperty("12-67890", "Open UI Option 3");
                                                                                      

                                                                                      In the workflow that launches the Siebel Product Configurator UI (which is Configurator Load for non-ABO or SIS OM Edit for ABO), the customer might add two steps before launching Siebel Product Configurator:

                                                                                      • One to invoke the sample script

                                                                                      • One to invoke the SetUIOption method to preset the UI option

                                                                                      Then Siebel Product Configurator uses this preset option during end-user configuration sessions.

                                                                                        Instance API to Validate Customizable Products

                                                                                        The following method allows you to batch validate customizable products.

                                                                                          BatchValidate Method

                                                                                          There are three options for using this method:

                                                                                          • LoadInstance option where the instance is already loaded in the context service. This is for validating an existing quote, order, agreement, or asset. A workflow step to load the instance into the context service must be done before calling BatchValidate.

                                                                                          • LoadInstance option where the BatchValidate API will handle loading the instance into the context service. This is for validating an existing quote, order, agreement, or asset. The instance does not have to be in the context service already.

                                                                                          • SetInstance option. This option allows the user to pass in the customizable product instance as a property set.

                                                                                          Input Arguments

                                                                                          The following are the input arguments:

                                                                                          • Mode. Quote, Order, Agreement, or Asset.

                                                                                          • IntObjName. The name of the integration object specified in Oracle's Web Tools (for example, 7.7 Quote Integration Object, 7.7 Order Entry Integration Object, 7.7 Asset Integration Object, 7.7 Service Agreement Integration Object, SIS OM Asset, SIS OM Quote, SIS OM Order).

                                                                                          • ProductId. The unique identifier of the product. This ID is required when using Siebel Product Configurator with remote enabled.

                                                                                          • ObjId. The unique identifier of the complex object header (for example, Quote Id, Asset Id, Order Id).

                                                                                          • RootId. The unique identifier of the complex object root (for example, Quote Line Item Id, when Mode = Asset, Obj Id and Root Id point to Asset Id).

                                                                                          • InstanceName. The name of the instance being pushed to the context service. The value of this argument must be:

                                                                                            • The name of the instance in the context service if using Option 1

                                                                                            • Empty if using Option 2

                                                                                            • Optional for Option 3

                                                                                          • SetInstance. (Optional) Specifies whether to use the SetInstance or LoadInstance option. Value can be Y or N. If set to Y, the first child property set of the input argument must be the CP instance being validated in its property set representation form. N by default.

                                                                                          • DetailedExpl. (Optional) Specifies whether to return a detailed explanation if there's a conflict. Value can be Y or N. N by default.

                                                                                          • AutoSync. (Optional) Specifies whether to synchronize changes back to the database. Value can be Y or N. N is the default. The output property set does not synchronize to the database if the BatchValidate Status is Invalid.

                                                                                            Note: The AutoSync option must not be used for asset-based ordering. Instead, use delta processing, like the asset-based ordering workflow. For more information, see the workflow reference in Siebel Order Management Guide.
                                                                                          • DisablePricing. (Optional) Specifies whether to do pricing or not. Value can be Y or N. N by default.

                                                                                          • OutOriginalInstance. (Optional) Specifies whether to return the original instance as a property set. Value can be Y or N. Y by default.

                                                                                          • OutCompletedInstance. (Optional) Specifies whether to return the validated instance as a property set. Value can be Y or N. Y by default.

                                                                                          • OutDelta. (Optional) Specifies whether to return a delta quote representing the difference between the original and validated instance as a property set. Value can be Y or N. Y by default.

                                                                                          • IgnoreNewOptionalAttr (Optional). Specifies whether to ignore Optional Attributes. If the value is Y, then the output status is Valid even if optional attributes are omitted. If the value is not Y, then the status is Incomplete and an error message is displayed if optional attributes are omitted.

                                                                                          • ExternalScript (Optional). Set this parameter to Y when Linked Items must be calculated. The default is N

                                                                                          Output

                                                                                          The output of BatchValidate is a Siebel Message containing:

                                                                                          • Batch Validation Status. This property returns the status of BatchValidate. The return values can be:

                                                                                            • Valid. No violations were found.

                                                                                            • Incomplete. The constraint engine has found and corrected errors, but does not display an error message. The engine returns Invalid only if it can make a clear decision about how to correct the errors, which is the case for:

                                                                                              • All violations of the maximum quantity where the engine detects unnecessary child products and deleting these child products brings the quantity below the maximum.

                                                                                              • All violations of the minimum quantity where there is only one child product (that is, Domain = Product or Domain = Class/Dynamic Class where the domain has one product as a member).

                                                                                              • Invalid. The engine does not have enough information to correct errors. This is true of violations of the minimum quantity where the there is more than one child product that can be used to correct the error.

                                                                                          • Original Instance. A property set representation of the original instance being validated.

                                                                                          • Completed Instance. A property set representation of the validated instance.

                                                                                          • DeltaQuote. A property set representation of the difference between the original instance and the completed instance.

                                                                                          • Generic Info. A property set containing generics and children relationship information for all ports. For example, batch validate the following three children as part of a parent product:

                                                                                            Parent prod
                                                                                            Child prod 1
                                                                                            Child prod 2
                                                                                            Child prod 3
                                                                                            

                                                                                            The generic information in batch validate output is as follows:

                                                                                            <Generic_spcInfo>
                                                                                            <<_6SIA-4HSO8 _6SIA-4HQ0M="01" _6SIA-4HQ0L="01" _6SIA-4HQ0K="01" />
                                                                                            <<_6SIA-4HSR5 />
                                                                                            <<_6SIA-4HSR6 />
                                                                                            <<_6SIA-4HSR7 />
                                                                                            

                                                                                            where:

                                                                                            • 6SIA-4HSO8 is the order line item ROW_ID of the Parent Product.

                                                                                            • 6SIA-4HQ0M, 6SIA-4HQ0L, 6SIA-4HQ0K are the relationship ROW_ID's for the child products.

                                                                                            The code mapped against the relationship ROW_ID's indicates whether the relationship has generics and children.

                                                                                            • When 1st bit is set, relationship has generics

                                                                                            • When 2nd bit is set, relationship has children

                                                                                            for example:

                                                                                            • 01. no generics, has children

                                                                                            • 11. has generics, has children

                                                                                            Use this code to determine minimum cardinality violations.

                                                                                          • MissingRequiredAttr. A property set returning required attribute violations.

                                                                                          • Error Message. A property set containing the error messages, if any, encountered during batch validation.

                                                                                            Note: Eligibility & Compatibility is automatically enforced by BatchValidate based on the EligibilityDisplayMode parameter setting on Object Manager. There is no additional parameter needed to enforce eligibility and compatibility during batch validate.

                                                                                          In addition, if PRESERVE_ENGINE_AND_USER_PICKS environment variable is enabled, the value in the CFG_STATE_CD column will effect the Batch Validate result. The PRESERVE_ENGINE_AND_USER_PICKS environment variable is enabled by default from 8.1 onwards.

                                                                                          For information about the user pick and engine pick setting in CFG_STATE_CD column, see 477087.1 (Doc ID) on My Oracle Support. This document was previously published as Siebel Alert 749.

                                                                                          Reset CFG_STATE_CD for all line items and attributes to user pick or leave empty if you want to preserve the content in the input instance.

                                                                                          Sample Code

                                                                                          The following code is an example of how BatchValidate can be used.

                                                                                          function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
                                                                                          {
                                                                                          
                                                                                          if (MethodName == "BatchValidate_Quote")
                                                                                          {              
                                                                                          var head = "8SIA-81CQ4"; //QuoteId
                                                                                          
                                                                                          var item = "8SIA-81CVG";  // Line Item Id
                                                                                          
                                                                                          var io = "7.7 Quote Integration Object"; // Integration Object
                                                                                          
                                                                                          
                                                                                          
                                                                                          var s = TheApplication().GetService("Remote Complex Object Instance Service");
                                                                                          
                                                                                          var inp = TheApplication().NewPropertySet();
                                                                                          
                                                                                          var out = TheApplication().NewPropertySet();
                                                                                          
                                                                                          
                                                                                          inp.SetProperty("Mode","Quote");
                                                                                          
                                                                                          inp.SetProperty("IntObjName", io);
                                                                                          
                                                                                          inp.SetProperty("ObjId",head);
                                                                                          
                                                                                          inp.SetProperty("RootId",item);
                                                                                          
                                                                                          inp.SetProperty("DetailedExpl","Y");
                                                                                          
                                                                                          s.InvokeMethod("BatchValidate",inp,out);
                                                                                          
                                                                                          
                                                                                          var s2 = TheApplication().GetService("EAI XML Write to File");
                                                                                          
                                                                                          var inp2 = TheApplication().NewPropertySet();
                                                                                          
                                                                                          var out2 = TheApplication().NewPropertySet();
                                                                                          
                                                                                          
                                                                                          inp2.SetProperty("FileName","c:\\ab.xml");
                                                                                          
                                                                                          inp2.AddChild(out);
                                                                                          
                                                                                          s2. InvokeMethod("WritePropSet", inp2, out2);
                                                                                          
                                                                                          
                                                                                          TheApplication().RaiseErrorText("Finished ...");
                                                                                          
                                                                                          }