ProductDependsOn and ProductRequiredFor Relationships

ProductDependsOn relationship: The ProductDependsOn (PDO) is a product dependency relationship to sequence the associated target and source plan items. The PDO relationship allows flexible product decomposition. This establishes a relationship between two products and is evaluated during the decomposition process.

ProductRequiredFor relationship: The ProductRequiredFor (PRF) relationship is a prerequisite relationship for a product to add a target plan item.

The ProductDependsOn (PDO) and ProductRequiredFor (PRF) relationships enable you to create product offers without defining sequencing for the products. You can create ProductDependsOn relationship to lower level products instead of using ProductComprisedOf links.

The PDO functionality provides a base behavior that permits to sequence plan items corresponding to products related by PDO when:

  1. PDO source and PDO target product instances have no LINKID defined.
  2. PDO source and PDO target product instances have LINKID defined and have same LINKID value.

The feature can extend the base behavior and sequence additionally plan items corresponding to products related by PDO when:

  1. PDO source product instance has LINKID defined and PDO target product instances have no LINKID defined.
  2. PDO source product instance has no LINKID and target product instances have a LINKID defined.

A PDO source product instance can relate to multiple PDO target product instances using base and extended cases so that following use cases are possible:

  • A PDO source product that has a LINKID defined and is related to a PDO target instances that has same LINKID defined shall be also related to PDO target product instances that have no LINKID defined.
  • A PDO source product that has no LINKID defined and is relate to a PDO target instance that has no LINKID defined shall be also related to PDO target product instances that have a LINKID defined. By default for PDO sequencing, the base behavior is enabled. To enable the extended behavior set the "EnableBiDirectionalLinkID" to true,by default it is false.

By default only one instance of required product per LinkID is allowed in plan. If there is a need to override this behavior to include multiple instances of required product with the same LinkID, then the AOPD flag "AllowMultipleRequiredProducts" should be set to true. By default it is false.

Note: The PRF adds the required plan item without dependency, if you create only PRF.

The PDO and PRF relationships have the following two relationship attributes:

  • Source Action
  • Target Action

The PRF relationship also has the third relationship attribute named ocvValidationReq. This is a boolean flag for validation. Based on validation flag, AOPD adds product configured with the PRF relationship in the plan.

The PDO relationship also has the third relationship attribute named 'sequenceDirection'. The valid values of this attribute are either 'AFTER' or 'BEFORE'. This attribute will be paired with the provided values of SourceAction and TargetAction. For each SourceAction and TargetAction, there will be a value defined for the sequenceDirection attribute.

  • A 'BEFORE' sequence direction will create a dependency of the target product on the source product.
  • An 'AFTER' sequencing direction will create a dependency of the source product on the target product. This is the default.

If no value is provided in the sequenceDirection attribute, the attribute defaults to 'AFTER," and the functionality works as it did before the introduction of sequenceDirection relationship attribute. This allows backward compatibility.

The value defined in the sequenceDirection attribute will create a dependency of the target product on the source product or it will create a dependency of the source product on the target product.

If a PDO Source Product has a dependency on child products, then those child products will have a dependency on the PDO target product by default. If there is a need to override this default behavior and set the dependency of the source product directly on the target product, then value of the flag "IgnorePDOFirstChildDependency" needs to be set to true in the AOPD configuration file. By default this value is false.

Note: ProductDependsOn relationship can be made conditional using XPATH statement stored in optional product characteristic DECOMPOSITION_REQUIRED_FOR.

ProductRequiredFor relationship can be made conditional using XPATH statement stored in optional product characteristic DECOMPOSITION_DEPENDS_ON.

Source and Target Attribute Values

The following table describes the different possible combinations:

SourceAction TargetAction
PROVIDE PROVIDE
PROVIDE UPDATE
PROVIDE CEASE
PROVIDE CANCEL
UPDATE PROVIDE
UPDATE UPDATE
UPDATE CEASE
UPDATE CANCEL
CEASE PROVIDE
CEASE UPDATE
CEASE CEASE
CEASE CANCEL
CANCEL PROVIDE
CANCEL UPDATE
CANCEL CEASE
CANCEL CANCEL

You can also define source action and target action to match the following combination using uppercase, comma separated values. For example:

SourceAction: PROVIDE,PROVIDE,UPDATE,CEASE,CANCEL,CEASE

TargetAction: UPDATE,CANCEL,PROVIDE,UPDATE,PROVIDE,UPDATE

You can also define sequenceDirection to match the following combination using uppercase, comma separated values. For example:

SourceAction: PROVIDE,PROVIDE,UPDATE,CEASE,CANCEL,CEASE

TargetAction: UPDATE,CANCEL,PROVIDE,UPDATE,PROVIDE,UPDATE

SequnceDirection: AFTER,BEFORE,AFTER,BEFORE,BEFORE,AFTER

Note: There cannot be any space between the commas and the values.

Dependency between planitems occurs when both the following occur:

  • The sequenceDirection attribute has valid values, i.e. either 'AFTER' or 'BEFORE.'
  • The number of sequenceDirection attributes match with the number of Source Actions and the number of Target Actions.
Note: There is only one target action for any given source action.

The following table explains the PDO and PRF relationships and their impact on orders and plans.

Product Configuration Order Plan
Product A has a PRF relationship with Product B having source action and target action PROVIDE and PROVIDE OL1=ProductA Two plan item (A and B) do not depend on each other
Product A has PRF and PDO relationship with B and PRF and PDO has source action and target action PROVIDE and PROVIDE OL1=ProductA(Action=Provide) OL2=ProductB(Action=Provide) planItemA depends on planItemB
Product A has PRF and PDO relationship with B and PRF and PDO has source action and target action PROVIDE and PROVIDE OL1=ProductA planItemA depends on planItemB
Product A has PDO relationship with B having source action and target action PROVIDE and PROVIDE OL1=ProductA(Action=Provide) OL2=ProductB(Action=Provide) planItemA depends on planItemB

The following table explains PDO with Sequence direction and their impact on orders and plans.

Product Configuration Order Plan
Product A has PDO relationship with B having SA & TA as PROVIDE & PROVIDE. SequenceDirection is AFTER. OL1=ProductA(Action=Provide) OL2=ProductB(Action=Provide) Two planitem having planItemA depends on planItemB
Product A has PDO relationship with B having SA & TA as PROVIDE & PROVIDE. SequenceDirection is BEFORE. OL1=ProductA(Action=Provide) OL2=ProductB(Action=Provide) Two planitem having planItemB depends on planItemA
Product A has PDO relationship with B having SA & TA as PROVIDE & PROVIDE. SequenceDirection is AFTER. Product B has PDO relationship with C having SA & TA as PROVIDE & PROVIDE and SequenceDirection is BEFORE. OL1=ProductA(Action=Provide) OL2=ProductB(Action=Provide) OL3=ProductC(Action=Provide) Three planitems having planItemA depends on planItemB and planItemC depends on planItemB
Product A has PDO relationship with B having SA & TA as PROVIDE & PROVIDE. SequenceDirection is BEFORE. Product B has PDO relationship with C having SA & TA as PROVIDE & PROVIDE and SequenceDirection is AFTER. OL1=ProductA(Action=Provide) OL2=ProductB(Action=Provide) OL3=ProductC(Action=Provide) Three planitems having planItemB depends on planItemA and planItemB depends on planItemC