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

Data Model - Columns, Lines, & Fields

Columns & Fields Overview

The Columns & Fields menu allows you to:

  • Define columns, line templates, and cells
  • Define fields
  • Manage system columns and fields

When a new quote model is created, by default it has 4 system columns: Item, Quantity, Update Date, and Creation Date. It also has one PRODUCT type line template. You can edit these but they cannot be deleted.



The following are the 3 main parts of the screen:

ACTION BAR (1)

  • Add a column or line template,
  • Duplicate,
  • Delete,
  • View and edit resolution variables,
  • View and edit resolution order
  • View line template hierarchy,
  • Filter the grid representing columns and line templates,
  • Arrange columns.

Filtering Columns and Lines



From the filter button, you are able to filter the elements displayed in the page:

  • Columns - you can select columns you want to display .
  • Line Templates - you can select line templates you want to display.
  • Components - you can select components you want to display. All columns defined in the selected components are displayed. This filter doesn't affect the display of the lines.
    Note: This filter affects only the display in the Quote Designer. It doesn't affect the display at runtime (which is defined on the Grid widget)

LEFT PANE (2)

The left pane shows different information according to what is selected in the grid (3) which can be a column, line, or cell:

  • Nothing selected in the grid (3) = the left pane (2) shows the list of columns, lines templates, authorized line templates, and dynamic filters. If you click on a column or line on the left (2), it is selected in the quote model on the right (3).
  • A line, column or cell is selected in the grid (3) = information for that selection is shown on the left (2) and you can edit the information.

The left pane (2) is made up of collapsible headings. Click on the arrows next to the headings to

open and close the lists. Click on an item in the list to edit the information. You can also hide the left pane by clicking the arrow on the bar that separates the left pane from the right pane. Click again to re-open the left pane.

GRID (3)

The grid shows all columns, line templates, and cells of the quote model. The first column (type of line template) and first row (column headers) are docked. The order of the line templates doesn't affect the resolution order. The columns do not represent the order they will be shown in Performance Quoting which is defined in the Layout (User Interface menu). You can:

  • Move columns and lines (drag and drop),
  • Select a column, line template, or cell by clicking on it,
  • Copy, paste, and delete with a right click on a column, line, or cell.

QUOTE MODEL DEFINITION

When there is no line selected on the page, the left pane contains information related to the quote model.



COLUMNS

This section lists all columns available in the quote model. You can click on a column to edit it (see Columns)

LINE TEMPLATES

This section lists all line templates available in the quote model. You can click on a line template to

edit it (see Line Templates)

AUTHORIZED LINE TEMPLATES

This section lists all line templates authorized at root level. Indeed, if a line template shouldn't be added at root level in the quote (for example, a line template can be added only in a folder or as a sub-line), you should remove it from this list.



DYNAMIC FILTERS

This section lists all dynamic filters defined at quote level. If a dynamic filter related to columns is added here, this domain will be applied on all line templates. In addition, this section contains all dynamic filters related to fields in order to be attached to the quote.

Columns

Columns are generic - they only have a name, description, and type.

ADD A COLUMN

  1. Click Add Column at the top of the screen.
  2. Set the Number of columns to create to 1 (see next paragraph to create multiple columns).
  3. Fill in the name and description.
  4. Select the type:
TYPEDESCRIPTIONTYPEDESCRIPTION
BooleanMonetaryYou must select the currency
IntegerPercentage
LongJSON
Big DecimalXML
StringLocale
Date TimeUnit of Measure
Locale DateHTML
BusinessUsed to store SI (from CPQ catalog) or DIMENSION (from Dimension service)URL
CurrencyScale GridUse for columns that use a scale grid. You must select a currency
PeriodThis type of column is available only if the option is activated on your environment.
  1. Check Encrypted if necessary (only available if this option is enabled on your environment).
  2. Add additional properties
    • Read Permissions - select the list of session states you want to grant the read permission
    • Views / Components - select the components where you want to add this column
  3. Click Add.

If a column is selected in the grid when you create a new column, it is inserted after the selected column. If no column is selected, it is inserted at the end of the row. Once created, the new column is automatically selected.

From the action bar, you can also Duplicate and Delete columns (except for the system columns).

Warning: Renaming or deleting a column deletes all associated data in existing quotes impacting live and historical records.

This action is final and data cannot be recovered.

ADD SEVERAL COLUMNS SIMULTANEOUSLY

To add several columns at the same time, proceed as follows:

  1. Click Add Column at the top of the screen.
  2. Set the Number of columns to create.
  3. Fill in a name and description.
    1. The naming convention is that the first created column will have exactly that name. The subsequent ones will have a prefix with a number (e.g. Name, Name_2, Name_3...).
    2. The description is exactly the same for all created columns.
  4. Select the type (see previous paragraph). The same type will apply to all columns created.
  5. Check Encrypted if necessary (only available if this option is enabled on your environment). This information will apply to all columns created.
  6. Add additional properties
    1. Read Permissions: select the list of session states you want to grant the read permission. This information will apply to all columns created.
    2. Views / Components: select the components which you want to add to this column. This information will apply to all columns created.
  7. Click Add.

EDIT A COLUMN

To edit a column, select the column in the grid by clicking on the column heading (the column is highlighted yellow) or click on the column in the list of columns in the left pane.



Identification

In the left pane, you can edit the identification (name, description, type, linked period column, and encrypted). Depending on the type of column, the information may be different, for example if the

type is monetary or scale grid, you must update the currency. Changes made will automatically be applied to the column in the grid. To go back to the list of columns, click on the name of the column.

Warning: Renaming or deleting a column deletes all associated data in existing quotes impacting live and historical records.

This action is final and data cannot be recovered.



Note:

The encrypted option is only available if the option is activated on your environment.

The description is stored and displayed for the locale that is selected. You can also choose to display the name or description in the application by clicking the dropdown menu in the upper right corner and changing the display preferences.



Multi-select

This option allows the end user to select multiple values when answering to this column cells.

This option is only available for following datatypes: Integer, Long, Big Decimal, String, Business, Percentage.

Show Converted Prices

Monetary and Monetary per quantity columns have an option to automatically show converted prices in the quote UI.

Setting that option to true provides you the access to a widget, which shows you the current cell's price converted in all currencies declared in the quote model.

This option is available only if at least 2 currencies are declared in the quote model.

Conditional Formatting

Conditional formatting can be defined on a column. Then, on cells, the user can disable the conditional formatting if needed (by default, the conditional formatting is applied on all cells. See Disable Conditional Formatting)

You can define several conditional formatting rules on a given column.



The rules are executed in the order of the definition (in the example above, BadBaseValue will be applied first). As soon as a rule is valid, the formatting is applied and all other rules are ignored.

From the Conditional formatting section, you can reorder your rules. A conditional formatting rule is defined with:

  • Name: allowing to identify a rule uniquely
  • Conditions: the conditions define if the rule must be applied or not (Note: only the column where the conditional formatting applies can be used in the condition section)
  • Formatting: if a rule is valid, the following formatting is applied

Static condition

The condition could consist of comparing the column/cell value with a Static value.

In the example below, the value in the BaseValue monetary column is compared (Lower than) to the static value 10 USD:



Dynamic Condition

The condition could also be defined dynamically by comparing the value of the column/cell with the value from another column/cell or field.

In the example below, the value in the BaseValue monetary column is compared (Lower than) to the value in the Expert column (Aggregate):



Formatting

On columns, the formatting can be applied to the:

  • Background color (Remark: the background color is applied only on cells. This means if the cell is displayed in the left pane, the background color won't be applied)
  • Font color
  • Font style

Validation Rule

Validation rules can be defined on a column. You can define several validation rules on a given column



The rules are executed in the order of the definition (in the example above, ValidCPU will be first applied). As soon as a rule is invalid, the validation message is raised in the user interface. From the Validation Rule section, you can reorder your rules.

A validation rule is defined with:

  • Name: allowing to identify a rule uniquely
  • Conditions: the conditions define if the value entered is invalid or not (Note: only the column where the validation rule applies can be used in the condition section)
  • Message: if a rule is invalid, the validation message is raised in the quote user interface

Static condition

The condition could consist of comparing the column/cell value with a Static value.

In the example below, the value in the CPU column is compared (Not in) to the static values i5 or

i7:



Dynamic Condition

The condition could also be defined dynamically by comparing the value of the column / cell with the

value from another column / cell or field.

In the example below, the value in the CPU column is compared (Not equal) to the value in the

MultipleField field (Aggregate):



Validation Error Message

A validation message must be defined to be raised in the quote interface or in the error browser.

By default, the message can be set directly in the validation rule. It is then considered as expressed in the default language.

This message can nonetheless be translated into other languages in the Translations menu of the Quote Designer.

Scaled pricing

Note: Only for scale grid type columns.

Select the type of Scale Grid:

  • Reference scale
  • Negotiated scale
    • Select the Reference Scale column
    • Select the Target price column

Advanced

See the Advanced section for Cells.

Permissions

You can also define the column visibility with the read permission: Check the session states to give permission to see the column.



Note: Permissions can also be managed in the Permissions menu where all permissions and sessions states are defined.
information:

You have the ability to define the message that could be displayed in a personalized tooltip when hovering on the column header in the quote grid.

The Additional Information section is meant for you to define this message in the default language of the model.



You can then translate this message into other languages supported in your model in the Translation menu. Check the Information property of the corresponding column:



EDIT SEVERAL COLUMNS SIMULTANEOUSLY

You have the opportunity to edit several columns simultaneously in the Quote Designer. When editing a specific section in the left part for a given column, you can also decide to apply your modifications to other columns of the same type at the same time.

This applies to the following sections:

Conditional Formatting

  • Advanced

This is made possible via the use of the Scope tab for every one of the above sections.

For example, to apply the same Conditional Formatting rules to several columns, proceed as follows:

  1. Select a column by clicking on its header

  2. In the left part, in the Conditional Formatting section, click on Add. Note that two tabs are available in the modal window opening - Data and Scope

    In the Data tab, you can define the conditional formatting rule as described above. In the

    Scope tab, you can decide to which column this rule will apply.

  3. Define a condition and a formatting in the Data tab and then click on the Scope tab. A list of columns eligible for the application of this condition is displayed.

  4. The current column is pre-selected and cannot be deselected. Select the other columns to which the formatting should be applied and click Done.
  5. The formatting condition is then applied to all selected columns.

The same behavior applies in the sections listed above.

LINK SEVERAL COLUMNS SIMULTANEOUSLY TO A PERIOD COLUMN

You have the opportunity to link several columns simultaneously to a Period column in the Quote Designer.

To do so, you have to be on the Columns & Line Templates page under the Data Model tab and follow these steps:

  1. Click on the dedicated button at the top of the grid

  2. In the pop-up panel, you can then select available columns to be linked to the Period Column. You can also add or remove the link with the middle actions.

  3. Once you're done, you can save your selection. As a result, all columns selected show that they are linked to the Period column in the left part.

Line Templates

Line templates define the type of line, the list of cells in the line, and how they are applied to quote lines (matching rules). Line templates allow different behaviors for quote lines.

ADD A LINE TEMPLATE

  1. Click on Add Line Template.
  2. Set the Number of line templates to create to 1 (see next paragraph to create multiple columns).
  3. Fill in the name and description.
  4. Select the type:
    • PRODUCT - Elements coming from a catalog where a line corresponds to a SKU or an entry in a Configurable Product hierarchy.
    • SPECIFIC - A line that doesn't correspond to an actual SKU from a catalog. The line is created by the user in the quote.
    • FOLDER - A folder allows the user to create a hierarchy in the quote.
    • GENERATED FOLDER - A generated folder automatically creates a hierarchy in the quote by replicating the product catalog's hierarchy.
    • BUNDLE PRODUCT - Elements coming from a catalog where a line corresponds to a SKU and that has sub-lines.
    • BUNDLE SPECIFIC - A line that has sub-lines but doesn't correspond to an actual SKU from a catalog. The line is created by the user in the quote.
    • SUBSCRIPTION* - A root line for a product added from a catalog, and identified as a subscription product.
    • CHARGE* - Sub-lines of a subscription line, the charges of the subscription Rate Plan.
    • AGGREGATION_LINE - A line automatically generated by the system that groups quote rows by a common characteristic. It can have other AGGREGATION_LINE rows as children.
  5. Check Encrypted if available (only available if this option is enabled on your environment).
  6. Add additional properties:
    • Update Permissions - select the list of session states you want to grant the update permission
    • Creation Permissions - select the list of session states you want to grant the create permission
    • Deletion Permissions - select the list of session states you want to grant the delete permission
  7. Click Add.

If a line is selected in the grid when you create a new line template, it is inserted after the selected line. If no line is selected, it is inserted at the bottom of the grid. Once created, the new line is automatically selected.

From the action bar, you can also Duplicate and Delete line templates.

Warning: Renaming or deleting a line template deletes all associated data in existing quotes impacting live and historical records.

This action is final and data cannot be recovered.

Note: Line order in the grid does not reflect the line order at runtime or the resolution of the line templates. You can move lines in the grid by dragging and dropping.

*Important: SUBSCRIPTION and CHARGE type line templates are only for users that are using the Subscription Management module.

Aggregation line templates

  • Only one AGGREGATION_LINE template is allowed per quote model.
  • Only the Update permission is available for this template type. Create and Delete permissions are not available as lines are managed automatically by the quote.

ADD SEVERAL LINE TEMPLATES SIMULTANEOUSLY

To add several line templates at the same time, proceed as follows:

  1. Click Add Column at the top of the screen.
  2. Set the Number of line templates to create.
  3. Fill in the name and description.
    1. The naming convention is that the first created column will have exactly that name. The

      subsequent ones will have a prefix with a number (e.g. Name, Name_2, Name_3...).

    2. The description is exactly the same for all created line templates.
  4. Select the type (see previous paragraph). The same type will apply to all line templates created.
  5. Check Encrypted if necessary (only available is this option is enabled on your environment). This information will apply to all line templates created.
  6. Add additional properties
    1. Update Permissions: select the list of session states you want to grant the update permission. This information will apply to all line templates created.
    2. Creation Permissions: select the list of session states you want to grant the create permission. This information will apply to all line templates created.
    3. Deletion Permissions: select the list of session states you want to grant the delete permission. This information will apply to all line templates created.
  7. Click Add.

If a line is selected in the grid when you create a new line template, it is inserted after the selected line. If no line is selected, it is inserted at the bottom of the grid. Once created, the new line is automatically selected.

From the action bar, you can also Duplicate and Delete line templates.

Warning: Renaming or deleting a line template deletes all associated data in existing quotes impacting live and historical records.

This action is final and data cannot be recovered.

Note: Line order in the grid does not reflect the line order at runtime or the resolution of the line templates. You can move lines in the grid by dragging and dropping.

Important

SUBSCRIPTION and CHARGE line templates are only for users that are using Subscriptions.

Aggregation line templates

  • Only one AGGREGATION_LINE template is allowed per quote model.
  • Only the Update permission is available for this template type. Create and Delete permissions are not available as lines are managed automatically by the quote.

EDIT A LINE TEMPLATE

To edit a line template, select the line in the grid by clicking on the first cell with the line template type (when selected the line is highlighted yellow) or click on the line template in the list in the left pane.



Once selected, you can edit the information for that line template in the left pane. Depending on the type of line template, different sections are displayed.

Identification

In the left pane, you can edit the identification: Name, description, type, and if it can be a root product (PRODUCT type only). The description is stored and displayed for the locale that is selected. You can also choose to display the name or description in the application by clicking the dropdown

menu in the upper right corner and changing the display preferences.

Warning: Renaming or deleting a line template deletes all associated data in existing quotes impacting live and historical records.

This action is final and data cannot be recovered.



Matching rules

Note: Only for PRODUCT, BUNDLE PRODUCT, SUBSCRIPTION, and CHARGE type lines templates.

Matching rules are used to decide which line template is assigned to a line when it is added to a quote. Matching rules use resolution variables to determine this.

To add a matching rule to a line template:

  1. Click Edit.

  2. Select a resolution variable from the dropdown list in the search box or create a new one by clicking on Create resolution variable. (Note: From version 12.11, using the system variable

_SYS_ROW_ITEM in the matching rule is DEPRECATED)

  • If you create a new resolution variable, a popup window opens.
  • Fill in the name and type (string by default).
  • Click Save and it is added to the matching rule.
  1. Select the operator and enter a value (can be case sensitive).
  2. Click on the pencil icon to add a key (optional) that is used to map the resolution variable to a property in the catalog. Each key corresponds to a catalog data source. If you have 2 catalog data sources, you must define 2 keys. For a child line, the parent product map is displayed. See line resolution for more information.
    Warning: You need at least one data source to be able to define a key.


  3. Enter the filter logic (the order in which the resolution variables are applied).
  4. Click Save.
    Note: Resolution variables can be edited/viewed in the Resolution Variables table accessed from the Line resolution menu on the action bar. See line resolution for more information.

Product map

For PRODUCT and BUNDLE PRODUCT type lines templates, you can define a Product Map in order to:

  • Retrieve the needed information to execute children's matching rules: see Resolution variable
  • Retrieve information on the line that are part of the SBL: Locale variables

The Product Map is executed once the line template is assigned in order to solve children's line template or to get information that are part of the configuration on the root line.

Define the product map. To define a product map:

  1. Click Edit.

The resolution variables used in the child's matching rules are added to the product map automatically.

  1. If needed, you can add additional resolution variables on this map by clicking on Add resolution variable. In addition, in order to retrieve information on the lines that are part of the SBL you can create locale variables.
  2. In the Key column, enter the key to retrieve (ex: CPE.currentSBL, etc.) or keep it empty if you want to use the same key as defined at data source level.
    Note: See Managing a Configuration Process in Your Quote for more information.

Subscription Map

Only for SUBSCRIPTION type lines templates. Define a Subscription Map in order to retrieve information sent by the Subscription Management module:

  • Resolution Variables for information needed to execute children's matching rules
  • Local variables for all other information
  • The Subscription Map is executed once the line template is assigned.

Define the Subscription map:

  1. Click Edit.

The resolution variables used in a child's matching rules are added to the Subscription map automatically.

  1. You can add additional local variables on this map by clicking on Create local variable. 3. In the Key column, select the type of Subscription information you want to retrieve. See available keys in the "Mapping Subscription Management Output" section in the Examples topic.

Child products

Note: Only for PRODUCT, BUNDLE PRODUCT, BUNDLE SPECIFIC, and SUBSCRIPTION type

line templates.

This section allows you to define which PRODUCT type line templates (or CHARGE type line templates for Subscriptions) you want to associate as a child to the line template you are editing.

To define child products:

  1. Click Edit.

  2. Select the line template from the dropdown list. You can select more than one.
  3. Click Save.
    Note: The order of the child products in the popup is the resolution order of the child products for the selected line template.

Authorized line templates

Note: Only for FOLDER and BUNDLE PRODUCT type line templates.

Define the line templates that can be used in the FOLDER type line template you are editing.



You can select certain line templates from the dropdown list or click All types to select all. Click Save when finished.

Important: For PRODUCT and BUNDLE PRODUCT type line templates, if All is selected, the line resolution order is inherited from the global resolution order. If you select line templates individually, they will be resolved in the order defined here for the selected line template (the resolution order is specific to this line template).

Automated Structure Data Source

For GENERATED FOLDER line templates, a structure data source should be defined as the source of truth to get the catalog hierarchy to replicate in the quote. This data source will also be used to retrieve labels translations to be used as folders descriptions.

This data source has to be picked in the list of catalog data providers.

Automated Hierarchy

For PRODUCT, BUNDLE PRODUCT and SUBSCRIPTION line templates, a Automated hierarchy line template can be selected. In that case, line items will be automatically created in a folder which replicates the catalog hierarchy from which the inserted line item is originated.

This data source has to be picked in the list of GENERATED FOLDER line templates.

Eligible Line templates for Automated hierarchy

Only line templates with a No duplicate FPK policy can be managed by an Automated Hierarchy.

Cells

This section lists the columns that have a behavior defined for the line template (user input, formula, etc.). Click on a cell from the list to edit it. When you are editing a cell, it is selected in the grid.

Note: To define/edit behaviors for a cell, see Edit a Cell below.

Dynamic filters

Dynamic filters allow you to filter a domain (list of available values) for a column/field based on other values. For example, you can filter the "ship to" locations based on the "sold to" locations. See Connect for more information on Dynamic Filters.

You can add dynamic filters by clicking Add dynamic filters.



Edit the name (name of the table defined in the Dynamic Filter service) or delete the dynamic filter from the list by clicking on the corresponding icon.

Functional primary key (FPK)

The functional primary key (FPK) rule is associated to the line template and is used to manage identical lines and if you want to take into account the line hierarchy for the FPK computation. See Anatomy of a Quote for more information.



  1. Select the policy to be used when identical lines are detected for this line template:
    • No control - the same line can be added several times in the quote
    • Conflicts - the same line can be added in the quote but all identical lines will be in error
    • No duplicate - a line cannot be added in the quote if it already exists
  2. Check Take Hierarchy into account if you want the line hierarchy to be taken in to account when applying the FPK.
  3. Select the columns you want to be used for the FPK and order them in the selected columns panel.

If no FPK specified on the line template, the FPK will be defined with the system column RowItem, the policy will be set to NO CONTROL and the hierarchy is not taken into account.

The following cell/column types are available for use in the FPK definition :

  • User Input
  • Resolution Variable
  • Formula
  • Data Source(Catalog, POM, External etc.)

In the event of having a computed column (Data Source, Formula) in an FPK definition, the FPK functionality would first compute all cells participating in the FPK definition and only then construct the key.

Known Limitation - FPK Defined with Resolution Variable

The Functional Primary Key (FPK) is used for line matching (when the policy is 'NO DUPLICATE' or 'CONFLICT').

If the FPK is defined with some columns computed from resolution variables, utilizing Excel or JSON import to merge data on Configured Products lines or Bundle Products is not supported.

More particularly, because the matching cannot happen for resolution variables, quote line data will not be merged. As a result, new lines will or may be added to the quote.

Known Limitation - FPK and Smart Mass Update

If a cell is participating in Smart Mass Update it cannot be part of the FPK definition

Known Limitation - Import and NO_DUPLICATE Policy:

For Import operation with NO_DUPLICATE policy, all cells participating in the FPK have to be available in the import file for the matching to happen.

If a row doesn't have all cells for the FPK it will be missed in the matching check and the line will be created, thus introducing the possiblity of a duplicate row.

If that's the case, the system will display a warning message in the cart pointing out that existence of duplicates.

Specificity for GENERATED FOLDER line templates

FPK for GENERATED FOLDER line templates will be handled automatically by the system, and

thus is disabled in the quote designer for those line templates. It will be defined as such:

  • No Duplicate
  • Hierarchical
  • FPK is built based on
    • row_item
    • line template name

Cliques

The clique concept has been designed to help the administrator to define a cyclic computation formula with inter-dependencies.

For now, only one standard clique is available and there is no capability to define and add custom ones.

The clique that is delivered as part of the product will handle the following use case:

Input variables

  • UP: Unitary Price (Currency / UoM)
  • QTY: Quantity (UoM)
  • UC: Unitary Cost

    Core variables

  • DP: Discount Percentage (between 0 and 1)
  • UDA: Unitary Discount Amount
  • TDA: Total Discount Amount
  • UNP: Unitary Net Price
  • TNP: Total Net Price
  • MP: Margin Percentage (between 0 and 1)
  • UMA: Unitary Margin Amount
  • TMA: Total Margin Amount

    initial state

  • DP = pivot value (1 - (UNP/UP))
  • UDA = UP * DP
  • TDA = UP * QTY*DP
  • UNP = UP * (1 - DP)
  • TNP = QTY * UP * (1 - DP)
  • MP = (UP * (1 - DP) - UC) / (UP * (1 - DP))
  • UMA = UP * (1 - DP) - UC
  • TMA = QTY * (UP * (1 - DP) - UC)

When any of those values change, all other variables are recomputed so that everything remains consistent.

To add a clique:

  1. Click on Add clique.
  2. Give the clique a name.
  3. Select the columns that you want to be a part of the clique.

  4. Click Save.

You can add more than one clique to a line template. Each clique must have a different name.

Note: You cannot define a formula on a column that is part of a clique.

Optional Columns in Cliques

Except for the pivot variables in a given clique, all other columns are optional by default. As a consequence, only the variables set in the above window are updated when one is modified in the quote grid. It also implies that you do not have to create corresponding columns in the quote model for variables that you do not use in the clique.

Data source maps

If you want to retrieve information from a data source (such as price or product properties), you must first define a data source map (see Data Source), then associate the map to the line template.

This section contains the list of data source maps associated with the line template. You can add, edit, and delete a data map for the line template. When a map is applied on a line template, it affects all the columns listed in the map. If a column contains a formula, the data source map overrides the formula.

Permissions

You can update, create, and delete permissions on the line template in the Permissions section. For each type of access right, click the dropdown list and select what session states you want to give the permission to. For BUNDLE type line templates, there is also a section for the sub-lines. You will be able to define if you can Create/Update or Delete sub-lines for this line template.

Note: You can also manage all permissions in the Permissions menu.


LINE HIERARCHY

To view the line hierarchy, click the Line Hierarchy button located in the upper right of the screen. This allows you to visualize the line templates and their nesting.



Cells

For each line template, you can define what is displayed or the behavior of each cell.

EDIT A CELL

To edit a cell, select the cell by clicking on it in the grid (when selected the cell is highlighted yellow). Once selected, you can edit the information for that cell in the left pane.

User input

Define if the cell is user input or not by selecting true or false.

Required

Set the cell as Required, meaning that the cell must have a value set in order for the quote to be valid. This mechanism guides you at the time of quoting and helps you to visually identify if an important value is missing.

While the required cell does not have a value, a Validation Error icon is visible in the cell itself, and a dedicated Validation message is displayed in the Error Browser.

Required and User Input

A Required cell must be User Input otherwise, you could not set its required value.

Auto Set

This flag applies for the cells whose domain of value is driven by Dynamic Filters.

A cell driven by the Dynamic Domain service can only take predefined values within a list that can be filtered down depending on the criteria of the corresponding Dynamic Filter.

At runtime, you must choose between the available values to fill in this cell. Depending on the filtering criteria, it may happen that only one value is available.

If this cell is flagged as Auto Set, then this single value is automatically selected by the system, thus preventing you from having to manually select it.

Unselect

If a value has been auto-set because it was the only one available and the Auto Set flag was activated on a Dynamic Filter driven column, but the premises of the filter changed so that more than one value is now available, the previously auto-set value is then automatically unselected. In other words, the auto set can be reverted back if more than one value is made available in the Dynamic Filter.

Domain

Depending on the type of column, you can define a static domain for the cell. The following table shows the type of cell and the list of settings available:

TYPESETTINGSTYPESETTINGS
BooleanN/AMonetaryN/A
IntegerMin/max/multiple of List of values From JSONPercentageMin/max/multiple of List of values From JSON
LongMin/max/multiple of List of values From JSONJSONN/A
Big DecimalMin/max List of values From JSONXMLN/A
StringList of values Regex Max size From JSONLocaleValue From JSON
Date TimeMin/max List of values From JSONUnit of MeasureValue Type From JSON
Locale DateMin/max List of values From JSONHTMLN/A
BusinessFrom JSONURLN/A
CurrencyValue From JSONScale GridN/A
PeriodN/A

To add a domain, enter the values/information, then click Add. For a list of values, you can add up to 20 values. If you need more than 20, you must create a dynamic filter.

Domain From JSON

The domain can be built from a JSON field.



You need to select from which JSON-typed field the domain will be retrieved and then specify the JSON Path to retrieve this information.



Dynamic Filter

When a column is also associated with a dynamic filter, the domain defined here is considered as an additional restriction of the one coming from the dynamic filter service.

For example:

The following domain is defined in the Dynamic filter and associated to the line template:

Color: Blue, white, red

Then, for the same line template, the following domain is associated to the cell: List of Values:

Black, Blue, Red. At runtime, the domain available will be : Blue, Red

information: If the domain contains more than the governor limit "Maximum number of values in a static domain" ( See Governor limits), there is no domain (at runtime, the user can't set any value). If the domain can't be retrieved (the JSON path doesn't return any value), there is no domain (at runtime, the user can't set any value).

Permissions

You can manage update permissions on the cell in the Permissions section. For each type of access right, click the dropdown list and select the groups you want to give the permission to.

Note: You can also manage all permissions in the Permissions menu.
Warning: Only session states selected in the "Update permissions" on the line template are displayed at cell level.

Calculation

There are 3 types of calculations you can add to a cell:

  • Formula
  • Resolution variable
  • External (data map)

If a map is associated to the line template, the calculation is automatically set depending on the map definition (read mode). An open link redirects you to the map definition from the data source page. If the user clicks on edit, he is able to enter a formula or to select a resolution variable.



When a cell is computed by a data map, the left pane displays the data map information and the user can open it.



Disable Conditional Formatting

By default, conditional formatting rule(s) apply to all the cells of a column. This function can be used to disable the conditional formatting rule(s) on a specific cell.

Rulable

Define if the cell is rulable by selecting true or false. If a cell is rulable, User Rules can be applied to the cell. This does not apply if the cell is an output of a data source.

Smart Mass Update

Define if the cell is flagged Smart Mass updatable. At runtime, when changing a value on a cell that is marked as such, the system will automatically look for similar lines, and report the value as a user input on the same column for those lines.

Only user input values will trigger a Smart Mass Update.

Data Source

For Business type columns only. Define the data source on the cell. There are 2 types of data sources:

  • Catalog
  • Dimension

Select the data source type and the name. Defining a data source allows you to search for a value when you edit the cell at runtime.

Validation Rule

Validation rules can be defined on a cell. You can define several validation rules on a given column



The rules are executed in the order of the definition (in the example above, ApprovalRequired will be first applied). As soon as a rule is invalid, the validation message is raised in the user interface. From the Validation Rule section, you can reorder your rules.

A validation rule is defined with:

  • Name: allowing to identify a rule uniquely
  • Conditions: the conditions define if the value entered is valid or not (Note: only the column where the validation rule applies can be used in the condition section)
  • Message: if a rule is invalid, the validation message is raised in the quote user interface

Static condition

The condition could consist of comparing the column/cell value with a Static value.

In the example below, the value in the Approval column is compared (Not Equal) to the static

value Approved:



Dynamic Condition

The condition could also be defined dynamically by comparing the value of the column / cell with the value from another column / cell or field.

In the example below, the value in the Approval column is compared (Not equal) to the value in the

globalApproval field (Aggregate):



Validation Error Message

A validation message must be defined to be raised in the quote interface or in the error browser.

By default, the message can be set directly in the validation rule. It is then considered as expressed in the default language.

This message can nonetheless be translated into other languages in the Translations menu of the Quote Designer.

Guidance

For monetary or percentage type columns, you can define a guidance widget. Click Edit to open the popup window. In the Min/Max tab, you can define the minimum and maximum values of the guidance widget.



In the Benchmark tab you can select benchmark columns (maximum 5). If no benchmark is associated, the guidance is not applied to the cell.



In the Base Value tab, define the base value to be used in the guidance widget.



In the Colors tab, define the colors for the guidance widget segments using a color picker. The number of colors depends on the number of benchmarks you defined in the Benchmark tab.



In the Score tab, define the score column you want to display on the widget.



Once everything is set up, Click Save.

The guidance widget will be displayed at runtime to help the user to select the right price/discount level.



  • The Base Price corresponds to the List Price and the widget allows you to see the price difference between this price and the selected price (displayed on the right).
  • Benchmarks (Expert, Target, Floor) in the example above, are displayed on the left. They correspond to columns in the quote model.
  • The score is a column displayed on the top right.
  • Minimum and maximum are used for display purposes. They can be defined as a static value (0, 100) or as columns.

    Known limitation - Scale Grid Price

    The Guidance could be used to change only the Base Price of the Scale Grid.

    In that event, the Guidance attributes can only be of the same type as the Scale Grid Base Price (Monetary).

Advanced

The advanced section allows you to define the following on a cell:

  • Selector
  • Grid Renderers
  • Formatter

    Selectors and masks

Depending on the type of the column (and/or if a data source is linked to the cell ), you can assign a selector to the cell:

TYPESELECTORS AVAILABLE
StringDropDown, Input, Text Area
BooleanCheckbox
MonetaryLiveConverter, Input, DropDown, Spinner
CurrencyInput, DropDown
UoMInput, DropDown
IntegerDropDown, Input, Spinner
TYPESELECTORS AVAILABLE
Big DecimalDropDown, Input, Spinner
LongDropDown, Input, Spinner
Business ValueSearch, DropDown, Input
DimensionDimension, Input, DropDown
HTMLWYSIWYG, Input, DropDown
LocaleInput, DropDown
PercentageDropDown, Input, Spinner
DateTimeDatepicker, DropDown, Input
DateDatepicker, DropDown, Input
URLURL
PERIODDatepicker, DropDown, Input

Depending on the selector chosen, you can define the properties of the selector:

SELECTOROPTIONS
CheckboxNo setting
DatepickerNo setting
DimensionDisplay unauthorized (TRUE/FALSE) Force same width (TRUE/FALSE) Multiline (TRUE/FALSE) Start from (Left, Right) Display mode (All, Name, Description) Nb characters for search (integer, default 3)
DropdownDisplay unauthorized (TRUE/FALSE) Force same width (TRUE/FALSE) Multiline (TRUE/FALSE) Start from (Left, Right) Display mode (All, Name, Description) Nb characters for search (integer, default 3) Check Eligibility (true/false)
InputClear text (TRUE/FALSE) Before icon (Free text) Before icon pair (Free text) Width (integer) Only for business columns: Business Display Mode (All, Name, Description) → display 1 or 2 inputs
Live ConverterNo setting
SearchDisplay unauthorized (TRUE/FALSE) Force same width (TRUE/FALSE) Multiline (TRUE/FALSE) Start from (Left, Right) Price key (Free text) Display mode (All, Name, Description) Nb characters for search (integer, default 3)
SpinnerNo setting
Text AreaInline (TRUE/FALSE) Lock Width (TRUE/FALSE) Resize (TRUE/FALSE)
URLNo setting
WYSIWIGFont Size (integer) (All following are TRUE/FALSE) Cut Undo/Redo Insert Special Character Full screen Bold Italic Underline Strikethrough Clear formatting Bullet list Numeric List Indent Outdent Align Left Align Center Align Right Brush Link

By selecting the INPUT selector, you can also define a mask.

There are 7 predefined masks and the capability to create a custom mask:

  • ZIP CODE US (ddddd)
  • ZIP CODE FR (ddddd)
  • Phone US ((ddd) dd ddd-dddd)
  • Phone FR ([1-9]d dd dd dd dd)
  • Quantity (dd)
  • Email ([email protected])
  • Serial Custom (xx ddd xx)

If you select Custom, you can define the following properties:

  • Allow Decimal (true/false)
  • Allow Leading Zeroes (true/false)
  • Allow Negative (true/false)
  • Decimal Limit (integer)
  • Decimal Symbol (string)
  • Include Thousands Separator (true/false)
  • Integer Limit (true/false)
  • Prefix (string)
  • Regex
  • Require Decimal (true/false)
  • Suffix (string)
  • Thousands Separator Symbol (string)

    Grid Renderers

For BUSINESS type columns, you can define the renderer used when the data is displayed in a Grid.

The renderer is defined with 3 properties:

  • Display image (true/false)
  • Title (empty, Description, Name, Long description)
  • Text (empty, Description, Name, Long description)
  • Multiline (None, Title, Text)

The image will be retrieved from the Catalog (Rich Media Object). The first image associated to the product with the usertype quotex will be retrieved.

The Long description corresponds to the RMO Text associated to the product. The first RMO Text with the usertype quotex will be retrieved.

Example in Smart CPQ:



The Multiline setting can be used to display either the title or the text on several lines instead of one by default:

MULTILINETITLETEXTDENSITY NORMALDENSITY COMPACTDENSITY TIGHT
NoneName OR Description OR Long DescriptionName OR Description OR Long Description
NoneEmptyName OR Description OR Long Description
NoneName OR Description OR Long DescriptionEmpty
TitleName OR Description OR Long DescriptionEmpty
MULTILINETITLETEXTDENSITY NORMALDENSITY COMPACTDENSITY TIGHT
TitleName OR Description OR Long DescriptionName OR Description OR Long Description
TextEmptyName OR Description OR Long Description
TextName OR Description OR Long DescriptionName OR Description OR Long Description

Formatter

Depending on the type of the column, you can define a formatter:

TYPEOPTIONS
Text
Boolean
MonetaryGrouping separator Decimal separator Decimal count Currency position
CurrencyCurrency display (Name, code, symbol)
IntegerGrouping separator
TYPEOPTIONS
Big DecimalGrouping separator Decimal separator Decimal count
LongGrouping separator
Business ValueDisplay mode (All, Name, Description)
Dimension
HTML
Locale
PercentageGrouping separator Decimal separator Decimal count
UoMUoM display (code, label)
DateTimedisplayTimezone (true/false)
Date
URL
PERIOD

EDIT SEVERAL CELLS SIMULTANEOUSLY

You have the opportunity to edit several cells of the same type simultaneously in the Quote Designer.

When editing a specific section in the left part for a given cell, you can also decide to apply your modifications to other cells of the same type at the same time.

This applies to the following sections:

  • Calculation
  • Guidance
  • Domains
  • Advanced
  • Data Source (for Business type of cells)

The following settings can also be edited in mass:

  • User Input
  • Rulable
  • Smart Mass Update

Scope for Sections

The edition of sections listed above is made possible via the use of the Scope tab.

For example, to apply the same calculation formula to several cells, proceed as follows:

  1. Select a cell by clicking on it

  2. In the left part, in the Calculation section, click on Edit. Note that two tabs are available in

    the modal window opening - Data and Scope



    In the Data tab, you can define the formula as described above. In the Scope tab, you can decide to which column this rule will apply.

  3. Define a formula in the Data tab and then click on the Scope tab. A table with line templates and columns allows selecting cells eligible for the application of this formula.

  4. The current cell is pre-selected and cannot be deselected. Select the other cells to which the formula should be applied and click on Save.
  5. The formula is then applied to all selected cells.

The same behavior applies in the sections listed above.

Guidance

In the case of the definition of Guidance for a given cell, the scope is reduced to the cells of the same column only, as it does not make sense to apply the same guidance to cells from different columns.

In that scenario, the Scope tab contains a dropdown list of line templates, with the current one

pre-selected.



Scope for Settings

Some of the cell settings are not set within dedicated windows, but more simply with a toggle. These settings can still be applied to several cells at the same time but in a different way than in the scenarios described in the previous paragraph.

In order to mass edit settings, proceed as follows:

  1. Right-click on a line template containing the cells to update. In the menu, click on Configure Cell Settings:

    Alternatively, you can right-click on a column containing the cells to update:



    Note: that two tabs are available in the modal window opening - Data and Scope.


  2. In the Data tab, you can:
    1. select the setting(s) to update by checking the corresponding box in the Override

      column

    2. set a value for the setting (true or false) by checking or not the box at the right-end of the corresponding line.

      Example

      In this example:

    • the User Input setting will be updated with the value true.
    • the Rulable setting will not be updated.
    • the Smart Mass Update setting will be updated with the value false.

  3. In the Scope tab, select the cells to update with the values from the Data tab.

    If you have selected a line template initially (step 1 above):



    Or, if you have selected a column:



  4. Click Save.

RIGHT CLICK ON A CELL

On right click, the user can perform several actions:



  • Copy cell - The whole cell is copied (meaning all the properties such as formula, permissions, domains, etc.). A copied cell can be pasted only on a cell with the same type.
  • Copy formula to clipboard - if a formula exists, you can copy it to your clipboard
  • Paste cell - Only available if a cell with the same type is copied. By pasting a cell, it will replace the current properties.
  • Delete cell - Delete cell will delete all the properties of the cell (note: when the cell is computed by a data source, this calculation can't be deleted as the association is done at line template level)

    It may happen that a copy to clipboard is prevented by your browser settings or the system embedding Smart CPQ. To still allow you to copy to clipboard the content of a cell or a row for instance, a modal window may pop up.

    From there, you can manually select the content of the cell and copy it in text, CSV or HTML format by clicking on Select all or by using keyboard shortcuts.

    The copied content can then be pasted elsewhere on your computer. Example for a cell:



    Example for a row:



Line Resolution

You can add products or bundles from the catalog. These lines will be added in the quote with the PRODUCT or BUNDLE PRODUCT type line template. In order to be able to define which line template is assigned for each product, matching rules are executed. Matching rules are based on resolution variables.

From the action bar, you can:



  • Define the resolution order - the order of execution of the matching rule.
  • Edit the resolution variables - you can change the name and type of the resolution variables as well as define keys (data sources). You cannot create resolution variables from this screen, they are created when you define a matching rule (see Line Templates).

RESOLUTION ORDER



The resolution order defines the order in which the matching rules for each line template are executed. As matching rules are executed sequentially, the first line template that matches is assigned to the line. You can reorganize this order by clicking on the arrows displayed on the right of the list.

Note: The resolution order defined above is the global resolution order that is applied to all PRODUCT and BUNDLE line templates. It can be different for a FOLDER or BUNDLE5(?) type line template if you define specific authorized line templates for the line. See Authorized Line Templates.

RESOLUTION VARIABLES

Resolution variables are used in matching rules to retrieve the information needed to solve a line template. The Resolution Variables window lists all the resolution variables defined in your quote model. You can edit them (change the name and type) and define keys. The keys are used to retrieve information from the data sources (catalog and product maps) that is used to solve the line template. For example, in Smart CPQ Catalog, keys are represented with a CPE (CPE.currentItem.wks/BPS/bpsProperties.BP/bpType.value).

Note: You cannot create resolution variables here. They are created when you define a matching rule for a Line Template.


Examples

Fields

A field is a quote variable that is used to display information in the quote (header or widget) and can be synchronized to a CRM. To access fields, go to DATA MODEL > Fields.



When nothing is selected, the list of fields appears in the left pane and on the right in the grid. When a field is selected, you can edit it in the left pane. By default, there are system fields that are already created in the application. You can edit the system fields but you cannot duplicate or delete them.

ADD A FIELD

  1. Click Add Field in the action bar.
  2. Set the Number of fields to create to 1 (see next paragraph to create multiple columns).
  3. Fill in a name, description, and type. For monetary type, also select the currency.
  4. Check Encrypted if necessary (only available if this option is enabled on your environment).
  5. Add additional properties
    1. Update Permissions: select the list of session states you want to grant the update permission.
    2. Read Permissions: select the list of session states you want to grant the create permission.
    3. View / Components: select the components where you want to add this field.
  6. Click Add.

From the action bar, you can also Duplicate and Delete fields (except for the system fields). Once the field is created, it is selected on the list and you can edit the field in the left pane.

Warning: Renaming or deleting a field deletes all associated data in existing quotes impacting live and historical records.

This action is final and data cannot be recovered.

ADD SEVERAL FIELDS SIMULTANEOUSLY

  1. Click Add Field in the action bar.
  2. Set the Number of fields to create.
  3. Fill in a name, description, and type. For monetary type, also select the currency.
    1. The naming convention is that the first created field will have exactly that name. The subsequent ones will have a prefix with a number (e.g. Name, Name_2, Name_3...).
    2. The description is exactly the same for all created fields.
    3. The type is exactly the same for all created fields.
  4. Check Encrypted if necessary (only available is this option is enabled on your environment). This information will apply to all fields created.
  5. Add additional properties
    1. Update Permissions: select the list of session states you want to grant the update permission. This information will apply to all fields created.
    2. Read Permissions: select the list of session states you want to grant the create permission. This information will apply to all fields created.
    3. View / Components: select the components where you want to add these fields. This information will apply to all fields created.
  6. Click Add.

From the action bar, you can also Duplicate and Delete fields (except for the system fields). Once the fields are created, you can edit them in the left pane.

Warning: Renaming or deleting a field deletes all associated data in existing quotes impacting live and historical records.

This action is final and data cannot be recovered.

EDIT A FIELD

To edit a field, select the field in the left pane or in the grid (it is highlighted in yellow).



You can edit the following information in the left pane (the section depends on the type of field):

  • Identification
  • User input
  • Required
  • Auto Set
  • Conditional Formatting
  • Validation Rule
  • Calculation
  • Domain
  • Guidance
  • Permissions
  • Advanced
    Warning: Renaming or deleting a field deletes all associated data in existing quotes impacting live and historical records.

    This action is final and data cannot be recovered.

Identification

In the left pane, you can edit the identification (name, description, type, and encrypted). Depending on the type of field, the information may be different, for example, if the type is monetary, you must update the currency. The description is stored and displayed for the locale that is selected. You can also choose to display the name or description in the application by clicking the dropdown menu in the upper right corner and changing the display preferences.



User Input

See User Input for cells.

Required

See Required for cells.

Multi-select

This option allows the end user to select multiple values when answering to this column cells.

This option is only available for following datatypes: Integer, Long, Big Decimal, String, Business, Percentage.

Show Converted Prices

Monetary and Monetary per quantity fields have an option to automatically show converted prices in the quote UI.

Setting that option to true will provide the access to a widget to the end-user, which will show them the current field's price converted in all currencies declared in the quote model.

This option is available only if at least 2 currencies are declared in the quote model.

Auto Set

See Auto Set for cells.

Conditional Formatting

See Conditional Formatting for Columns.

Note: As fields are not displayed in a grid, the background color cannot be defined as part of the formatting.

Validation Rule

See Validation Rule for cells.

Calculation

See Calculation for cells.

Domain

See Domain for cells.

Data Source

See Data Source for cells.

Guidance

See Guidance for cells.

Permissions

See Permissions for cells.

Advanced

See Advanced settings for cells.

Information

You have the ability to define the message that could be displayed in a personalized tooltip when hovering on the field label in the quote interface.

The Additional Information section is meant for you to define this message in the default language of the model.



You can then translate this message into other languages supported in your model in the Translation menu. Check the Information property of the corresponding field:



EDIT SEVERAL FIELDS SIMULTANEOUSLY

You have the opportunity to edit several fields of the same type simultaneously in the Quote Designer. When editing a specific section in the left part for a given field, you can also decide to apply your modifications to other fields of the same type at the same time.

This applies to the following sections:

  • Conditional Formatting
  • Calculation
  • Domains
  • Advanced
  • Data Source (for Business type of fields)

The following settings can also be edited in mass:

User Input

Scope for Sections

The edition of the sections listed above is made possible via the use of the Scope tab. For example, to apply the same calculation formula to several fields, proceed as follows:

  1. Select a field by clicking on it

  2. In the left part, in the Calculation section, click on Edit. Note that two tabs are available in the modal window opening - Data and Scope

    In the Data tab, you can define the formula as described above. In the Scope tab, you can decide to which fields this rule will apply.

  3. Define a formula in the Data tab and then click on the Scope tab. A list of fields eligible for the application of this formula is displayed.

  4. The current field is pre-selected and cannot be deselected. Select the other fields to which the formula should be applied and click on Save.
  5. The formula is then applied to all selected fields.

The same behavior applies in the sections listed above.

Scope for Settings

Some of the field settings are not set within dedicated windows, but more simply with a toggle. These settings can still be applied to several fields at the same time but in a different way than in the scenarios described in the previous paragraph.

In order to mass edit settings, proceed as follows:

  1. Right-click on a field. In the menu, click on Configure Field Settings:

    Note: that two tabs are available in the modal window opening - Data and Scope.


  2. In the Data tab, you can:
    1. select the setting(s) to update by checking the corresponding box in the Override

      column

    2. set a value for the setting (true or false) by checking or not the box at the right-end of the corresponding line.

      Example

      In this example, the User Input setting will be updated with the value true.



      In this example, the User Input setting will be updated with the value false.



      In this example, the User Input setting will not be updated.



  3. In the Scope tab, select the fields to update with the values from the Data tab.

  4. Click Save.

USING FIELDS IN THE QUOTE

As previously stated, fields are used to display information in the quote header or in a widget which are defined in the quote layout in the User Interface menu. However, to be able to define this in the layout, you need to first create a field, then a quote view with a component that includes the field.

Once these are created, you can define the view in the layout for a header or a widget.

System Columns & Fields

The system columns and fields are listed in the DATA MODEL > System Columns & Fields menu.



Click on Columns or Fields in the left pane and the list of columns or fields appears on the right. The name, description, type and encryption are shown. System columns and fields cannot be deleted however you can edit the description and check encryption if desired.

Note: The description is a user-friendly name and it is stored in the data locale - meaning it will be displayed in the locale (language) selected.

SYSTEM COLUMNS

NAMEDESCRIPTION
_SYS_ROW_CREATION_DATERow creation date - date and time of the creation of the line.
_SYS_ROW_UPDATE_DATERow update date - date and time of the last update of the line.
_SYS_ROW_ITEMRow item - line identifier. This column is automatically filled when a product is added from the catalog.
_SYS_ROW_QUANTITYRow quantity - line quantity. This column is automatically filled when a product is added from the catalog.
_SYS_ROW_UPDATE_USERRow update user - username of the last updater.
_SYS_ROW_CREATION_USERRow creation user - username of the creator of the line.
_SYS_ROW_CHANGE_MARKChange tracking - used when the change tracking is active. Displays if the line is new, deleted or updated. This feature is not compatible with Configurable Products or Subscriptions.
_SYS_ROW_CONFIGURATION_DATARow configuration data - technical column storing configuration details.
_SYS_ROW_TYPERow type - type of line (PRODUCT, FOLDER, etc.).
_SYS_ROW_DATAPROVIDER_NAMERow data provider name - name of the data source when the line is added from a catalog.
_SYS_ROW_TEMPLATERow template - name of the line template.

SYSTEM FIELDS

NAMEDESCRIPTION
_SYS_DATA_LOCALEData locale - quote data locale (set at quote creation).
_SYS_EFFECTIVE_DATEEffective date - can be used to store the quote effective date.
_SYS_STATUSStatus - used to store the quote status.
_SYS_EXT_QUOTE_IDExternal quote ID - reference of the quote in external system (Salesforce, MS Dynamics).
_SYS_REF_CURRENCYReference currency - reference currency (currency used for storage).
_SYS_CREATION_DATECreation date - date and the time of the quote creation.
_SYS_QUOTE_IDQuote ID
_SYS_NBR_WARNINGNumber of warnings - number of warning in the quote.
_SYS_OWNEROwner - owner username.
_SYS_NBR_ERRORNumber of errors - number of error in the quote.
_SYS_UPDATE_DATEUpdate date - date and time of the last update.
_SYS_CREATION_USERCreation user - creator username
_SYS_UPDATE_USERUpdate user - username of the last user that updated the quote.
_SYS_AMENDMENT_DATEAmendment Date - Date used in amendment workflows, especially for Agreements and Subscriptions.
_SYS_START_DATEStart Date - Date used as a contract start date, in particular for Agreements and Subscriptions.
_SYS_END_DATEEnd Date - Date used as a contract end date, in particular for Agreements and Subscriptions.

Supported Data-Types

COLUMN DATA-TYPES

Performance Quoting manages the following data-types:

TypeDescriptionPerformance Quoting JSON Public Format
BooleanBoolean value (True/False). Can be displayed with a checkbox
IntegerNumeric value with no decimal part (Max: 2147483647)
LongNumeric value with no decimal part (Max: 9223372036854775807)
Big DecimalContains a big decimal value
StringText value.
Date TimeContains a date and time.
Local DateContains only a date
BusinessA business value allows to store PROS Business data: Standard Item (SI) : this value contains 4 properties (Type (SI), Name, Description and Namespace) Dimension: this value contains 3 properties (Type (DIMENSION), Name and Description)
CurrencyContains a currency. The currency code is defined in the Quote model. Currency codes follow the ISO 4217 norm (3 characters). Then, the currency service is called to retrieve all the needed information (Description, Symbol ...)
MonetaryA Monetary value is a Big Decimal linked to a currency. When the currency is updated, the value is converted based on the conversion rates retrieved from the currency service.
PercentageContains a percentage value. The value stored is automatically formatted at runtime (ex: 0.1 is stored and 10% is displayed at runtime. In addition, at runtime, the user will enter 10 to store 0.1)
JSONThe JSON type is leveraged for example to store the CRM context. In order to browse this value, EXECUTE JSON PATH formula has to be leveraged.
XMLThe XML type can be parsed with the EXECUTE PATH formula. It allows to store data in XML format.
LocaleContains a locale (en_US, fr_FR ...)
Unit of MeasureContains a Unit of Measure
HTMLThe HTML type allows to store Rich Text in HTML format. At runtime, a WYSIWYG allows the user to edit it.
URLContains a URL. The value contains 3 properties: URL, the text displayed and the text on hover (tooltip)
Scale GridContains a scale grid structure. See Examples (How to) - Examples - Modeling Scale Pricing for more details
PeriodContains the period for the line dates.
MeasureA Monetary value is a Big Decimal linked to a Unit of Measure. When the Unit of Measure is updated, the value is converted based on the conversion rates retrieved from the UoM service.
Currency per QuantityContains a currency, a quantity, and a Unit of Measure. Currency and UoM services are called to retrieve all the needed information (Description, Symbol, etc.). Currency per Quantity cells/fields domains can only be associated with Dynamic Domains, or computed based on a Currency and Unit of Measure cell/field.
Monetary per QuantityA Monetary per Quantity value is a Big Decimal linked to a Currency per Quantity. When the Currency per Quantity is updated, the value is converted based on the conversion rates retrieved from Currency and UoM services. Some restrictions on this data type will apply, the filter and sorting will only understand values from the same UoM type. Similarly, Mass updates and User rules aren't usable with this data type. Also, views cannot be built based on filters on this data type.
Data Types Size: The max size of a data type has to be taken into account when calculations are performed. Indeed, if a calculation exceeds the max size (even during intermediate calculations), the end result could be incorrect.

MULTIPLE VALUES

From a JSON value, a list of value can be retrieved and used to define a domain for a given cell

(see Quote Designer - Data Model - Columns & Fields - Cells ). On standard integration (for example from the CRM), when a list of values has to be sent for a given field, the JSON is formatted with the "multiple" keyword.

Example from SFDC:



Example - Multiple values from SFDC

{

"Delivery": {

"multiple": [

{

"string": "Truck"

},

{

"string": "Plane"

},

{

"string": "Train"

}

]

}

}

Formula Examples

XML AND JSON MANIPULATION

Two functions allow convenient XML and JSON Manipulation. They allow extraction of data from larger XML or JSON content. Both functions always return a string value. Both will only return the first matching element in case of multiple matching. If no match is found an empty string is returned. Both functions are only able to return single leaves / final values. They cannot return a sub-structure of the tree.

Note: It takes a longer to process these formulas than others. You should use them carefully - for example, do not assign them on a cell of a line template that is going to have 10000 lines.

EXECUTEXPATH

This function executes an XPath request on an XML content and returns the first matching result as string, or an empty string.

Supported XPath request formats are XPath 2.0 and XPath 3.1

Signature: string EXECUTEXPATH(string xmlContent, string request)

Examples

Consider the following XML content:

<?xml version="1.0" encoding="UTF-8"?>

<phonebook>

<company name='PROS'>

<address>

<number>185</number>

<street>rue Galilée</street>

<zipCode>31670</zipCode>

<city>LABEGE</city>

<country>FRANCE</country>

</address>

</company>

<company name='CS' status="SSII">

<address>

<number>185</number>

<street type="alley">rue Brindejonc des Moulinais</street>

<zipCode>31670</zipCode>

<city>TOULOUSE</city>

<country>FRANCE</country>

</address>

</company>

</phonebook>

If this XML content is assigned to a string variable xmlContent, then you can use the following statements:

If this XML content is assigned to a XML variable, you can perform some request to get data.

Ex : Get the ZipCode (EXECUTEXPATH(xml,"number(/phonebook/company[@name='PROS']/address/zipCode/text())"))



Get the Street (EXECUTEXPATH(xml,"string(/phonebook/company[@name='PROS']/address/street/text())"))



EXECUTEJSONPATH

This function executes a JSONPath request on a JSON content and returns the first matching result as string, or an empty string. ExecuteJsonPath will always return a "leaf" value, and cannot be used to return a whole node - in that case it will throw an exception. JSONPath original specifications: https://goessner.net/articles/JsonPath/

Signature: string EXECUTEJSONPATH(string jsonContent, string request)

Example

Consider the following JSON content:

{

"phonebook": {

"company": {

"name": "PROS",

"address": {

"number": "185",

"street": "rue Galilée",

"zipCode": "31670",

"city": "LABEGE",

"country": "FRANCE"

}

}

}

}

If this JSON content is assigned to a JSON variable, you can perform some request to get data.

Ex: Get the ZIP code (EXECUTEJSONPATH(json,"$.phonebook.company[?(@.name=='PROS')].address.zipCode"))



There are several kinds of JSONPath requests that can be performed, as detailed below:

FORMULADESCRIPTIONAPPLIED TO
ExecuteJsonPath(string jsonContent, string request)Execute the json query in the provided json content, and sends out the result in a string formatField Cell
ExecuteJsonPathBoolean(string jsonContent, string request)Execute the json query in the provided json content, and sends out the result in a boolean formatField Cell
ExecuteJsonPathCurrency(string jsonContent, string request)Execute the json query in the provided json content, and sends out the result in a currency formatField Cell
ExecuteJsonPathDate(string jsonContent, string request)Execute the json query in the provided json content, and sends out the result in a date formatField Cell
ExecuteJsonPathDatetime(string jsonContent, string request)Execute the json query in the provided json content, and sends out the result in a date time formatField Cell
ExecuteJsonPathDecimal(string jsonContent, string request)Execute the json query in the provided json content, and sends out the result in a decimal formatField Cell

VSUM_BY AND VSEARCH

Both functions aim at setting a cell value for a "current line". To set the value, the engine will scan "other rows" based on an criteria between columns to find matching rows. A formula is applied on matching rows column values. Criteria is between one column of current row, and one column of other rows. Both columns should share a same type. Equality is the only handled criteria. It is case-sensitive. A list of line templates can limit the other rows scope. The list can be null and will be

ignored with possible performance issues.

Important: These 2 functions are very impactful on the global performance of the system.

Administrators should be very careful when using them and should get in touch with Performance Quoting technical experts in order to ensure the viability of any design relying on them.

VSEARCH

VSEARCH retrieves a value on another row. If more than one row matches an error is returned. Signature: VSEARCH(colCurrent, colOther, formula, templates).

Formula is executed on the other matching row. It can only target matching row cells, matching row parent cells, and fields.

Example: The example below is an illustration of how VSEARCH can be used to find the Discount value of a given food category.

LINE TEMPLATEITEMCATEGORYTYPEDISCOUNTLISTUNITPRICENETUNITPRICE
LTSpecific_1GlobalDiscount1Fruits10%
LTSpecific_1GlobalDiscount1Consumables20%
LTProduct_1ApplesFruits10090 =(1- VSEARCH(Type,Category,Discount,LTSpecific_1) )*ListUnitPrice
LTProduct_1BananasFruits200180 =(1- VSEARCH(Type,Category,Discount,LTSpecific_1) )*ListUnitPrice
LTProduct_1Paper PlatesConsumables300240 =(1- VSEARCH(Type,Category,Discount,LTSpecific_1) )*ListUnitPrice

In this example, for each NetUnitPrice cells belonging to LTProduct_1, the engine searches through lines belonging to LTSpecirfic_1. It finds the one whose 'Category' value equals the current 'Type' value. It retrieves the Discount value of the matching row.

VSUM_BY

VSUM_BY sums a value on other rows.

Signature: VSUM_BY (colCurrent, colOther, formula, templates).

Formula is executed on the other matching rows. It can only target matching row cells, matching row parent cells, and fields.

Example: The example below is an illustration of how VSUM can be used to sum the values of products of a given Food Type.

LINE TEMPLATEITEMCATEGORYTYPELISTUNITPRICETOTAL CATEGORY PRICE
LTSpecific_1GlobalDiscount1Fruits250 = VSUM_BY(Category, Type, ListUnitPrice, LTProduct_1)
LTSpecific_1GlobalDiscount1Consumables300 = VSUM_BY(Category, Type, ListUnitPrice, LTProduct_1)
LTProduct_1ApplesFruits100
LTProduct_1BananasFruits150
LTProduct_1Paper PlatesConsumables300

In this example, for each TotalCategoryPrice cells belonging to LTSpecific_1, the engine searches through lines belonging to LTProduct_1. It finds all rows whose 'Type' value equals the current 'Category' value. It sums the ListUnitPrice value of matching rows.

Aggregation Lines & Views

MODELING AGGREGATION LINES AND VIEWS

The aggregation lines let you automatically generate summary rows in a quote. These rows group together existing quote lines that share common characteristics - such as brand, color, or category - and display consolidated totals for each group.

Aggregation lines are fully managed by the system and are refreshed automatically as the quote changes.



CREATING AN AGGREGATION LINE TEMPLATE

The first step to use aggregation lines consists of the creation of a line template.

An aggregation line template is a special type of line template. It defines which lines to aggregate and how to group them.

The creation of this type of line template just requires to select AGGREGATION_LINE as the type.

Aggregation line templates

  • Only one AGGREGATION_LINE template is allowed per quote model.
  • Only the Update permission is available for this template type. Create and Delete permissions are not available as lines are managed automatically by the quote.

CONFIGURING GROUPING RULES

The second step consists of defining which lines will participate to the aggregation and on which criteria.

The grouping rule defines how lines will be grouped together. It consists of two parts: an optional filter to restrict which lines are considered, and an ordered list of grouping variables.

In order to define the aggregation rules for a given AGGREGATION_LINE template, proceed as follows:

  1. In the Quote Designer, navigate to Data Model in the main menu bar and select Column and Lines.
  2. Select the AGGREGATION_LINE Template that you have created at the previous step above.
  3. In the left part of the designer, access the Aggregation Definition section and click on Add.

  4. The first screen allows you to specify the scope of the lines that will be aggregated by defining rules to filter the content of the quote. In the below example, only the lines in the quote of type PRODUCT or SPECIFIC will be part of aggregations. This step is optional. If no rule is defined, then all quote lines are included in aggregations.

    Period-related variables cannot be used in the filter.

  5. Click Next.
  6. The second screen allows you to define the columns that will drive the aggregation. In the example below, the lines filtered down in the first screen will be aggregated per brand:

    • Only TEXT and BUSINESS types of variables can be used for the grouping.
    • Period-related or multiple-value variables are not allowed.
    • The number of grouping variables must be between 1 and 3 (maximum 3 levels of aggregation).
    • The order in which the variables are selected determines the levels of grouping hie

      Save.

  7. When the rule is properly defined, then it is visible in the left part of the Quote Designer:

CONFIGURING AN AGGREGATION VIEW

In order to show aggregation lines in the quote, the last step consists of declaring a grid widget and associating a quote view where aggregation lines are visible.

In the view you use to display aggregation lines in your quote grid, make sure to set

the Aggregation Line visibility to Aggregation line only or All lines to make aggregation lines visible:



MODELING ADDITIONAL AGGREGATION LINES FEATURES

The following features are optional but provide additional capabilities linked to aggregation lines.

Configuring the Filter Action

Once aggregation lines are in place in a dedicated grid based on a dedicated view, you have the opportunity to define an action to display in another grid / view the lines participating to a specific aggregation line.

More in details, imagine two grids side-by-side in the quote interface: one is displaying aggregation lines only, whereas the other shows only standard quote lines. With the Apply Aggregation Line

Filter action defined, you can select an aggregation line and click on the action.

The grid displaying only standard quote lines is then filtered down to show only the lines participating to this aggregation line.





The Apply Aggregation Line Filter action must be explicitly configured to be available to users. You can add it to grid widget actions and pinned actions.

In order to configure this action, proceed as follows:

  1. In the Quote Designer, navigate to User Interface in the main menu bar and expand the

    Actions section in the left part.

  2. Open the Filter repository of actions and click on + to add a widget.
  3. Give it a name and description and select Apply Aggregation Line Filter as the type. Optionally set permissions. Click on Add.

  4. Set the view showing standard quote lines that participated to the aggregation:

  5. Click on the link Go to View Definition.

  6. In the Aggregation Line visibility section in the right part, make sure that No aggregation line is selected.

  7. The last step consists of making the action available on the corresponding grid.

Configuring Interactions with Quote Lines

Aggregation lines are linked with standard quote lines in the sense that the aggregated data is coming from those quote lines. Any change on quote lines participating to the aggregation could thus impact aggregation lines. Conversely, in addition to this one-way relationship, you have means to perform a change on an aggregation line that could trigger an update of the associated quote lines. A specific formula (PARENT_AGGREGATION) must be used on the quote line participating to the aggregation so it can be updated if a specified column of the aggregation line changes (See an example here).

To configure such a scenario in the Quote Designer, you must materialize the parent relationship of a quote line template with an aggregation line template and specify which column of the aggregation line should update the corresponding column of its parent quote lines.

We assume here that you already have a line template for quote lines and one for aggregation lines and that each have a column representing the same type of data (e.g. discount).

In the Quote Designer, proceed as follows:

  1. Navigate to Data Model in the main menu bar and select Column and Lines.
  2. Select the quote line template representing the lines participating and select the cell to update from aggregation lines (e.g. discount)

  3. In the left part, navigate to the Calculation section and click Edit.
  4. Enter the formula with the line template of the aggregation line and the column on the aggregation line template triggering the update of quote lines:

    Save.

Thanks to this formula, anytime you will set a value in this column of the corresponding aggregated line (e.g. discount), the corresponding cell of the quote lines participating to the aggregation will be updated with the same value.

For example:



The update is possible only from the lowest level in the hierarchy of aggregation lines. It means that if you have more than one level of aggregation, then only the level of the lowest children can be leveraged for the modification of quote lines.