Conga Product Documentation

Welcome to the new doc site. Some of your old bookmarks will no longer work. Please use the search bar to find your desired topic.

Show Page Sections

Building the Structure

The goal of the "Structure" step is to define the hierarchical structure of your Configurable Bundle. As such, you can use it to define the product selections that have to be done by the potential customer in order to buy a Configurable Product or Service.

The outcome is a fully defined sales dialog, in the form of a simple Configuration Process which can be tested immediately.

Define the Configurable Bundle

When first entering the ”Structure” step and clicking on the Configurable Bundle in the «Explore structure » explorer, you can specify (in the working area) the system properties of the Configurable Bundle.

The following table gives you an overview of the system properties you can define:

FIELDREQUIREDDESCRIPTION
WorkspaceYesThe virtual environment in which a Configurable Bundle has been created. In many cases, only one workspace is to be used. The workspace is fully determined by the workspace chosen in the dashboard.
NameYesThe identifier of the Configurable Bundle. The length of the name is limited to 64 bytes and is preferably readable. It is recommended to adopt a coding rule for names, e.g. have them start with a small letter and use a capital letter for every new word. Example: myConfigurableBundle
DescriptionYesThe description functionally describes the Configurable Bundle, and is limited to 4000 bytes.
TypeNoAllows assigning a user type to the Configurable Bundle, which can be used as a classifier in order to segment exports, to specialize the user interface at run-time, etc. For more information about user types, please refer to Define Object Classifications.

MANAGE THE HIERARCHICAL STRUCTURE

Once the properties of your Configurable Bundle have been defined, you can build its structure (i.e. organize the sales dialog) by:

  1. Creating selection groups, each one representing a set of selections
  2. Creating selections, which represent a choice of products
  3. Define domains, meaning the list of possible products that can be selected in a given selection
  4. Reuse previously created Selection Groups or Selections and embed them in the structure

HOW TO ADD A SELECTION GROUP

A Selection Group is a logical group of Selections that address the same type of products. Multiple Selection Groups can be added to a Configurable Bundle. In order to add a Selection Group to a Configurable Bundle, two procedures are possible.

The following procedure enables you to create a new Selection Group in the Bundle structure:

How to:

  • [In the Explore Structure explorer]
    • Click on the icon of the Configurable Bundle in which you would like to create a Selection Group.
  • [In the menu toolbar]
    • Click on New Selection Group.
  • [Via the “popup window”]
    1. Choose Create new.
    2. Enter a name and a description for the Selection Group you would like to create.

      Click Add or Add & Open in order to create the Selection Group --> The Selection Group is created and added to the Configurable Bundle.

    3. (Optionally) Complete the system properties of the newly created Selection Group.
  • [In the menu toolbar]
    • Click on Save.

If you want to reuse an existing Selection Group and embed it in the current Bundle structure:

How to:

  • [In the Explore Structure explorer]
    • Click on the icon of the Configurable Bundle in which you would like to add a Selection Group.
  • [In the menu toolbar]
    • Click on New Selection Group.
  • [Via the “popup window”]
    1. Choose Reuse existing.
    2. Choose a workspace.
    3. (Optionally) Choose a user type.
    4. Enter part of the Selection Group name or description and choose it in the proposed list. Click on Add or Add & Open in order to add the Selection Group --> The Selection Group is added to the Configurable Bundle.
  • [In the menu toolbar]
    • Click on Save.

The following procedure enables you to copy-paste a Selection Group in the Bundle structure:

How to:

  • [In the explorer]
    1. In Structure, click on the icon of the Selection Group you would like to copy.
    2. OR, in Filter Objects, look for the Selection Group you would like to copy and click on its icon.
  • [In the menu toolbar]
    • Click on Copy.
  • [In the explorer]
    • In Structure, click on the icon of the Configurable Bundle in which you want to position the Selection Group.
  • [In the menu toolbar]
    • Click on Paste after chosing inside or below (depending on your needs).
  • [In the popup]
    1. Enter a name and a description.
    2. Click on OK.
  • [In the working section]
    • (Optionally) Complete the system properties of the newly created Selection Group.
  • [In the menu toolbar]
    • Click on Save.

      Tip:

  • When duplicating a Selection Group (using copy-paste), the following objects are duplicated:
    • The Selection Group itself.
    • The rich media objects attached to it.
  • The following objects are reused:
    • Selections attached to the original Selection Group.
    • Product Rules attached to the original Selection Group.

SPECIFY THE SELECTION GROUP ATTRIBUTES

Whenever you add a Selection Group to the Bundle structure, you can access and update its details in the working area:

