Product Affinity (Plan Item Level)
The Product Affinity between different products on the same order allows the products to be grouped and fulfilled together through the execution of a single plan item. It can be termed as an order fulfillment optimization.
Generally, a plan item corresponding to an order line specifies a product to be fulfilled in the order. If an affinity is specified between the products that are either being fulfilled implicitly as mandatory children, or ordered explicitly as separate order lines, the individual plan items are grouped together into a single affinity plan item during plan optimization in AOPD. Thus, the corresponding products are fulfilled through the execution of this single plan item.
The product affinity is specified in the product catalogue in one of the following two different ways:
- By specifying the affinity type and action specific plan fragments attributes in the AffinityGroup tab in PRODUCT repository
- By assigning the plan fragments using ProductHasXXPlanFragment relationships and specifying the affinity specific relationship attributes
The XX in relationship name refers to actions, such as PROVIDE, CEASE, UPDATE and CANCEL.
AOPD recognizes the affinity and combines the plan items corresponding to the order lines depending upon the following two main conditions:
- If the plan fragments defined in the product catalogue for the ordered products are the same
- If the affinity type defined in the product catalogue for the ordered products is the same (InLink or CrossLink)
UDF Data Handling
Affinity groups together plan items for different order lines into a single plan item. AOPD is also responsible for populating the UDFs that are associated with these plan items. The potential exists for the same UDF to be present on different order lines, all values must be available in the plan and the relevant order lines identified.
The following data handling rules must be implemented:
Sr No | Rule | Outcome | Sample Order Line Data | Sample Plan Item Data |
1 | UDF exists on only one of the order lines being affinity grouped | UDF name is the original UDF name concatenated with the order line number. Value is the original UDF value. | Order Line = 1 UDF Name = ServiceID UDF Value = 1234 Order Line = 2 Does not contain ServiceID UDF | UDF Name = ServiceID:1 UDF Value = 1234 |
2 | UDF exists on more than one of the order lines being affinity grouped, but not all order lines. UDF value is the same on all order lines. | UDF name is the original UDF name concatenated with the order line number as a comma-separated list. Value is the original UDF value. | Order Line = 1 UDF Name = ServiceID UDF Value = 1234 Order Line = 2 UDF Name = ServiceID UDF Value = 1234 Order Line = 3 Does not contain ServiceID UDF | UDF Name = ServiceID:1,2 UDF Value = 1234 |
3 | UDF exists on all order lines being affinity grouped. UDF value is the same on all order lines. | UDF name is the original UDF name. Value is the original UDF value. | Order Line = 1 UDF Name = ServiceID UDF Value = 1234 Order Line = 2 UDF Name = ServiceID UDF Value = 1234 Order Line = 3 UDF Name = ServiceID UDF Value = 1234 | UDF Name = ServiceID:1,2,3 UDF Value = 1234 |
4 | UDF exists on more than one order line being affinity grouped. UDF value is different on different order lines. | UDF is created for each unique UDF value, with the corresponding name containing the original UDF name concatenated with the order line numbers as a comma-separated list. | Order Line = 1 UDF Name = ServiceID UDF Value = 1234 Order Line = 2 UDF Name = ServiceID UDF Value = 1234 Order Line = 3 UDF Name = ServiceID UDF Value = 6789 | UDF Name = ServiceID:1,2 UDF Value = 1234 UDF Name = ServiceID:3 UDF Value = 6789 |
TIBCO Fulfillment Order Management supports the following types of product affinities: