Groups

You can use groups to make record definition easier for tables such as Transportation Policies. For example, assume you have two groups - one (called "All NE DCs") has all North East DCs as members, the other (called "All NE CZs") has all North East Customers as members. You can then define a Transportation Policies record where the Source is All DCs and the Destination is All CZs. When the model is run, this record is expanded to all the valid combinations of Distribution Centers to Customers.

When creating your model, try to create groups that result in appropriate expanded results. This will improve model expansion and solving time.

Once you create groups, you can use them when defining records in tables. Groups are available in the appropriate column drop down list.

As you create groups, they are added to the navigation node for that group type.

A special case for groups is Product substitution, where Network Optimization can satisfy demand using any of the products in a specified group.

Group precedence

There are cases where you should be aware of how groups are evaluated when populated in table records. One concerns the order in which records are used when they contain one or more groups compared to ungrouped records. The other is when groups, dynamic filters and record names have the same value.

Grouped vs. ungrouped records

When running a model, records in tables that support groups/filters are evaluated to prevent duplicate records from being written to the input tables. The basic logic is that

  • Records with fewer groups take precedence over grouped records, since they are more specific, and

  • When there are records with identical groups, the last record in the database (as displayed in the table in the UI) is used.

Consider the following records in Transportation Policies. (ALL_DCs) and (ALL_Products) are filters, "PrimaryCust" is a group and "LaneCost" is a Lane Cost definition:

Source Destination Product Mode Variable Transportation Cost
DC1 CZ1 Product1 Mode1 9
(ALL_DCs) PrimaryCust (ALL_Products) Mode1  
(ALL_DCs) PrimaryCust (ALL_Products) Mode1 0
(ALL_DCs) PrimaryCust (ALL_Products) Mode1 LaneCost
(ALL_DCs) CZ3 (ALL_Products) Mode2 5.5

The first and last records take precedence over the 3 in the middle, as they have less groups in the definition and are therefore more specific. The 3 records in the middle have the same groups defined; as a result, the third record (the one with "LaneCost" as the Variable Transportation Cost) is used.

Group, filter and record name precedence

Coupa recommends that you do not use the same name for your groups, filters and record names. For example, assume you have a Site with Name = "Plant", a Site group called "Plant" with 3 members and a Site filter called "Plant" that returns 2 records. This can cause unexpected results when you run scenarios. If you do have groups, filters and record names with the same value, be aware that they will be used in the following order:

  • Group name has first priority
  • Filter name has second priority
  • Individual record name has third priority

Working with groups

You can create groups from the Groups Editor or from the table containing the records you want to group, such as Sites or Products.

Last modified: Wednesday March 05, 2025

Is this useful?