FIELDREQUIREDDESCRIPTION
WorkspaceYesThe virtual environment in which a Selection Group has been created. In many cases, only one workspace is used.
NameYesThe identifier of the Selection Group. The length of the name is limited to 64 bytes and is preferably readable. It is recommended to adopt a coding rule for names, e.g. have them start with a small letter and use a capital letter for every new word. Example: mySelectionGroup
DescriptionYesThe description functionally describes the Selection Group, and is limited to 4000 bytes.
TypeNoAllows assigning a user type to the Selection Group, which can be used as a classifier in order to segment exports, to specialize the user interface at run-time, etc. For more information about user types, please refer to Define Object Classifications.

HOW TO ADD A SELECTION

A Selection is an entity that asks the end user to select one or several products. In the “Structure” step, you can define the products included in the Selection as well as defining some rules on the way products can be selected.

How to:

  • [In the Explore Structure explorer]
    • Click on the icon of the Selection Group in which you would like to create a Selection.
  • [In the menu toolbar]
    • Click on New Selection
  • [In the popup]
    1. Enter a name, a description, a type, a layout, precise if you want to use a quantity selector, a minimum number of products to be selected, a maximum number of products to be selected, a minimum quantity per selected product, a maximum quantity per selected product, a minimum total quantity and a maximum total quantity.
    2. Click on Add or Add & Open in order to add the Selection to the Selection Group --> The Selection is created and added to the structure.
    3. (Optionally) Complete the system properties of the newly created Selection.
  • [In the menu toolbar]
    • Click on Save.

If you want to reuse an existing Selection and embed it in the current Bundle structure:

How to:

  • [In the Explore Structure explorer]
    • Click on the icon of the Selection Group in which you would like to add a Selection.
  • [In the menu toolbar]
    • Click on New Selection.
  • [Via the “popup window”]
    1. Choose Reuse existing.
    2. Choose a workspace.
    3. (Optionally) Choose a user type.
    4. Enter part of the Selection name or description and choose it in the proposed list.
    5. Click on Add or Add & Open in order to add the Selection --> The Selection is added to the Selection Group.
  • [In the menu toolbar]
    • Click on Save.

The following procedure enables you to copy-paste a Selection in the Bundle structure:

How to:

  • [In the explorer]
    • In Structure, click on the icon of the Selection you would like to duplicate.
  • [In the menu toolbar]
    • Click on Copy.
  • [In the explorer]
    • In Structure, click the icon of the Selection Group in which you want to position the new Selection.
  • [In the menu toolbar]
    • Click on Paste after choosing inside.
  • [In the popup]
    1. Enter a name and a description.
    2. Click on OK.
  • [In the working section]
    • (Optionally) Complete the system properties of the newly created Selection.
  • [In the menu toolbar]
    • Click on Save.
      Tip: When duplicating a Selection (using copy-paste), the following objects are duplicated: - The Selection itself. - The rich media object attached to it.

      The following objects are reused: - Products attached to the Selection. - Product Rules attached to the Selection.

SPECIFY THE SELECTION ATTRIBUTES

Whenever you add a Selection to the Bundle structure, you can access and update its characteristics in the working area. In this step, you will be able to define and/or update:

  • The System Properties of the Selection, that define the basic characteristics of the Selection and the rules that are used at the Selection level.
  • The List of Products attached to the Selection, with specific rules at the product level.

    Defining System Properties

The following table explains the system properties of the Selection:

FIELDREQUIREDDESCRIPTION
WorkspaceYesThe virtual environment in which a Selection has been created. In many cases, only one workspace is used.
NameYesThe identifier of the Selection. The length of the name is limited to 64 bytes and is preferably readable. It is recommended to adopt a coding rule for names, e.g. have them start with a small letter and use a capital letter for every new word. Example: mySelection
DescriptionYesThe description functionally describes the Selection, and is limited to 4000 bytes.
TypeNoAllows assigning a user type to the Selection, that can be used as a classifier in order to segment exports, to specialize the user interface at run-time, etc. For more information about user types, please refer to Define Object Classifications.
LayoutYesSpecifies the presentation of the Selections at run-time. The presentation of a Selection is done using “value selectors”. There are 3 layouts available by default (you cannot define additional custom layouts for Selections):
..- BundleComboBoxValueSelector: the list of products inside the Selection is shown in a drop-down menu. Only available for Selections where you can select only one product.
..- BundleListValueSelector: the list of products inside the Selection is shown as a radio button selector for the case where you can select only one product, or is shown as check box selectors if you can select more than one product.
FIELDREQUIREDDESCRIPTION
..- BundleRollingValueSelector: the list of products inside the Selection is shown in a rolling selector. Only available for Selections where you can select only one product. Quantity Selector | No | Indicates if you can precise the quantity of product you want for each product selected.
Min Products SelectedNoMinimum number of products that you need to select in order to complete the Selection.
Max Products SelectedNoMaximum number of products that you need to select in order to complete the Selection.
Min Quantity Per ProductNoMinimum quantity for each selected product that you need to precise in order to complete the Selection.
Max Quantity Per ProductNoMaximum quantity for each selected product that you need to precise in order to complete the Selection.
Min Quantity TotalNoMinimum total quantity that tyou need to precise in order to complete the Selection (sum of quantities for each selected product).
Max Quantity TotalNoMaximum total quantity that you need to precise in order to complete the Selection (sum of quantities for each selected product).

Defining the List of Products

You define in this section the list of products included in the Selection (i.e. its Domain).

If no domain has been specified, the Selection shows no product and therefore causes an error. If you want to create a Standard Item and add it to the Selection:

How to:

  • [In the Explore Structure explorer]
    • Click on the icon of the Selection in which you would like to create and add a Product.
  • [In the menu toolbar]
    • Click on New Standard Item.
  • [In the popup]
    1. Enter a name and a description.
    2. Click on Add in order to add the Standard Item to the Selection --> The Standard Item is created and added to the structure.
    3. Click on Add & Open in order to add the Standard Item to the Selection --> The Standard Item is created, added to the structure, and the product 360 flyer is opened on the product.
    4. (Optionally) Complete the properties of the newly created Product in the Selection.
  • [In the menu toolbar]
    • Click on Save.

If you want to reuse an existing Standard Item and add it to the list of products of the Selection:

1st solution

How to:

  • [In the Explore Structure explorer]
    • Click on the icon of the Selection inside which you want to add a Standard Item.
  • [In the menu toolbar]
    • Click on New Standard Item
  • [Via the “popup window”]
    1. Choose Reuse existing.
    2. Choose a workspace.
    3. (Optionally) Choose a user type.
    4. Enter part of the Standard Item name or description and choose it in the proposed list.
    5. Click on Add in order to add the Standard Item to the Selection --> The Standard Item is created and added to the structure.
    6. Click on Add & Open in order to add the Standard Item to the Selection --> The Standard Item is created, added to the structure, and the product 360 flyer is opened on the product.
  • [In the menu toolbar]
    • Click on Save.

      2nd solution

      How to:

  • [In the Explore Structure explorer]
    • Click the icon of the Selection in which you would like to add a Standard Item in order to open it.
  • [In the Explorer]
    • Select the Filter Objects explorer.
  • [In the Filter Objects explorer]
    1. Choose a workspace.
    2. Select Standard Item in the Type menu.
    3. (Optionally) Choose a user type.
    4. Enter part of the Standard Item name or description.
    5. Click on Search.
    6. In the result list, drag and drop the expected Standard Item in the List of Products grid
  • [In the menu toolbar]
    • Click on Save.

The following table specifies the attributes that can be defined at the product level in a Selection:

FIELDREQUIREDDESCRIPTION
Visible as SBLNoIndicates if this product is visible in the sales breakdown structure when selected. This visibility is set manually (no BRC available to drive the visibility). When selecting a product flagged as not visible in a selection, the corresponding SBL is created but invisible. The corresponding product and its characteristics are taken into account by CB features (e.g. in sums, aggregation on its weight, etc.). A product flagged as not visible can still be selected as part of the optimization process. When adding the CB to the Quote, the lines flagged as invisible are not created. From the UI standpoint, the selected product is still visible in the summaryBundleBoxBox but not in the summaryBox, nor in the Quote.
RecommendedNoIndicates if this product is a recommended product. Recommended products are labeled as such at runtime. Optimization is possible on Recommended products. This way of labeling a product as recommended is static. A specific type of rule also allows you to get recommended products dynamically.
Min QuantityNoDefines the minimum quantity for this product when it is selected.
Max QuantityNoDefines the maximum quantity for this product when it is selected.
ExplanationNoTranslatable text attached to this product in this Selection. It is displayed at runtime.

HOW TO ORGANIZE YOUR CONFIGURABLE BUNDLE

If you want to organize differently the structure of the Configurable Bundle, you can use the functions in the menu toolbar that allows moving up, moving down, or deleting objects.

Warning: Whenever deleting an element in the explorer, two situations can occur:

If the object is not used by any other project (or elsewhere in the same project), the Designer

identifies that situation and proposes one of the following actions::

Delete: in this case, the object is removed from the structure and deleted permanently.

Keep: in this case, the object is removed from the structure, but is kept in the Designer repository. You are able to retrieve it (to reuse or delete it) by searching for it using the Filter Objects explorer.

If the object is reused in another Configurable Bundle (or elsewhere in the same Bundle), the link between the object and the Bundle is simply removed. The object itself is not removed whatsoever. It just ceases to exist in the place you have removed it from.

Defining Product Rules

Once the Structure step has been completed, you have set up a fully functional Configurable Bundle. The Product Rules step allows you to add relationships between products to ensure the consistency of the Bundle.

Product Rules

The logic that you can apply on the Configurable Bundle is done by using Product Rules. Each Product Rule must be attached at a given level in the Configurable Bundle structure. They can be attached either at the Configurable Bundle level, or on a Selection Group, or on a Selection. The object on which the Product Rule is attached is called the Owner of the Product Rule. The Owner is used to determine the scope of application of a Product Rule. Only products belonging to the owner, or owner’s children can be affected by the Product Rule.

Product rules can be of distinct types:

  • Association
  • Incompatibility
  • Implication
  • Recommendation
  • Validation
  • Initialization

Each rule is described in a dedicated section.

How to manage Product Rules

If you want to Create a Product Rule:

How to:

  • [In the Explore Structure explorer]
    • Click on the icon of the CB, SG or SE that should be the owner of the Product Rule.
  • [In the menu toolbar]
    • Click on New Rule.
  • [In the popup]
    1. The owner is automatically selected based on your position in the explorer.
    2. Select a Rule. Only Rules available at the selected level are available.
    3. Add a list of products in the Between/From section (if applicable).
    4. Add a list of products in the To/Recommended section (if applicable).
    5. Optionally add an Explanation.
    6. Click on Add in order to add the Product Rule.
    7. The Product Rule is created and added at the right level of the structure.
  • [In the menu toolbar]
    • Click on Save.

      Information:

      Initialization rules have a very specific behavior and cannot be created as described above. Please see the dedicated chapter for more details.

Association

This rule affects one group of products. When one of the products from the group is selected, then all the other products specified in the rule must be selected as well.

The following table specifies the attributes that can be defined on the Association Rule:

FIELD REQUIRED DESCRIPTION
Owner Yes Scope of application of the rule. Only products included within the owner sub-tree are affected by the product rule. For Association rules, it could be at the CB, SG or SE level.
Rule Yes Type of rule: Association.
Between Yes List of products that are part of the association. It must contain at least two products.
Explanation No Translatable text that is used at runtime to explain the rule when it is applied. Can be used to help you understand why some choices are mandatory or forbidden.

Incompatibility

This rule affects one group of products. When one of the products from the group is selected, then all the other products specified in the rule cannot be selected anymore.

The following table specifies the attributes that can be defined on the Incompatibility Rule:

FIELD REQUIRED DESCRIPTION
Owner Yes Scope of application of the rule. Only products included within the owner sub-tree are affected by the product rule. For Incompatibility rules, it could be at the CB, SG or SE level.
Rule Yes Type of rule: Incompatibility.
Between Yes List of products that are part of the incompatibility rule. It must contain at least two products. Selecting one of them at runtime makes it impossible to select any of the others at runtime.
Explanation No Translatable text that is used at runtime to explain the rule when it is applied. Can be used to help you understand why some choices are mandatory or forbidden.

Implication

The rule affects two groups of products: One “From” group, and one “To” group. When all products from the “From” group are selected, then all the products from the “To” group must be selected as well. This rule is not bidirectional, meaning there is no impact by selecting products from the “To” group on the products of the "From" group.

The following table specifies the attributes that can be defined on the Implication Rule:

FIELD REQUIRED DESCRIPTION
Owner Yes Scope of application of the rule. Only products included within the owner sub-tree are affected by the product rule. For Implication rules, it could be at the CB, SG or SE level.
Rule Yes Type of rule: Implication.
From Yes List of products that trigger the implication rule. This represents the “From” group mentioned above.
To Yes List of products implied by the rule. This represents the “To” group mentioned above.
Explanation No Translatable text that is used at runtime to explain the rule when it is applied. Can be used to help you understand why some choices are mandatory or forbidden.

Recommendation

In addition to static recommendations that can be manually setup in the Designer, this rule allows dynamically recommending products. Recommended products are then available both in the dialog and in the optimization feature.

The rule affects two groups of products: One “From” group, and one “Recommended” group. When one products from the “From” group is selected, then all the products from the “Recommended” group are dynamically labelled as "Recommended". This rule is not bidirectional, meaning there is no impact by selecting products from the “Recommended” group on the products of the "From" group.

Optimize feature specifics

The Optimization feature can work:

  • On static recommendations only, at any moment of the configuration process.
  • On dynamic recommendations only. In that case, the optimization on recommended products is available as soon as all the recommended products for all mandatory selections are known.
  • On a mix of static and dynamic recommendations. In that case, the optimization on recommended products is available as soon as all the recommended products for all mandatory selections are known.

    Once dynamic recommendations are populated, four use cases can occur for a given selection:

    1. Either the selection contains dynamic recommendations only and these are the ones to be considered.
    2. Or, the selection has no dynamic recommendations but has static ones. In that case, the static ones must be considered.
    3. Or the selection has both dynamic and static recommendations. Then both are valid and can be considered.
    4. The case where no static nor dynamic recommendation is made for a given selection is possible. It requires this selection to be optional in order for the optimization on recommended products to be available.

The following table specifies the attributes that can be defined on the Recommendation Rule:

FIELDREQUIREDDESCRIPTION
OwnerYesScope of application of the rule. Only products included within the owner sub-tree are affected by the product rule. For Recommendation rules, it could be at the CB level only.
RuleYesType of rule: Recommendation.
FromYesReference to the products that must be selected individually to dynamically set the recommended options. This field can contain a list of products which individual selection triggers the same recommendation rule and generates the same list of recommendations. If several list of recommendations are possible, then several rules must be defined.
RecommendedYesList of dynamically recommended products based on the one that can be selected in the "From" Group. This represents the “Recommended” group mentioned above.
ExplanationNoTranslatable text that is used at runtime to explain the rule when it is applied. Can be used to help you understand why some choices are mandatory or forbidden.

Validation

The validation rule aims at checking if a given condition is met when selecting, deselecting or modifying the quantity of a given product. It assesses the impact of this selection / deselection / modification (quantity) and optionally raises a message giving you visibility on potential actions to take on selections.

Two different types of business explanations can be raised:

  • Informative: the message gives you relevant information while navigating through the configuration process. E. g. "You are configuring a toaster T1000 with a titanium grill"
  • Blocking: the message warns you about an anomaly in the configuration process requiring you to take action (e.g. modify selections) to fix the raised issue. E. g. "You must select as many computers (3) as screens (2). Please review your selections"

You can define several validation rules, even with an overlap in the list of products involved.

The rule affects two groups of products: One “From” group, and one “To” group. The two groups have the same role: listing products triggering the execution of the rule and that can be checked by this rule. Two groups are available in order to ease the modeling of the rule when a comparison between heterogeneous types of products must be done for instance. When any products from the “From” or "To" groups is selected / deselected / modified (quantity), then the rule is executed and, optionally, a message is raised if conditions are met.

The message raised can be built directly in the rule definition, or it can be set outside of the rule and dynamically given as input.

The following table specifies the attributes that can be defined on the Validation Rule:

FIELDREQUIREDDESCRIPTION
OwnerYesScope of application of the rule. Only products included within the owner sub-tree are affected by the product rule. For Validation rules, it could be at the CB, SG or SE level.
FIELDREQUIREDDESCRIPTION
RuleYesType of rule: Validation.
FromYesList of products in the scope of the owner that must be selected / deselected / modified (quantity) to dynamically trigger the current Validation rule.
ToNoThis represents a list of products different from the "From" list but with the same behavior, meaning that they must be selected / deselected / modified (quantity) to dynamically trigger the current Validation rule. The goal of having two lists is to simplify the modeling of the Validation rule logic when a comparison between heterogeneous types of products must be done.
Validation MessageNoTranslatable message that is dynamically given as input of the validation macro BRC. This allows reusing a validation macro BRC for various validation rules when the only difference between them is their inputs. Once defined, the validation message can be translated in the Translate tab of the Designer.
Validation RuleYesClickable reference to the Validation BRC Macro to run when the Validation rule execution is triggered. Only one Validation Macro per Validation rule. See below for more details.

VALIDATION MACRO BRC

The Validation rule logic is driven by a Macro BRC with a specific modeling and behavior.

How to define a Validation Macro

  • [In the Product Rules Main Frame]
    • Click on the cell in the Validation Rule column.
  • [In the popup]
    1. Set a Name for the Macro.
    2. Set a Description for the Macro.
    3. The type of BRC is restricted to Macro only.
    4. Click on Save.
  • [In the Product Rules Main Frame]
    1. Click on the cell in the Validation Rule column.
    2. Click on Open BRC and OK.
    3. You are redirected to the BRC Dictionary
  • [In Parameters > System Properties]
    1. Notice that the box Validation Macro is checked and greyed.
    2. Notice that no alias can be defined for this type of macro. Aliases for the products of the "From" and "To" groups, and for the optional message, are automatically computed by the system.
    3. All aliases are associated with Must Exist and Must Be Answered flags set to false.
  • [In Parameters > Business Logic]
    1. That's where you can build the logic of the Validation Macro (see below)
    2. Click on Save.

Whenever the Validation rule is triggered, the Validation Macro should:

  1. Browse the input list(s) of aliases for the products of the "From" - and optionally "To" - group and their quantities. It should also browse the alias for the optional validation message.
  2. Depending on the rule:
    • Check for specific but acceptable behaviors and raise an informative message.
    • OR Check for specific and non acceptable behaviors and raise a blocking message.
  3. Raise maximum one message.
  4. Give the ability to redirect you to a given selection.

To build that logic, specific elements have been added to the Macro Language.

The input aliases deduced from the list(s) in the associated Validation rule can be accessed using the following elements:

  • Products of the "From" list: fromProducts.
  • Quantities of the products of the "From" list: fromProductQuantities.
  • Products of the "From" list: toProducts.
  • Quantities of the products of the "From" list: toProductQuantities.

You can also access the product descriptions to use it in the raised message by using the following syntax: ** fromProducts[i]**, where i is the index of a given product in the list.

Two new methods are available to raise either Informative or Blocking messages:

  • Informative messages: raiseBlockingBusinessExplanation.
  • Blocking messages: raiseInformativeBusinessExplanation.

Those methods take the following parameters as input:

  • A message string.
  • A label string to name the rule.
  • A redirection CPE pointing at a given Selection.

Redirection can be done to a Selection Group or a Selection. For that, you can either:

  • hard-code the reference of the Selection Group / Selection in the Validation Macro code directly.
  • or dynamically reference the Selection Group / Selection of one of the products given as input of the Validation Macro.

For the latter, you can use the following expression:

  • confML.getSelection("to",2) to get the Selection CPE corresponding to the product in the To table at index 2.
  • confML.getSelectionGroup("from",1) to get the Selection Group CPE corresponding to the product in the From table at index 1.

Example of a macro raising an informative message when a given item is selected with a quantity of 1:

DEFINE brcValidationInformative()

LET msg ""

LET lbl "myRule"

LET redirection "CPE.wksA/SE/se1"

LET i 1

WHILE IsDefined(fromProducts[i])

IF (fromProducts[i] = "wksA/SI/siA")

IF IsDefined(fromProductQuantities[i])

IF (fromProductQuantities[i] = 1)

LET msg msg + "You are currently configuring a great product."

END_IF

END_IF

END_IF

LET i i+1 END_WHILE

confML.raiseInformativeBusinessExplanation(msg, lbl, redirection)

END_DEFINE

Example of a macro raising a blocking message if two specific items do not have the same quantity:

DEFINE brcValidationCompare()

LET msg ""

LET lbl "myRule"

LET redirection "wksA/SE/se1"

LET i 1

LET qtyFrom 0

LET qtyTo 0

WHILE IsDefined(fromProducts[i])

IF(fromProducts[i] = "wksA/SI/siA")

IF IsDefined(fromProductQuantities[i])

LET qtyFrom fromProductQuantities[i]

END_IF

END_IF

LET i i+1 END_WHILE

LET j 1

WHILE IsDefined(toProducts[j])

IF(toProducts[j] = "wksA/SI/siB")

IF IsDefined(toProductQuantities[j])

LET qtyTo toProductQuantities[j]

END_IF

END_IF

LET j j+1 END_WHILE

IF(qtyFrom != qtyTo)

LET msg "You have the same number of A and B - " + STR qtyFrom + " - Which is good!"

confML.raiseInformativeBusinessExplanation(msg, lbl, redirection) ELSE

LET msg "You don't have the same number of A - " + STR qtyFrom + " - and B - " + STR qtyTo + " - Which is bad!"

confML.raiseBlockingBusinessExplanation(msg, lbl, redirection) END_IF

END_DEFINE

Example of a macro raising an informative message given as input as a validation message:

DEFINE brcValidationRaiseValidationMessage()

LET lbl "myRule"

LET redirection "CPE.wksA/SE/se1"

IF IsDefined(explanation)

confML.raiseInformativeBusinessExplanation(explanation, lbl, redirection) END_IF

END_DEFINE

Validation Macro Specifics:

The Validation macro does not authorize to use all the capabilities of the Macro Language. For instance, GetObjectByCPE is not available.

Non authorized methods are checked at runtime. If some are found, the configuration engine does not execute the rule and logs an error message.

Please see governor limits to learn more about those limitations.

If a given product is declared in two different selections, only one entry is set as input in the list of products for the Validation rule, and its quantities is sum.

Initialization

OVERVIEW

Initialization rules have a very specific behavior and are not exactly defined like the other rules presented above. Their goal is to contextualize the set of entities part of a Configurable Bundle dialog (Selection Groups and their Selections) at opening, based on tags statically associated with SG entities during the modeling.

Let's take a business example. Let's imagine a company building machines sold to end customers by two different resellers. Each reseller has the capability to add different exclusive sets of options for a given machine. In terms of modeling, you would design a single Configurable Bundle with all possible options accessible to all resellers. You would then define a tag for each reseller and associate each tag only with the options (at a Selection Group level) the reseller can propose to customers. At runtime, whenever a given Sales Rep for a given reseller would start configuring a Bundle, the tag of the corresponding reseller would be given as input, thus filtering the dialog to the Selection Groups tagged accordingly.

To detail a bit more that example, let's consider the following Configurable Bundle structure with tags corresponding to reseller A and reseller B:

CB

  • SG1 (tags A, B)
    • SE1.1
    • SE1.2
  • SG2 (tag B)
    • SE2.1
    • SE2.2
    • SE2.3

If reseller A runs the CB process, the tag A is given as input at opening, thus filtering the dialog as follows:

CB

  • SG1
    • SE1.1
    • SE1.2

If reseller B runs the CB process, the tag B is given as input at opening, thus filtering the dialog as follows: CB

  • SG1
    • SE1.1
    • SE1.2
  • SG2
    • SE2.1
    • SE2.2
    • SE2.3

      Important Information:

      • The purpose of the tags in the initialization rule is to reduce maintenance by allowing addressing several scenarios in a single Configurable Bundle process. However, the tags are not a way to manage the access to a Configurable Bundle based on user profiles.
      • The definition of tags to drive the configuration of Bundles must be thought at the quote level. It means that all Bundles added to a given quote must use the same list of tags as input. If not the case, you may face issues when refreshing a quote containing Bundles initialized with different tag lists.

HOW-TO DEFINE TAGS

Tags are objects that can be created and managed in the Designer.

How to:

  • [In the Designer home page]
    • Select your Workspace and click on Edit this workspace.
  • [In the Parameter tab]
    1. Scroll down to the Define Tags section.
    2. Click on Add Tag.
    3. Select the Tag class.
    4. Give the tag a Name and Description and click on Create.

TAGGING SELECTION GROUPS

In Configurable Bundles, tags can be associated with Selection Groups only. When a SG is tagged, then its sub-tree (SEs part of it and their products) inherits from its tags. If a SE is part of different SGs, then it inherits from all tags of all the SGs it is part of (knowing that only one of those SG may be displayed at a given time).

The tagging action - meaning associating tags to a SG - is static.

How to:

  • [In the Bundle section of the Designer]
    • Click on your CB and navigate to the Structure tab.
  • [In the Structure tab]
    1. Select the SG to tag in the explorer.
    2. In the System Properties section of the SG, click on Add Tags to the Tag List.

    3. In the Add Tags window, the tags in the left part are the ones available in the workspace. Move the tags in the left part you want to associate to the selected SG to the right part. If you move a tag from right to left, then it removes the association with the selected SG for this tag.

    4. Click on OK.

TAGGING PRODUCT RULES

Similarly to the SG tagging explained above, you can tag all types of product rules (Validation, Recommendation, Association, Incompatibility, Implication) to execute only those matching the tags given as input of the CB when opening it.

How to:

  • [In the Product Rules tab]
    1. Identify the rule to tag and click in the cell of the Tags column for this rule.

    2. In the Add Tags window, the tags in the left part are the ones available in the workspace. Move the tags in the left part you want to associate to the selected rule to the right part. If you move a tag from right to left, then it removes the association with the selected rule for this tag.

    3. Click on OK.

INITIALIZATION RULE EXECUTION

The initialization rule is executed only once per Configuration session, meaning at the opening of the CB and prior to any other rule defined in the Designer (Recommendation, Validation, Association,

Implication, etc.).

The initialization rule is based on a list of tags given as input. This list of tags is given as a context CPE. This CPE references a session variable (aka. CPE.Settings.Session.InitializationTags). It can thus be filled in several ways, including via the mapping mechanism from a CRM for instance.

As explained above, the initialization rule does not require any modeling in the Designer, except for the tagging. It also implies that the session variable has to be filled prior to the opening of a given CB.

When opening a CB process, the Configurator checks the tag list in the session variable described above:

  • If the tag list is empty, then all non-tagged entities of the CB are displayed as part of the dialog.
  • If the tag list contains one or several tags, then the corresponding tagged SGs (and sub-trees) and / or tagged rules are used in the CB process.
  • The elements (SG or Rule) that are not tagged are always displayed.

    Warning:

    All CB have their initialization rule based on the same session variable. If the list of tags has to be different from one CB to the other, then the session variable must be updated dynamically by CPQ.

Defining the Sales Breakdown

Once a Configurable Bundle structure has been set up, and once product rules have been added, you need to define a Sales Breakdown to the Configurable Bundle.

The Sales Breakdown purpose is to produce some tangible outputs and to determine which criteria can be used for the optimization feature.

information: The optimization feature can be used at runtime to ask the system to complete the Configurable Bundle automatically. An optimization can be done either on prices or on Business Property values.

In the Sales Breakdown step, you can define how you want to influence the system when it completes/optimizes the Configurable Bundle. For each Price and Business Property that is used as an output of the Configurable Bundle, you can define if you expect the system to try to make this value as small or as big as possible.

When asked for an optimization, the system then selects missing products by making the result the smallest or the biggest for the selected criteria.

Adding a sales method

The Sales Method step focuses on the setup of a Sales Method. In order to setup a Sales Method, make sure that at least one Sales Method has been defined in the workspace parameters.

Definition: A Sales Method is a generic representation of a quote, that is made of a set of sales breakdown lines and that indicates the information to be applied (meaning: be generated) on each Sales Breakdown line.

Reference: In order to create new parameters, please refer to Define Methods.

For each Sales Method added in the workspace, an additional sub-tab is created.

Creating the sales breakdown structure

Once the sales method has been setup, its sales breakdown lines should be defined. To do that, proceed as follows:

How to:

  • [In the Sales Breakdown sub-tabs]
    • Select the appropriate Sales Method in which you want to add a Sales Breakdown line.
  • [Using the Filter Objects explorer]
    1. Select a workspace for the object to retrieve.
    2. Select the type of object you want to add in the Sales breakdown. It can be either a Pricing Method, or a Business Property.
    3. (Optionally) Choose a user type.
    4. Enter part of the object name or description.
    5. Click on Search.
    6. In the result list, select and drag&drop the expected element to the grid on the right side of the screen.
  • [In the Pricing Lines or Business Properties Lines grid]
    • Complete the Sales Breakdown line settings.
    • Click on Save.
      Warning: For Business Properties on Sales breakdown lines, only numeric or integer Business Properties can be used.

The list below shows the Sales Breakdown lines attributes for Pricing Lines:

FIELD REQUIRED DESCRIPTION
Workspace Yes Workspace of the Pricing Method.
Pricing Method Yes Name of the Pricing Method used in the Sales Breakdown.
Range Yes Range used in the Pricing Method to get each product price.
Computation Yes Defines the way to compute the total value at the Bundle level for this Sales Breakdown line. Can be of two types: Sum: each selected product price is multiplied by the quantity of this product and sum up at the total level. Average: the total value is computed by doing an average of each selected product price, using a weight on each of them based on the selected quantity.
Optimizable No If checked, then the price becomes a possible choice in the optimization that you can perform at runtime.
Optimization Way Is Optimizable = true In case the Business Property can be used in the optimization, then this attribute defines which kind of result should be targeted by the system. It can be either Lowest or Highest.
Explanation No Translatable text that is used in the optimization flyer to help you understand what you can achieve by using this particular optimization.

The list below shows the Sales Breakdown line attributes for Business Property Lines

FIELD REQUIRED DESCRIPTION
Workspace Yes Workspace of the Business Property Set.
BPS Yes Name of the Business Property Set used in the Sales Breakdown.
BP Yes Name of the Business Property used in the Sales Breakdown.
Computation Yes Defines the way to compute the total value at the Bundle level for this Sales Breakdown line. Can be of two types: Sum: each selected product business property value is multiplied by the quantity of this product and sum up at the total level. Average: the total value is computed by doing an average of each selected product business property value, using a weight on each of them based on the selected quantity.
Optimizable No If checked, then the Business Property becomes a possible choice in the optimization that you can perform at runtime.
Optimization Way Is Optimizable = true In case the Business Property can be used in the optimization, then this attribute defines which kind of result should be targeted by the system. It can be either Lowest or Highest.
Explanation No Translatable text that is used in the optimization flyer to help you understand what you can achieve by using this particular optimization.

Deleting a sales breakdown line

To remove a specific line in your Sales method, you must check the box associated to the Sales Breakdown line you want to delete (in the grid) and then click on "Delete" in the menu toolbar.