6Product Rules

This chapter contains the following:

Overview of Product Rules

Before you can use product rules in Oracle Fusion Product Hub, you must complete this task in the Setup and Maintenance work area.

Task Description

Manage Item Rule Sets

Use this task to create validation, assignment or composite rule sets.

In the Setup and Maintenance work area, go to the following:

  • Offering: Product Management

  • Functional Area: Product Rules

  • Task: Manage Item Rule Sets

Rules define integrity constraints on the attributes of items and structures. You can define integrity constraints on operational as well as on user-defined attributes. Integrity constraints can implement business rules and are created through use of the rules framework. For example, a rule might be that the minimum speed must be less than maximum speed.

Rule sets gather multiple rules together and are associated with a source of attributes, such as attribute groups, item classes, change types, or structure types. The specific source (such as an attribute group name) is defined as part of the rule set. Rule sets also list valid business entities, such as an items, item suppliers, or item revisions. The association of a rule set with a specific source of attributes enables the rule expressions entered in rules in the rule set to be validated by checking for allowable entities.

Each attribute is referenced by its business entity and attribute group name followed by the attribute name. For example, [Item].[Physical Attributes].[Unit Volume]. In this example, [Item] indicates that it's an item attribute; [Physical Attributes] is the display name of the attribute group, and [Unit Volume] is the display name of the attribute.

Keep in mind that:

  • If the rule set is associated with an attribute group, then only the attributes in that group can be used in its rules.

  • If the rule set is associated with an item class, then only the attribute groups valid for that item class can be used in its rules.

You can set the status of a rule set draft. You can keep a rule set in draft status until the drafting of its rules is complete. If a rule set is in draft status, the rule set isn't triggered as regular transactions are completed. During this time, you can run rule impact analysis to simulate and study the impact of the rule sets on a selected set of existing items, enabling you to make necessary changes. While performing the simulation, the draft rule sets along with other active rule sets are applied on the selected set of items, and the impact is captured by an asynchronous scheduled process.

The rule sets associated with new item requests and change order types are used to generate identifying numbers for new item requests and change orders.

The types of rule sets and rules are as follows:

  • Assignment

  • Validation

  • Blending

  • Composite

Assignment

An assignment rule set determines the value of an item attribute based on the specified condition.

An example of an assignment rule, expressed in ordinary English, is: Lead Percent is Total Lead Mass divided by Unit Weight.

After you create a rule, you validate and save it. Then, if necessary, enter subsequent rules. Rules are executed in the order of their sequence in the rule set. Therefore, if an attribute's expression depends on a previously calculated value, you must ensure that the previous value appears ahead of the attribute, in the rule, and is therefore computed first. Generally, rule sets for assignments should be executed before rule sets for validations, so that you can write validation conditions against assignment results that you're confident are valid.

Validation

A validation rule set validates conditions based on attribute values defined for items. Validation rule sets are typically used to model predefined business rules on items.

Validation rules restrict items that can be added as related items to an item, and restrict the relationship types that can be allowed for items. This restriction could be based on item or item revision-level attributes which could be operational attributes or extensible flexfields.

Test the validations by going to the Item Update page and editing the appropriate attribute groups. Updated values are validated against the rules, and error messages appear on the screen.

The severity of a validation rule determines what action is taken if the validation fails. The severity levels, and their resulting actions, are as follows:

Severity

Warning

The business entity can still be saved. An explanatory message, which you define, is displayed to the end user. The user must acknowledge the warning message to save the item.

Needs Approval

The attribute data requires that a change order be created for the business entity.

Reject

The business entity can't be saved until the attribute validation passes.

The following behavior for validation rules occurs during a runtime end user session:

  • Rules are only run for attributes that have changed, except in the following circumstances.

    • The item's item class has been changed

    • The rule is a valid-component-type rule

    • The rule uses Context attributes, such as Context.ExecutionDateTime

    • The rule uses one of the following functions:

      • exists()

      • loopSum()

      • conditionalLoopSum()

      • assignedToCatalog()

      • assignedToOrg()

  • If a validation with a severity of Reject fails, then the entire business entity containing the attribute is rejected.

  • If a validation with a severity of Needs Approval fails, then a change order must be submitted and approved.

    • All related attributes also require a change order. In this context, related attributes are those that are used in any validation that uses an attribute that requires a change order. In other words, if any attribute requires a change order, then all the updated attributes in that validation rule (those specified in the IF Expression and Validation Condition fields of the rule) must also be part of the same change order.

    • If the attributes computed in assignment rules are used in subsequent rules, then they can form a chain of dependencies. In order to ensure that the data remains consistent, the change order requirement is propagated along this dependency chain.

    • The change order requirement propagates only along updated attributes. If an attribute isn't updated, then it should not affect other attributes.

Blending

When there are multiple spoke systems providing item data, blending rules are applied during import, to control which item attribute values are imported into production from the multiple spoke systems, based on the blending priority for each spoke system that you define in the blending rules.

Composite

Composite rule sets can contain both assignment and validation rule sets. Composite rule sets can be used to aggregate rule sets that operate on different attribute groups and item classes.

You create a composite rule set on the Manage Rule Sets page. To define a composite rule set of mixed type, ensure it contains both assignment and validation rule sets. Set the type to Mixed, enabling the creation of a rule set that contains both assignment and validation rule sets. Then add assignment and validation rule sets to the composite rule set.

You can define item rules to enforce integrity constraints on the attributes of items and structures.

To define item rules, you must :

  1. Define rule sets to contain the rules.

    Rule sets can be used for assignments, validations, or blending.

  2. Define rules in the rule sets.

    The procedure for defining rules differs among assignment, validation, or blending rule sets.

  3. Enable the rule sets for execution.

The details for these procedures follow.

Defining Rule Sets

The table following these steps provides details about the fields for defining rule sets.

  1. In the Product Information Management work area, select the Manage Item Rule Sets task.

  2. Select Create from the Manage Rule Sets task bar.

  3. In the Create Rule Set dialog box, enter a name and optional description.

  4. Select a value for Composite.

  5. Select a value for Type, to determine the type of the rule set.

  6. In the Association Type field, select the type of association to use for determining valid attribute expressions.

  7. In the Association Name field, select a name to qualify the association type.

  8. Select Draft, so that the rule set won't be triggered until you're satisfied with its behavior.

  9. Click Save and Continue.

  10. Create one or more rules within the rule set. Unless you selected Yes for Composite, you can only create rules of the Type that you chose.

    Continue to the procedure for creating assignment or validation rules.

Rule Set Field Purpose

Display Name

Visible name for the rule set. You can modify this name later.

Internal name

Generated automatically when you leave the Display Name field. May contain only letters, digits, underscores, and periods. Can't be changed after the rule set is created.

Description

Optional description of the rule set.

Composite

Values are Yes or No.

Composite rule sets contain other rule sets, either assignment type, validation type, or both. You can also use composite rule sets to aggregate rule sets that operate on different attribute groups and item classes.

You don't select associations for a composite rule set. The associations belong to the rule sets contained in the composite set.

If you select Yes, then you can select the rule set type as Mixed, so that the composite set can contain a mixture of assignment and validation rule sets.

Blending rule sets can't be composite.

Type

The type of the rule set, which determines the type of rules that can be created in the set. You can't change the type of a rule set after creating it.

The available types are:

  • Assignments

  • Validations

  • Blending

  • Mixed

Association Type

Associates the rule set with a set of attributes. When combined with an association name, the association type determines the set of attributes that are considered valid in the rule expressions that you enter.

The available association types are:

  • Attribute group: Only the attributes in the specified attribute group can be used in expressions in the rule set.

  • Item class: Only the attributes in the attribute groups that are valid for the specified item class can be used in expressions in the rule set.

  • Change order type or New item request: Only the header attributes (including descriptive flexfields) of the change order or new item request can be used.

If Type is Blending, then change order type and new item request aren't available.

Association Name

The name of the specific associated type that's the source of valid attributes for rule expressions. For example, if you selected an association type of Attribute group, then search for and select the name of an attribute group.

Draft

Select to put this rule set into Draft status. Draft status prevents the rule from being triggered during item transactions, and allows rule impact analysis on the rule set.

Note: You can't define a rule independently of a rule set. The rule set provides essential contextual data for the rule.

Defining Item Assignment Rules

Define assignment rules to set the values of item attributes based on conditions that you specify.

  1. Create or open a rule set of type Assignments.

  2. In the Rules tab of the Edit Rule Set page for the rule set, select Create from the Actions menu.

  3. In the Create Rule dialog box, enter an integer in the Sequence field.

  4. Provide a name and description for the rule.

  5. Select a Return Type.

  6. If you selected Return Type as Generic, Target Business Entity is enabled and required.

    1. Select a value for Target Business Entity. Target Attribute Group is then enabled and required

    2. Select a value for Target Attribute Group. Target Attribute is then enabled and required.

    3. Specify a value for Target Attribute.

  7. The following table provides details about the fields defining the header level of the rule. You can modify these values after the rule has been created.

    Rule Field Purpose

    Sequence

    An integer. This sequence number determines the order in which the rule will be triggered when the rule set is triggered.

    Name

    Name for the rule. You can modify this name later.

    Description

    Optional description of the rule.

    Return Type

    The result of the assignment defined by the rule. The available return types are:

    • Catalog category: Assigns an item to a catalog category.

    • Generic: Assigns a value to an attribute.

    • Item description: Assigns a description to an item.

    • Item number: Assigns an item number to an item.

    • Organization: Assigns an item to an organization.

    Target Business Entity

    If Return Type is Generic, a business entity must be specified, to provide an attribute association for validating expressions. The entities are:

    • Item

    • Revision

    • Supplier

    A rule can assign values to revision attributes or supplier attributes based on conditions on item attributes, but the reverse isn't true. That is, a rule can't include revision attributes or supplier attributes in a condition for a rule whose target attribute is an item attribute.

    Target Attribute Group

    The attribute group for the target business entity. Only enabled if Return Type is Generic.

    Target Attribute

    The attribute for the target attribute group. Only enabled if Return Type is Generic.

  8. Click OK to accept the header fields.

  9. In the Details section, enter rule expressions in the Expression fields described in the following table.

    To ensure that valid attribute group and name expressions are used in rules, you can right-click in one of the expression fields and select Insert Attribute, then use the Insert Attribute dialog to populate attribute expressions into the rule fields.

    Rule Field Purpose

    Primary If Expression

    Optional. An attribute expression that must evaluate to true or false, which determines whether the assignment is to be performed. You can enter true or false as a valid expression. This field can be empty if an expression isn't required.

    THEN Expression

    Required. Composed of:

    • Secondary If Expression: A condition that further determines whether the assignment is to be performed. This field can be empty if an expression isn't required.

    • Return Value: The value resulting from the assignment. Agrees with the return type that you specified.

    You can mange additional rows of the THEN Expression with the edit controls on the task bar. The rows are evaluated in the sequence of the expression rows. The execution is halted when the first THEN expression evaluates to True.

    User Message

    Optional. Displayed to the end user when the rule successfully assigns a value to the target attribute. You can select Hide user message to retain the definition of the message while suppressing it from runtime display.

    It's not necessary to check whether attribute values are null (which includes division by zero). Null values normally cause the assignment to be ignored, unless you explicitly want to test for a null value with the isnull() function. This feature facilitates incremental processing of an item, where the item might not be completely filled in until the end of a process.

  10. Click Validate to validate the expressions in the rule. A message informs you whether there is an error, or confirms that the rule definition is valid.

  11. Define more rules in the rule set, as needed. You can modify the execution order of the rules by editing their sequence numbers.

  12. Click Save to save the rule set.

  13. Add the rule set to the master rule set, to enable its operation during item transactions.

Defining Item Validation Rules

Define validation rules to validate the values of item attributes based on conditions that you specify.

  1. Create or open a rule set of type Validations.

  2. In the Rules tab of the Edit Rule Set page for the rule set, select Create from the Actions menu.

  3. In the Create Rule dialog box, enter an integer in the Sequence field.

  4. Provide a name and description for the rule.

  5. Select a level of Severity for the action produced by the rule if the validation fails. Severity only applies to validation rules.

    Select Valid Component Rules only if your rule is validating component types, using the component_type() function.

  6. The following table provides details about the fields defining the header level of the rule. You can modify these values after the rule has been created.

    Rule Field Purpose

    Sequence

    An integer. This sequence number determines the order in which the rule will be triggered when the rule set is triggered.

    Name

    Name for the rule. You can modify this name later.

    Description

    Optional description of the rule.

    Severity

    The severity of the action that's produced if the validation fails.

    • Warning: The explanation message is displayed to the user, but the business entity can still be saved

    • Needs Approval: The data requires that a change order be created.

    • Reject: The business entity can't be saved until the validation passes. You can increase the severity of this validation result by selecting Stop further processing when rejected.

  7. Click OK to accept the header fields.

  8. In the Details section, enter rule expressions in the Expression fields described in the following table.

    To ensure that valid attribute group and name expressions are used in rules, you can right-click in one of the expression fields and select Insert Attribute, then use the Insert Attribute dialog to populate attribute expressions into the rule fields.

    Rule Field Purpose

    If Expression

    Optional. An attribute expression that must evaluate to true or false, which determines whether the validation is to be performed. The expression must evaluate to true for the validation to occur. You can enter true or false as a valid expression. This field can be empty if an expression isn't required.

    Validation Condition

    Required.

    This condition is evaluated when the result of the If Expression is true. When the validation condition evaluates to false, then the validation fails, and the action for the selected severity is executed. The User Message is also displayed, for failures.

    User Message

    Optional. Displayed to the end user only when the Validation Condition evaluates to false.

    It's not necessary to check whether attribute values are null (which includes division by zero). Null values normally cause the validation to be ignored, unless you explicitly want to test for a null value with the isnull() function. This feature facilitates incremental processing of an item, where the item might not be completely filled in until the end of a process.

  9. Click Validate to validate the expressions in the rule. A message informs you whether there is an error, or confirms that the rule definition is valid.

  10. Define more rules in the rule set, as needed. You can modify the execution order of the rules by editing their sequence numbers.

  11. Click Save to save the rule set.

  12. Add the rule set to the master rule set, to enable its operation during item transactions.

Enabling Rule Sets and Rules

Before a rule can run, you must enable the rule set that contains it. To enable a rule set, you must assign it to the master rule set, either directly, or by adding it to a rule set that's included in the master rule set.

The master rule set (named MASTER_RULE_SET) is a predefined rule set that contains other rule sets, which can in turn include other rule sets. In each composite rule set, a sequence number controls the order in which its included rule sets are to be executed at run time.

  1. On the Manage Rule Sets page, search for MASTER_RULE_SET and edit it.

  2. On the Edit Rule Set page for MASTER_RULE_SET, on the Included Rule Sets tab, select Add from the Actions menu.

  3. In the Select and Add: Rule Sets dialog box, search for your rule set by name, or by one of the other fields that define a rule set.

  4. Select your rule set from the search results, and click OK.

  5. Your rule set appears in the list of rule sets included in the master rule set, with the next available sequence number, which determines the order of execution of the included rule set. You can select Edit Sequence from the Actions menu to modify the sequence.

  6. Click Save to save the master rule set.

  7. On the Edit Rule Set page for your own rule set, the Rule Sets Where Included tab shows that your rule set is included in the master rule set.

Example of Creating an Item Rule Set and Rules

In this example, you create rule sets and rules to implement integrity constraints for a computer motherboard.

The following table summarizes the attribute value assignments required for this scenario.

Attribute Constraint

Lead Percent

Is Total Lead Mass divided by Unit Weight

Sellable Date (date when item can be sold)

Is 10 days after the Availability Date

The following table summarizes the attribute value validations required for this scenario.

Attribute Constraint

Minimum CPU Speed (in MHz)

Must be less than Maximum CPU Speed

Purchasable

If set to Yes, then a value for List Price must be set

Unit Height

Can't change by more than 3% without requiring approval

Task Summary

To implement the above constraints, complete the following tasks:

  1. Create an assignment rule set.

  2. Create assignment rules.

  3. Create a validation rule set.

  4. Create validation rules.

  5. Create a composite rule set.

  6. Add the composite rule set to the master rule set.

Create an Assignment Rule Set

In general, rule sets that perform assignments should be executed before validations, so that validation rules can ensure that the results of the assignments are valid.
  1. In the Product Information Management work area, select the Manage Item Rule Sets task.

  2. Select Create from the Manage Rule Sets task bar.

  3. In the Create Rule Set dialog box, enter a name and optional description.

    The internal name won't be changeable after the rule set is created.

  4. For Composite, select No.

  5. For Type, select Assignments.

  6. For Association Type, select Item Class.

  7. For Association Name, select Chemicals.

  8. Click Save and Continue.

    The Edit Rule Set page shows a rule set with the specified attribute context, but no rules yet. All the attribute groups in the selected item class are available for us in item rules.

Create Assignment Rules

The assignment to be made by the first rule is:

  • Lead Percent is Total Lead Mass divided by Unit Weight

  1. In the Rules tab of the Edit Rule Set page, select Create from the Actions menu.

  2. In the Create Rule dialog box, enter or select the values shown in the following table.

    Field Value

    Sequence

    10

    Name

    Lead Percent

    Description

    Lead Percent is Total Lead Mass divided by Unit Weight

    Return Type

    Generic

    Target Business Entity

    Item

    Target Attribute Group

    Hazard (for an example user-defined attribute group (EFF))

    Target Attribute

    Lead Percent (for an example user-defined attribute group (EFF))

  3. Click OK to accept the header fields.

  4. In the Details section, enter rule expressions in the expression fields described in the following table.

    To ensure that valid attribute group and name expressions are used in rules, you can right-click in one of the expression fields and select Insert Attribute, then use the Insert Attribute dialog to populate attribute expressions into the rule fields.

    Field Value

    Primary If Expression

    (You can leave this field empty. The value true is inserted when this field is null.)

    THEN Expression

    (Consists of the Secondary If Expression and Return Value shown in the following rows)

    Secondary If Expression

    (You can leave this field empty. The value true is inserted when this field is null.)

    Return Value

    round(([Item].[Hazard].[Lead Mass] /  [Item].[Physical Attributes].[Unit Weight]) * 100, 2)

    User Message

    Percent is Mass ($[Item].[Hazard].[Lead Mass]$) divided by Weight ($[Item].[Physical Attributes].[Unit Weight]$).

    Enclosing an attribute expression with dollar sign symbols ( $ ) renders the current value of the attribute in the displayed user message. For the example shown here, the message is:

    Percent is Mass (100) divided by Weight (gms).
  5. Click Validate to validate the expressions in the rule.

  6. Click Save to save the rule set.

    Saving the rule set enters the first assignment rule into set. Since rules are executed in the sequence you specify, you can ensure that values needed by attributes in later expressions are calculated in earlier expressions.

    The assignment to be made by the second rule is:

    • Sellable Date Is 10 days after the Availability Date

    This assignment is equivalent to the code in the following example, which shows how you can use conditional processing in an item rule:

    if ([Item].[Main].[Sellable Flag] == "Yes")
        if ([Item].[Item basic].[Item Class] == "Perishables")
        then [Item].[Marketing].[Sellable Date] = [Item].[Planning].[Availability Date] + 3
     else if ([Item].[Item basic].[Item Class]== "Consumables") 
        then [Item].[Marketing].[Sellable Date] = [Item].[Planning].[Availability Date] + 6
     else [Item].[Marketing].[Sellable Date] = [Item].[Planning].[Availability Date] + 10
    The following steps show how to express that code block in an item rule definition.

  7. In the Rules tab of the Edit Rule Set page, select Create from the Actions menu.

  8. In the Create Rule dialog box, enter or select the values shown in the following table.

    Field Value

    Sequence

    20

    Name

    Sellable Date Calculation

    Description

    Calculate Sellable date based on the Availability Date.

    Return Type

    Generic

    Target Business Entity

    Item

    Target Attribute Group

    Marketing

    Target Attribute

    Sellable Date

  9. Click OK to accept the header fields.

  10. In the Details section, enter rule expressions in the expression fields described in the following table. You will have to add an additional two rows of Then Expression by selecting the last row in the table and clicking Add Row.

    Field Value

    Primary If Expression

    [Item].[Main].[Sellable Flag] == "Yes"

    (first) THEN Expression

    (Consists of the Secondary If Expression and Return Value shown in the following rows)

    Secondary If Expression

    [Item].[Item basic].[Item Class] == "Perishables")

    Return Value

    [Item].[Planning].[Availability Date] + 3

    (second) THEN Expression

    Secondary If Expression

    [Item].[Item basic].[Item Class]== "Consumables"

    Return Value

    [Item].[Planning].[Availability Date] + 6

    (third) THEN Expression

     

    Secondary If Expression

    (This field remains empty.)

    Return Value

    [Item].[Planning].[Availability Date] + 10

    User Message

    (This field remains empty.)

    Leaving the last Secondary If Expression blank means it defaults to true and is always selected. No User Message was entered, so nothing is shown to the user.

  11. Click Validate to validate the expressions in the rule. Click Save to save the rule set.

    The assignment rule set is now complete.

Create a Validation Rule Set

Validation rule sets are created in much the same way as assignment rule sets, except that the Type is set to Validation.

  1. On the Manage Rule Sets task page, select Create from the task bar.

  2. In the Create Rule Set dialog box, enter a name and optional description.

  3. For Composite, select No.

  4. For Type, select Validations.

  5. For Association Type, select Item Class.

  6. For Association Name, select Computers or Laptops.

  7. Click Save and Continue.

Create Validation Rules

The validation to be made by the first rule is:

  • Minimum CPU Speed (in MHz) Must be less than Maximum CPU Speed

  1. In the Rules tab of the Edit Rule Set page, select Create from the Actions menu.

  2. In the Create Rule dialog box, enter or select the values shown in the following table.

    Field Value

    Sequence

    10

    Name

    Maximum Minimum CPU Check

    Description

    Check that Minimum CPU Clock Speed is less than Maximum CPU Clock Speed.

    Severity

    Reject

  3. Click OK to accept the header fields.

  4. In the Details section, enter rule expressions in the expression fields described in the following table.

    Field Value

    IF Expression

    (This field remains empty.)

    Validation Condition

    [Item].[Motherboard Spec].[Min CPU Speed] <= [Item].[Motherboard Spec].[Max CPU Speed]

    User Message

    Minimum CPU Speed has to be less than or equal to Maximum CPU Speed.

  5. Click Validate to validate the expressions in the rule. Click Save to save the rule set.

    The validation to be made by the second rule is:

    • If Purchasable is set to Yes, then a value for List Price must be set

    This validation demonstrates how the value of one field must be value based on the value of another field.

  6. In the Rules tab of the Edit Rule Set page, select Create from the Actions menu. In the Create Rule dialog box, enter or select the values shown in the following table.

    Field Value

    Sequence

    20

    Name

    Require List Price

    Description

    List Price must be set if Purchasable is set to Yes

    Severity

    Reject

  7. Click OK to accept the header fields. In the Details section, enter rule expressions in the expression fields described in the following table. The ! in the function expression !isnull() negates the logical result of the expression.

    Field Value

    IF Expression

    [Item].[Purchasing].[Purchasable] == "Yes"

    Validation Condition

    (!isnull([Item].[Purchasing].[List Price]))

    User Message

    If Purchasable is set to Yes then List Price can't be null.

  8. Click Validate to validate the expressions in the rule. Click Save to save the rule set.

    The validation to be made by the third rule is:

    • Unit Height can't change by more than 3% without requiring approval.

    This validation demonstrates how to check the new attribute value against the value that's currently in production. If this validation fails, then the user will be required to create a change order for this change.

  9. In the Rules tab of the Edit Rule Set page, select Create from the Actions menu. In the Create Rule dialog box, enter or select the values shown in the following table.

    Field Value

    Sequence

    30

    Name

    Height Change

    Description

    Unit Height can't change by more than 3%.

    Severity

    Needs Approval

  10. Click OK to accept the header fields. In the Details section, enter rule expressions in the expression fields described in the following table.

    Field Value

    IF Expression

    (This field remains empty.)

    Validation Condition

    abs(percent([Item].[Physical Attributes].[Height])) > 3.0

    User Message

    A unit height change of 3% requires a change order.

    The percent() function returns the percentage change of the new value to the value in production. This change can be positive or negative, hence the abs() function converts it to an absolute change.

  11. Click Validate to validate the expressions in the rule. Click Save to save the rule set.

    The validation rule set is now complete. Click on the Usage tab to review all the attributes used in this rule set. Click Save and Close to return to the Manage Rule Sets page.

Create a Composite Rule Set

Now create a composite rule set that includes both of the rule sets that you just created. This is the rule set that you will assign to the Item entity in the final step to activate the rules we have created.
  1. On the Manage Rule Sets task page, select Create from the task bar.

  2. In the Create Rule Set dialog box, enter a name and optional description.

  3. For Composite, select Yes.

  4. For Type, select Mixed.

    In more complex scenarios, you might have multiple layers of composite rule sets, some of which you only want to contain validations or assignments rules. But eventually you will want to include both kinds of rules.

  5. Click Save and Continue.

  6. On the Included Rule Sets tab of the Edit Rule Set page for the new composite rule set, select Add from the Actions menu.

  7. In the Select and Add: Rule Sets dialog box, search for and select the assignment rule set that you created, then click the Apply button.

  8. Repeat the search and selection step to add the new validation rule set to the composite rule set.

  9. The rule sets will be executed in the order that they're listed in the Included Rule Sets list, so it's important to put validations after assignments if you want to validate some of the assignment results that you calculated.

  10. Click Save and Close.

Add the Composite Rule Set To the Master Rule Set

The rules you created aren't active until you add them to the Master Rule Set, as described in the following steps. Also, note that the Draft check box should be deselected for a rule set to be executed at runtime. Draft rule sets aren't run during regular transactions.

  1. On the Manage Rule Sets page, search for MASTER_RULE_SET and edit it.

  2. On the Edit Rule Set page for MASTER_RULE_SET, on the Included Rule Sets tab, select Add from the Actions menu.

  3. In the Select and Add: Rule Sets dialog box, search for your composite rule set by name, or by one of the other fields that define a rule set.

  4. Select your rule set from the search results, and click OK.

  5. Your rule set appears in the list of rule sets included in the master rule set, with the next available sequence number, which determines the order of execution of the included rule set. You can select Edit Sequence from the Actions menu to modify the sequence.

  6. Click Save to save the master rule set.

    You are now ready to test the validations. When you make the relevant item updates, the updated values should be validated by the rules that are triggered, and the error messages should appear.

    You can also examine some of the other tabs on the Edit Rule Set page. In the validation and assignment rule sets the Rule Sets Where Included tab should now show the composite rule set that you added them to. In the composite rule set, the Attributes section on the Usages tab should show the item assignments for the rule sets.

Item Rule Data Types

Attributes in item rules belong to one of a set of data types.

In item rule expressions, all values are of one of the data types listed in the following table.

Data Type Description

String

All strings and text characters

Number

All decimals and integers

Date

Dates only, without times

Time

Times only, without dates

DateTime

Combination of Date and Time

Null or Empty Values

Any attribute referenced in an item rule can have an empty or null value. To test for empty or null values you must use the function isnull.

Strings

Strings are delimited by double or single quotation marks (" or ').To escape a character's normal value (for example, in a regular expression), prefix it with the backslash (\).

Numbers

Depending on the setting of the regional preference for number format, the decimal point in decimal numbers can be represented by either a period character (.) or by a comma (,). If the comma is used as a decimal point, then arguments to functions must be delimited by semicolons (;).

Dates and Times

Dates and times are represented by the types Date, DateTime, and Time.

Dates will be entered in the format that you specify in the setting of the regional preference for date format . Date constants will automatically be reformatted if a you log in with a difference preference.

The following expression using a Date value is valid:

[Item].[Logistics].[StartDate] > "2005-Feb-23"

When writing an expression containing terms representing dates and times, enclose them in double quotation marks. They're internally converted to String values before they're compared. The following expression compares an attribute value to a textual date term.

Days can be added to a Date using Numbers. For example, the following expression computes the sell date as 30 days after the availability date:

[Item].[Logistics].[SellDate] > [Logistics].[AvailableDate] + 30

You can't perform date calculations involving Custom Calendars.

Item Rules are used in defining and validating integrity constraints on item attributes, and in assigning values to attributes.

Basic Rule Formation

Item rules consist of expressions, operators, and functions. Most expressions reference the value of an item attribute.

Rules can encapsulate a single integrity constraint. The following example checks that a given attribute is less than another:

[Item].[Physical Attributes].[Unit Weight] <= [Item].[Logistics].[Shipping Weight]

In other words, the net weight of an item always has to be less than or equal to the shipping weight.

Rules can define assignment formulas. The following example is used in assigning a value for a "Daily Waste Percent" attribute:

[Item].[Logistics].[Total Waste Percent] / [Item].[Inventory].[Shelf Life Days]

In the preceding example, the daily waste percent is the total waste percent divided by the shelf life in days.

Attribute Expressions

You access the value of an attribute by appending its name to its entity and attribute group, separated by a delimiter. The delimiter is the period character (.). You can use the display name of an attribute naming element, which can include space characters, but must be enclosed in single brackets.

Following is the syntax of an attribute expression:

[<Entity Name>].[<Attribute Group Name>].[<Attribute Name>]

When referencing descriptive flexfields, use the segment code, as in the following example:

[ChangeHeader].Flexfield[Product__Line]

UOM Expressions

If an attribute definition includes a unit of measure (UOM), you can access the unit by appending UOM to the attribute expression.

The following example shows the syntax for an expression that accesses the UOM for an attribute:

[Item].[<Attribute Group Name>].[<Attribute> Unit of Measure]

For example, the following expression might return kg if the attribute's UOM is kilograms:

[Item].[Physical Attributes].[Weight Unit of Measure]

So for this attribute you can use expressions like:

[Item].[Physical Attributes].[Weight Unit of Measure] == "K"

All comparisons between amounts are automatically adjusted to account for different UOMs. Accessing the UOM of an attribute explicitly should not be necessary for comparison purposes.

Null Values

Rules that reference attributes that have no value (also called a null value) are ignored. Expressions that evaluate to NULL are ignored.

That means that you never need to code Validations like:

if (not isnull(Item.PhysicalAttributes.Weight)) then Item.PhysicalAttributes.Weight <= 10

The "if" part is redundant, since if Weight was NULL the validation would be ignored. If you do want to check that an attribute has a non-null value, use the isnull function, which can be used to check that an attribute has a value entered.

Boolean Expressions

Boolean expressions are those that return TRUE, FALSE or null. Boolean expressions can be used in If Expression and Validation Condition fields of the Edit Rule Set page. Use logical and comparison operators and functions in Boolean expressions.

Item Rule Multirow Attribute Group Functions

To reference a value in a particular row of a multirow attribute group, use one of the following functions.

To make a rule set specific to an item class, assign it to that item class during rule set creation. That rule set will then be active for each entity that has that item class as a parent or as an ancestor. You can't access any other attributes associated with an item class.

Tip: If you reference multiple multirow attribute groups in a rule, then, during execution, the rule loops though each combination of rows of all the groups.

Example: a rule with the following If Expression that references the multirow attribute groups MR_AG1 and MR_AG2, where MR_AG1 has m number of rows and MR_AG2 has n number of rows:

!changed ([Item].[MR_AG1]) 
OR 
!changed ([Item].[MR_AG2])

This rule is executed m*n times. You can reduce the number of executions to m+n by splitting the rule into two rules, to separate the references to the multirow attribute groups.

loopSum

Syntax:

loopSum([Entity name].[multirow Attribute Group Name].[Attribute Name])

The loopSum function takes one numeric sub-expression as an argument. It runs the sub-expression for each multirow row attribute group and compute the sum of the results.

Example

In this example, the sum of the values in all the rows of Percentage attribute can't be a value other than 100.

Severity: Reject
If Expression: (loopSum([Item].[Composition].[Percentage])) != 100

conditionalLoopSum

Syntax:

conditionalLoopSum(boolean_expression, [Entity name].[multirow AttributeGroupName].[Attribute Name])

The conditionalLoopSum function takes two sub-expression arguments. The first argument must be a boolean expression and the second argument will be a numeric sub-expression. The function runs the boolean sub-expression for each multirow row and, if the boolean evaluates to true, computes the numeric sub-expression for that row. The function returns the sum of the computed numeric expressions.

Example

In this example, assume a multirow attribute group named Forecast with the following rows.

Customer Location Required Quantity

ABC

Seattle

20

XYZ

Seattle

30

ABC

Boston

25

The following example will sum up the values of Required Quantity for which the corresponding Location is Seattle:

conditionalLoopSum([Item].[Forecast].[Location] == "Seattle", [Item].[Forecast].[Required Qty])

Item Rule Numeric Functions and Operators

Use numeric functions and operators to calculate values of numeric expressions.

Numeric Operators

The numeric operators available in item rules are listed below.

  • + (addition)

  • - (subtraction)

  • * (multiplication)

  • / (division)

  • sum (aggregation)

Numeric Operator Expressions

expression1 + expression2

Performs regular mathematical addition of expression1 and expression2. Returns null if any argument is null.

expression1 - expression2

Performs regular mathematical subtraction of expression2 from expression1. Returns null if any argument is null.

expression1 * expression2

Performs regular mathematical multiplication of expression1 and expression2. Returns null if any argument is null.

expression1 / expression2

Performs regular mathematical division of expression1 by expression2. Returns null if any argument is null. Division by 0 returns null. The number of decimal digits returned by division is the maximum number of digits from expression1 and expression2.

sum(expression1, expression2, expression3, ...)

Adds a series of values. Returns null if any argument is null.

Numeric Functions

The numeric functions available in item rules are listed below.

abs

Syntax:

abs (expression)

Returns the absolute value of expression.

Example:

In this example, the percentage weight change has to be less than 10.

abs(percent([Item].[Physical Attributes].[Unit Weight])) <= 10

ConvertToUOM

Syntax:

ConvertToUOM(expression, "target UOM")

Returns an amount in the specified target UOM. This conversion ensures that comparisons or calculations are performed using the appropriate UOM.

Example:

In this example, the unit weight of an item has to be less than or equal to 10 kg.

ConvertToUOM([Item].[Physical Attributes].[Unit Weight], "kg") <= 10

max

Syntax:

max(expression1, expression2, ...)

Returns the maximum value of a series of values. Can also be used for arrays or in query expressions.

Example:

In this example, the result would be 2006-11-30.

max("2006-10-12", "2006-11-30")

min

Syntax:

min(expression1, expression2, ...)

Returns the minimum value of a series of values. Can also be used for arrays or in query expressions.

Example:

In this example, the result would be 2006-10-12.

min("2006-10-12", "2006-11-30")

round

Syntax:

round(expression, decimal_places)

Rounds a number to the specified number of decimal places. round rounds to the nearest value.

Example:

In this example, the returned value is 1.58.

round(1.5758, 2)

rounddown

Syntax:

rounddown(expression, decimal_places)

Rounds a number to the specified number of decimal places. rounddown rounds toward zero.

Example:

In this example, the returned value is 1.57.

rounddown(1.5758, 2)

roundup

Syntax:

roundup(expression, decimal_places)

Rounds a number to the specified number of decimal places. roundup rounds away from zero.

Example:

In this example, the returned value is 1.58.

roundup(1.5758, 2)

Item Rule Production Value Functions

Use item rule production value functions and operators to compare the new value of an attribute to the value that is currently in production. This can be especially useful in tolerance rules.

changed

Syntax:

changed(attribute)
changed(attributeGroup)

Returns TRUE if the current value of attribute or attributeGroup differs from the current production value. Returns FALSE otherwise. Works with null values. If only attributeGroup is specified, then returns TRUE if any attribute in that attribute group has changed.

delta

Syntax:

delta(attribute)

Returns the difference between new and current production values of attribute. Comparisons of String values are case-insensitive. In comparisons of Boolean values, TRUE is considered greater than FALSE.

The following table illustrates the return value of this function when comparing new and current production values of various combinations of Numeric, Date, and DateTime attribute types.

Value comparison Returned result for Numeric values Returned result for Date or DateTime values

new < current production

new minus current production

new minus current production

new > current production

new minus current production

new minus current production

new == current production

0

0

current production does not exist

null

null

both new and current production are null

0

0

either new or current production are null, but not both

null

null

percent

Syntax:

percent(attribute)

Returns the difference between new and current production values, expressed as a percentage, according to the following formula:

(delta(attribute) / current_production_value ) * 100

Where attribute is the argument passed to percent(), and current_production_value is the current production value of the attribute. Can only be used with Numeric attributes.

previous

Syntax:

previous(attribute)

Returns the previous production value of attribute.

Item Rule String Functions

All string functions are case-sensitive. To perform a case-insensitive comparison use the == comparison operator.

String Comparison Functions

compare

Syntax:

compare(string1, string2)

Returns 0 when string1 is exactly equal to string2. Returns -1 if string1 is lexicographically less than string2. Returns +1 if string1 is lexicographically greater than string2

contains

Syntax:

contains(look_for_string, look_in_string)

Returns TRUE when look_for_string is found in look_in_string. Returns FALSE otherwise.

Example:

The following example returns TRUE if the item description is "computer accessory product".

If Expression: contains("accessory", [item].[main].[description])

endsWith

Syntax:

endsWith(look_for_string, look_in_string)

Returns TRUE when look_in_string ends with look_for_string. Returns FALSE otherwise.

match

Syntax:

match(regexp_pattern, look_in_string)

Returns TRUE when regexp_pattern matches look_in_string. Returns FALSE otherwise..

This function uses regular expression pattern matching in its search. For reference on regular expressions, see the Javadoc reference for java.util.regex.Pattern ( http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html).

Example:

The following example returns TRUE if the description includes "electronic" or "electric".

match("ele*c", [item].[main].[description])

startsWith

Syntax:

startsWith(look_for_string, look_in_string)

Returns TRUE when look_in_string starts with look_for_string. Returns FALSE otherwise.

Example:

The following example returns TRUE if the item description is "Notebook".

startsWith("Note", [item].[main].[description])

Other String Functions

+ (plus sign)

Syntax:

expression1 + expression2

Concatenates two expressions and returns the resulting string. Note that this also returns a valid string if the expressions are of other data types.

indexOf

Syntax:

(look_for_string, look_in_string)

Returns position of look_for_string in look_in_string. String position starts at 0. Returns -1 if look_for_string isn't found. The search is case-sensitive. Returns null if either expression is null.

length

Syntax:

length(expression)

Returns the length of the string expression. Returns null if expression is null.

lowercase

Syntax:

lowercase(expression)

Returns the lowercase equivalent of the string expression. Returns null if expression is null.

substring

Syntax:

substring(string, start)
substring(string, start, end)

Returns a substring of the string stringstarting at start and ending before end. If end is omitted, then returns remainder of string. String position starts at 0. If start is less than 0 then start at the beginning of the string. If startis greater than length of string then return up to the end of the string. Returns null if any of the arguments is null.

Example:

You can use rules to validate that the Packaging Indicator digit for a GTIN is appropriate for the Pack Type of the item. GTINs can be assigned at multiple levels of a packaging hierarchy. Consider a scenario in which your GTIN numbering rule declares that, if the pack type of the Item is "EA", then the fourth digit of the GTIN should be 8. You can use the following rule expressions in a validation rule to perform this kind of validation.

If Expression: [Item].[Main].[Pack Type] == "EA"
Validation Condition: subString([GTIN].[GTIN Main].[GTIN], 4, 4) == "8"

trim

Syntax:

trim(expression)

Removes all leading and trailing (but not middle) white space characters from a expression. Returns null if expression is null.

uppercase

Syntax:

uppercase(expression)

Returns the uppercase equivalent of the string expression. Returns null if expression is null.

Item Rule Logical Functions and Operators

Use item rule logical functions and operators to test the validity of expressions.

Logical Operators

The logical operators available in item rules are listed below.

  • and (logical AND)

  • or (logical OR)

  • not (logical NOT)

and

Syntax:

expression1 and expression2

You can also use the notation && in place of the and operator.

The logical and operator implements the following truth table for expression1 and expression2.

expression1 expression2 expression1 and expression2

F

F

F

F

T

F

T

F

F

T

T

T

F

null

F

null

*[see note]

null

* The processor stops after it finds the first FALSE. Hence there is an asymmetry between F and null and null and F.

or

Syntax:

expression1 or expression2

You can also use the notation || in place of the or operator.

The logical or operator implements the following truth table for expression1 and expression2.

expression1 expression2 expression1 or expression2

F

F

F

F

T

T

T

F

T

T

T

T

T

Null

T

null

*[see note]

null

* The processor stops after it finds the first TRUE. Hence there is an asymmetry between T and null and null and T.

not

Syntax:

not expression1

The logical not operator implements the following truth table for expression1 and not expression1.

expression1 not expression1

F

T

T

F

null

null

Logical Functions

The logical functions available in item rules are listed below.

assignedToOrg

Syntax:

assignedtoOrg("org_code")

In a validation expression, returns TRUE if the item is assigned to the specified organization.

Example:

In the following example, when the item class of the item is Extra Data Servers, the organization can't be S2.

Severity: Reject
If Expression:  [Item].[Item Basic].[Item Class] == "Extra Data Servers"
Validation Expression:  !assignedtoOrg("S2")

assignedtoCatalog

Syntax:

assignedToCatalog(Catalog[CatalogCode].Category[CategoryCode])

In a validation expression, returns TRUE if the item is assigned to the specified catalog and category.

Example:

In the following example, if an item is assigned to the catalog Ladies Wear and the category Summer, it can't be assigned to catalog Kids and category Summer.

Severity: Reject
If Expression:  
assignedtoCatalog(Catalog[LadiesWear].Category[Summer])
Validation Expression:  
!assignedtoCatalog(Catalog[Kids].Category[Summer])

component_type

Syntax:

component_type("typename1", "typename2", ...)

In a validation expression that checks the component types for a structure, returns TRUE if the components associated with the structure are valid. The argument is a list of valid user item types for the components.

When creating a rule that checks the component types for a structure, you must select the Valid Component Rules check box in the Create Rules dialog box.

Unlike other validation rules, rules that validate components don't have a Severity.

Example:

In the following example, when the structure is Primary, only type1 and type2 can be used as components of the structure.

If Expression: [Structure].[Structure Attributes].[Structure Name] == "Primary"
Validation Condition:  component_type("type1","type2")

exists

Syntax:

exists(Boolean_expression)

Loops through the rows of the entities used in Boolean_expression and returns TRUE if the expression is satisfied for any of the rows.

You can use exists() on the following entities:

  • relationships (related item relationships and cross-references)

  • structures

  • multirow attribute groups

Example expressions:

The following expression loops through all the structures on an item and returns TRUE if the any structure has the name "ManufacturingBOM".

exists([Structure].[Structure Attributes].[Structure Name] == "ManufacturingBOM")

The following expression validates whether a particular relationship exists for an item:

exists([Relateditem.[RelateditemMain[.[Type] == "Up-sell")

The following expression verifies whether a row exists in a multirow attribute group:

exists(isNull([Item].[Ingredients].[Ingredient Name]) == false)

Example rules:

The following rule verifies that if the item attribute Pack Type is specified, then the GTIN attribute GTIN can't be null

If Expression: 
isNull([Item].[Main].[PACK TYPE]) == false
Validation Condition: 
exists(isNull([GTIN].[GTIN Main].[GTIN])) == false

The following rule verifies that if the value of the attribute TM is US, then the GTIN relationship must be with a Customer named USFDA.

If Expression: 
[Item].[Group1].[TM] == "US"
Validation Condition: 
[GTIN].[GTIN Main].[Party Type] == "Customer" AND 
[GTIN].[GTIN Main].[Party Name] == "USFDA"

from_item_class

Syntax

from_item_class ("item class name")

Invoked when the item class of an item is being changed. In a validation expression, returns TRUE if the name of the original item class matches "item class name", which must be enclosed in quotation marks.

Example:

The following example returns TRUE if the original item class is TCParent:

FROM_ITEM_CLASS("TCParent")

Combined example:

The following example prevents changing the item class of an item from Pneumatic_Pumps to Hydraulic_Pumps.

Severity: Reject 
If Expression: 
FROM_ITEM_CLASS("Pneumatic_Pumps") && TO_ITEM_CLASS("Hydraulic_Pumps")

to_item_class

Syntax

to_item_class("item class name")

Invoked when the item class of an item is being changed. In a validation expression, returns TRUE if the name of the new item class matches "item class name", which must be enclosed in quotation marks.

Example:

The following example returns TRUE if the new item class is TCCHLDVR

TO_ITEM_CLASS("TCCHLDVR")

Descriptive Flexfields

Descriptive flexfields don't belong to any attribute group, and are accessed using the FlexField segment code.

[<Entity Name>].Flexfield[<Flexfield segment code>]

Example:

[ChangeHeader].Flexfield[Product__Line]

Comparison Operators

The comparison operators available in item rules are listed below.

  • == (equals)

  • != (not equals)

  • < (less than)

  • <= (less than or equal)

  • > (greater than)

  • >= (greater than)

Comparison operators compare two Boolean expressions and return TRUE or FALSE, depending on the result of the comparison. If one or both expressions are null, then the comparison returns null.To check for null values, use the comparison function isnull.

String comparison is case-insensitive. For case-sensitive comparison use the string function compare.

Syntax:

expression1 == expression2 (equals 
expression1 != expression2
expression1 < expression2
expression1 <= expression2
expression1 > expression2comp
expression1 >= expression2

isnull

Syntax:

isnull(expression)

Returns TRUE if its argument is null, returns FALSE otherwise. This function lets you explicitly test whether a value is null. Unlike other functions, it's not ignored if the value of the argument is null.

The logical function isnull() implements the following truth table for expression.

expression isnull(expression)

null

T

not null

F

nvl

Syntax:

nvl(expression,replacement-expression)

If expression is null or an empty string, returns replacement-expression.

Example:

The following example returns an empty string if the attribute Attr1 is null.

nvl([Item].[AttrGrp1].[Attr1], "")

In a scenario such as generating an item description based on a large number of extensible flexfield attributes, it can be inconvenient to use the isnull() function when you want rules to keep executing even if one or more of the used attributes is null, because isnull() returns a Boolean value, which must be handled individually for each attribute. The following example concatenates a series of attribute values into a long description, and uses nvl() to insert an empty string into the description where any of the referenced attributes is null:

"Pipe Non-Metallic" + 
":OUTSIDE DIAMETER:" + nvl([Item].[Pipe:Non-Metallic].[Outside Diameter],"") + 
":NOMINAL SIZE:" + nvl([Item].[Pipe:Non-Metallic].[Nominal Size],"") + 
":COLOR:" + nvl([Item].[Pipe:Non-Metallic].[Color],"")

Item Rule Expressions with Business Entities

Item rules refer to attributes through references that include the business entity that includes the attribute.

Supported Business Entities

When you reference an attribute in rule expressions, specify the business entity as the first term in the expression, as shown in the following examples:

Syntax:

[entity name].[attribute group name].[attribute]

Example:

[Item].[Main].[Item Status]

The business entities supported for use in item rules are listed in the following table:

Entity For assignment rules For validation rules

Cross Reference

No

Yes

GTIN

No

Yes

Item

Yes

Yes

Related Item

No

Yes

Revision

Yes

Yes

Structure

No

Yes

Style Item

No

Yes

Supplier

Yes

Yes

Cross-Entity References

You can reference attributes from certain other entities while creating rules for an attribute belonging to an entity.

For instance, you can create a validation constraint for a supplier-level attribute that references an item-level attribute, as summarized in the following example:

Field Value

Severity

Reject

IF Expression

[Supplier].[Promotion Attributes].[Discount] >= 20%

Validation Condition

[Item].[Price Attributes].[MSRP] > 10$

The following example summarizes another validation rule that references attributes from different entities, namely the item and cross-reference relationship entities:

Field Value

Severity

Warning

IF Expression

[Item].[Item_Basic].[ITEM_CLASS]== "Electronics" 
AND 
[CrossReference].[CrossReferenceMain].[Type]== "Old_Part_Number"

Validation Condition

!isnull([CrossReference].[CrossReferenceMain].[Value])

Using GTIN Entities

You can reference GTIN (Global Trade Identification Number) attributes to enforce your own business validations with regard to GTIN association.

Based on the specified criteria involving attributes or organizations, GTIN validation rules can check whether a GTIN is associated to an item, or check whether there was any change in the associated GTIN.

GTIN rules can also validate the digits of an item's GTIN. You can use a rule to validate that the Packaging Indicator digit for a GTIN is appropriate for the Pack Type of the item. GTINs can be assigned at multiple levels of a packaging hierarchy. Consider a scenario in which your GTIN numbering rule declares that, if the pack type of the Item is "Case", then the fourth digit of the GTIN should be 8. The following example summarizes a validation rule that references attributes for Item and GTIN entities.

Field Value

Severity

Warning

IF Expression

[Item].[Main].[Pack Type] == "Case"

Validation Condition

subString([GTIN].[GTIN Main].[GTIN],4,4)=="8"

Using Style Item Entities

You can use the Style Item entity to access the attributes of the corresponding style item of SKU items.

If a rule contains a Style Item entity then the rule will only be run if:

  • The user modified a style item.

  • The user created or modified a SKU item.

  • The user created or modified an entity (such as a revision, or supplier association) on a SKU item and the rule also uses that entity.

The following example summarizes an assignment rule that references attributes from the Style Item entity:

Field Value

Return type

Item Description

Primary If Expression

true

Secondary If Expression

true

Return Value

[StyleItem].[Main].[Item Description] + ", " + [Item].[Top Variants].[Color] + ", " + [Item].[Top Variants].[Top Size]

Item Rule Utility Functions

Use these functions in building more complex expressions.

auto_sequence

Syntax:

auto_sequence("Sequence Name", starting_num, increment_by)

Searches for Sequence Name in the database tables. Enclose the sequence name in quotation marks to preserve space characters in the name. The sequence name is not case-sensitive. If the sequence exists, then the function returns the next value from the sequence. If the sequence does not exist, then the function creates a sequence with the specified name and returns starting_num. Further numbers in the sequence are incremented by increment_by. This function can be used in defining the return value of assignment and validation rules.

Example: The following expression used as the return value of a rule whose target attribute is [General attributes].[EDC Number] produces a sequence of numbers beginning at 1000 and increasing by 5 for each new item:

auto_sequence("EDC Number", 1000, 5)

between

Syntax:

between(value, minimum, maximum)

Returns TRUE if value falls between minimum and maximum. Returns FALSE otherwise. All arguments are of type Number, Date, or DateTime.

decode

Syntax:

decode(expression, search1, result1, [search2, result2, ...], [default])

Compares expression to the specified series of search arguments, one at a time, and returns the corresponding result when the first match is found. If no match is found, returns default. If default is omitted, returns null. Requires specification of at least expression,search1, and result1. You can specify an unlimited number of pairs of search and result arguments. The default argument is optional.

Example:

The following example returns RED COLOR if the item's body color is RED, BLUE COLOR if it's BLUE, and causes a rejection if none of those colors is matched.

Severity: Reject
If Expression: decode([Item].[BODY ATTR].[COLOR], "RED", "RED COLOR", "BLUE", "BLUE COLOR", "NONE") == "NONE"

getCustomObjectValue

Syntax:

getCustomObjectValue(
custObjName, 
custObjReturnAttrName, 
custObjQueryAttrName1, Value1,... 
custObjQueryAttrNameN, ValueN)

Fetches a value from attributes of a custom object custObjName that is defined using Application Composer. The value is fetched from the field named custObjReturnAttrName of the custom object. The custom object instance to fetch the value from is identified by matching Value1 in the field named custObjQueryAttrName1, using the == operator. Value1 can be a literal value, or can refer to an attribute, such as [ITEM].[AG1].[A1]. You can specify additional matching criteria by providing matches for custObjQueryAttrNameN against ValueN, and so on.

in

Syntax:

in(expression, value1, value2,...)

Returns TRUE if expression is found in value1, value2, or other following value arguments. Returns FALSE otherwise. Requires specifying at least expression and value1. You can specify an unlimited number of value arguments.

Example:

The following example returns TRUE if "RED" is contained in the value of either of the specified attributes for colors.

If Expression: in("RED",[Item].[BODY ATTR].[COLOR], [Item].[COVER ATTR].[COLOR])
Note: The functions in() and not_in() accept arguments of either String or Number. All arguments must be of the same type. The type of the first argument determines the type assigned to the subsequent arguments.

not_in

Syntax:

not_in(expression, value1, value2,...)

Returns TRUE if expression is not found in value1, value2, or other following value arguments. Returns FALSE otherwise. Requires specifying at least expression and value1. You can specify an unlimited number of value arguments.

Example:

The following example returns TRUE if "RED" is not contained in the value of either of the specified attributes for colors.

If Expression: not_in("RED",[Item].[BODY ATTR].[COLOR], [Item].[COVER ATTR].[COLOR])

to_number

Syntax:

to_number(string)

Returns string as a value of type Number.

Example:

The following example returns the count of an item as a string.

to_number([Item].[PHYSICAL PROP].[COUNT])

Custom Function Calls in Web Services

You can use custom functions in rule expressions by first writing functions and creating a public web service that includes the custom functions, then using InvokeWebService() to call the custom functions.

InvokeWebService

Syntax:

InvokeWebService("service_name", "function_name", input_argument1, input_argument2,...)

The names of the web service and its custom function are passed as quoted strings which cannot include space characters.Item rules support only simple type parameters and not complex type parameters being passed to this function.

Returns a value produced by a custom function called through a web service. The web service function must return a single value, since this function does not accept more than one value.

Example:

InvokeWebService("ValidateSLN_Digit", "execute", [Item].[Tag AG].[SL No])

When a rule expression using InvokeWebService() is executed at runtime, InvokeWebService() calls the web service service_name, and passes the input payloads such as input_argument1 to the function function_name. The the value returned from function_name is returned to the rule expression by InvokeWebService().

Before calling the function function_name in a rule expression, you must register the web service service_name, along with the credentials used to call the service.

Date Operators

The + (plus) and - (minus) operators add or subtract the specified number of days from a date. A single number is interpreted as a number of days. You can also use dates in the format specified by the standard ISO 8601.

Syntax:

expression1 + expression2
expression1 - expression2

Example:

The following example expresses a time 3 days after the Item Lead Time

[Item].[Logistics].[LeadTime] + 3

Attributes Supported for Item Rules

All user-defined attributes (extensible flexfields) can be accessed using the syntax [entity name].[attribute group name].[attribute name]. For example: [Item].[Physical Attributes].[Unit Weight]. In addition, rules support access to the predefined attributes listed here, using predefined attribute groups to access the attributes.

Rule Set Context Attributes

This is a special set of attributes that refers to the context of a rule's execution. Expressions using these attributes are formed with the prefix Context in place of an attribute group name.

Attribute Description

BatchID

Set to Batch ID if running Import.

BatchName

Set to Batch Name if running Import.

ExecutionDate

Date for which rules are invoked.

ExecutionDateTime

Date and Time for which rules are invoked.

RuleSetVersion

Currently always set to 1.0.

User

The user whose action triggered the rule.

Examples:

Context.ExecutionDate >= '7/6/2007'

Context.User == 'USER1'

Change Order Attributes

These attributes represent fields in the header of a change order. They can be used in the expressions of validation rules to validate change orders.

Attribute Description Example

Approval Date

The approval date of the change order.

[ChangeHeader].[Change Header Main].[Approval Date]=='12/01/19 03:00 PM'

Assigned To

The user the change order is assigned to.

[ChangeHeader].[Change Header Main].[Assigned To]=='USER_2468'

Change ID

Identifier for the change order.

isNull([ChangeHeader].[Change Header Main].[Change ID])
[ChangeHeader].[Change Header Main].[Change ID]=='12345678'

Change Name

The editable name of the change order entered when the change order is created.

[ChangeHeader].[Change Header Main].[Assigned To]=='CO for 2021 plan: updated '

Change Number

The fixed identifier of the change order entered when the change order is created.

[ChangeHeader].[Change Header Main].[Change Number]=='CO for 2021 plan'

Created by

The user who created the change order.

[ChangeHeader].[Change Header Main].[Created by] == 'USER_12345'

Creation Date

The date the change order was created.

[ChangeHeader].[Change Header Main].[Creation Date]=='12/26/12 03:13 PM' 

Description

The editable description of the change order entered when the change order is created.

[ChangeHeader].[Change Header Main].[Description]=='Preliminary evaluation.'

Need-by Date

Need-by Date assigned for the change order.

[ChangeHeader].[Change Header Main].[Need-by Date]=='12/26/12 03:13 PM'

Organization

Organization code assigned when the change order was created.

[ChangeHeader].[Change Header Main].[Organization]=='M1' 

Priority

The priority assigned to the change order.

[ChangeHeader].[Change Header Main].[Priority]=='High'

Reason

The reason code assigned to the change order.

[ChangeHeader].[Change Header Main].[Reason]=='Cost'

Requested By

The user who requested the change order.

[ChangeHeader].[Change Header Main].[Requested By]=='USER_789'

Item Primary Attributes

Attribute group name: Main

For the attributes in this group, see the information about item specifications and attributes in the Using Product Master Data Management guide. This group includes the following attributes:

  • Approval Status

  • Conversions

  • Defaulting Control

  • Formatted Description

  • Item Description

  • Item Status

  • Lifecycle Phase

  • Long Description

  • Negative Deviation Factor

  • Pack Type

  • Positive Deviation Factor

  • Pricing

  • Primary Unit of Measure

  • Secondary Unit of Measure

  • Style Item

  • Tracking Unit of Measure

  • User Item Type

Example:

[Item].[Main].[Primary Unit of Measure] == 'Dozen'

Item Basic Attributes

Attribute group name: Item Basic

For the attributes in this group, see the information about item specifications and attributes in the Using Product Master Data Management guide. This group includes the following attributes:

  • Item

  • Item Class

  • Organization Code

  • Style Item

  • Approval Status

Example:

[Item].[Item Basic].[Approval Status]=='Approved'

Structure Attributes

Attribute group name: Structure Attributes

Structure attributes are accessed only in the context of the business entity Item, using the StructureAttributes attribute group name.

For the attributes in this group, see the information about item specifications and attributes in the Using Product Master Data Management guide. This group includes the following attributes:

  • Structure Name

  • Organization Code

  • Common Item Name

  • Common Organization Code

  • Common Structure Name

Example:

[Structure].[Structure Attributes].[Structure Name]=="Primary"

Item Supplier Association Attributes

Attribute group name: Intersection Primary

In the context of the Supplier business entity, you can access item supplier attributes, intersection attributes (Primary indicator and association Status) and other supplier and supplier address related attributes.

The following example checks whether the item supplier association status is Active.

[Supplier].[Intersection Primary].[Status] == 1 

Supplier Attributes

Attribute group name: Supplier

This group includes the following attributes:

  • Supplier Name

  • Supplier Number

  • D-U-N-S

  • Taxpayer ID

  • Tax Registration Number

Example:

[Supplier].[Item Supplier Site Organization].[Supplier Name]=='Acme'

Item Relationship Attribute Groups: Cross Reference Attributes

Attribute Group Name: Cross Reference Main

This group includes the following attributes:

  • Type

  • Description

  • Value

  • ApplicableOrganization

Example:

[CrossReference].[Cross Reference Main].[Type]=='Old Item Number'

Item Relationship Attribute Groups: Related Item Attributes

Attribute Group Name: Related Item Main

This group includes the following attributes:

  • Type

  • Description

  • Start Date

  • End Date

  • Reciprocal

  • Planning Enabled

Example:

 [RelatedItem].[Related Item Main].[Type]=='Cross-Sell'

WHO Column Attributes

Use these attributes to write rules to govern the updates performed by a specific user, or during a specified time period.

Attribute Description

CREATED_BY

The user who created the data

LAST_UPDATE_DATE

The last date that the data was updated

This attribute supports these operators: == , < , > , <= , >=

LAST_UPDATED_BY

The user who last updated the data.

At runtime, the rule validates the user and date reflected in these attributes.

You can use these attributes in assignment and validation rules for the business entities Item, Revision, and Supplier. For primary data, these attributes are available in the Insert Attribute dialog under the WHO attribute group for the available business entities. For the WHO attributes of item primary attributes (Basic and Main groups), and operational attribute data, use the syntax [Item].[WHO]. For the WHO attributes of item revision and supplier primary attributes, use [Revision].[WHO] and [Supplier].[WHO] respectively.

Example:

[Item].[WHO].[LAST_UPDATED_BY] == 'PRODUCTUSER1'

For extensible flexfield attribute groups, the WHO attributes are available under their respective attribute groups and flexfield contexts.

Examples for extensible flexfield attribute groups named Marketing, Color Characteristics, and TAX attributes:

[Item].[Marketing].[LAST_UPDATED_BY]
[Revision].[Color Characteristics].[LAST_UPDATED_BY]
[Supplier].[TAX attributes].[LAST_UPDATED_BY]

In assignment rules, these attributes:

  • Are available only for the business entities Item, Revision, and Supplier

  • Are available only for rules of return type Generic.

  • Are not available as target attributes.

In validation rules, these attributes:

  • Are available only for the business entities Item, Revision, and Supplier

In both assignment and validation rules, you can use the attribute Context.User to refer to the user whose action triggered the rule, whether through the user interface, during import, or through a service. Example:

context.user == 'ProductEngineer'

You can use rule impact analysis to assess the effect of item rules on a given set of existing items.

Purpose of Impact Analysis

When you add new item rules, or modify existing rules, it's important to know the impact the rules have on production item data.

By running a scheduled process for rule impact analysis, you can perform a what-if analysis of the effect that draft rule sets would have on existing items. After the process runs, you examine the results of the analysis. If the results are acceptable, you can add the impacted items to a batch, and import the batch to update the items. For convenience, you can select items by defined criteria (rather than individually), schedule the analysis process (rather than running it manually), and automatically run data updates after analysis (rather than submitting them separately).

Defining an Impact Analysis: Procedure

Impact analysis is based on the ability to designate item rule sets as being in Draft status, and on defining the scope of a particular analysis by selecting a set of items on which to analyze results.

To define an impact analysis:

  1. In the Product Information Management work area, select the Manage Item Rule Sets task.

  2. Create a new rule set, select the Draft check box and save the rule set. This is the rule whose impact you want to analyze before putting it into production. You can also edit an existing rule set to put it in draft status.

  3. Repeat this step for other rule sets to analyze.

    Note: Draft rule sets don't operate on production data during ordinary transactions.
  4. To enable the running of your draft rule sets, add them to the master rule set, which is named MASTER_RULE_SET. In the master rule set, specify the sequence number that determines the order of execution of the included rule sets.

  5. In the Product Information Management work area, select the Analyze Item Rule Set Impact task.

  6. The Analyze Item Rule Set Impact page contains a list of all of the rule impact analyses. For each analysis, key information is displayed:

    • The name of the analysis, as a link. Click the link to access the analysis details.

    • Status: whether the analysis has been Completed, or Not Started.

    • If Completed, the date the analysis was submitted.

    • A graphic link showing the number of items impacted, or not, by the rule sets in the analysis. Click the link to access the analysis details.

    • Autoupdate: Whether rules that aren't in draft status will automatically update items after the analysis runs.

    • Import Status: Whether the import of the impacted items has been Completed, or Not Started.

    • The user who created the analysis.

    • A menu for submitting or scheduling the analysis.

  7. You can search the list by analysis name in the search field. You can click Show Filters to access other filters, including analysis Status, and Autoupdate setting.

  8. Click Create to create a new analysis.

  9. On the Scope tab of the new analysis, enter a name and optional description.

  10. Leave Autoupdate set to No yet. You can't change it back to No once you have run the analysis.

  11. Select Select and Add from the Actions menu, to select the items to be in the scope of the analysis. If you select an item class, then the search fields are adjusted to include fields from associated attribute groups.

    • To specify a scope of manually chosen items, select the items in the search results list and click Add Items. The items are added to the table of criteria in the scope of the analysis.

    • To specify a dynamic scope, add a saved search to the criteria table. In the Search and Select dialog box, select any existing saved search, or create a new saved search, and set it as default saved search. Then click Add Saved Search. When you later run the analysis, the saved search is executed. All the items that meet the search criteria at that point in time are considered as the scope of the impact analysis, and the analysis is run on this set of items.

  12. When you have completed the scope criteria for the analysis, click Save.

  13. Click Submit to run the Analyze Item Rule Set Impact process immediately. You can alternatively click Schedule to open the Schedule dialog and specify a schedule for when the analysis process runs.

    When the analysis process runs, the draft rules included in the master rule set are force-applied to the items in the scope of the analysis, along with all the production (non-draft) rules included in the master rule set.

Reviewing Impact Analysis Results

When an analysis process completes successfully, you can open the analysis and review the results, on the Results subtab, which contains the affected items and any changes that would be made by the rules.

On the landing page of the Product Information Management work area, you can review impacts at a high level, using the Rules Impact Analysis infolet:

  • By default, the infolet displays graphics linked to items impacted by runs of analysis processes during the Time Interval displayed at the top of the landing page. In the infolet, you can click the menu link for Items Impacted to select Items Not Impacted.

  • A bar chart indicates the number of items impacted, or not impacted, for each impact analysis. The names of the analyses are keyed to the bars. Hovering your mouse over a bar displays the name of the analysis and the number of items.

  • Clicking on a bar opens the Results tab of the Edit Impact Analysis page for the linked analysis.

On the Edit Impact Analysis page, you can review the details of the selected analysis, and filter the list of items in its scope in different ways, to better understand the impact.

  • The Results tab displays the results of the analysis for all of the items specified in the scope of the analysis on the Scope tab. You can filter the list of items.

  • Selecting one of the following infotiles enables you to work with the different categories of impacts:

    • Impact: Displays the number of items that are impacted or not impacted by the draft rules in the analysis.

      Infotile filters: Impacted Items, Nonimpacted Items

      Item results filters: Assignment Type (for associated assignment rules), Severity (for validation rules), Rule Name (for an analysis that contains multiple rules)

      Item results actions: Export to Excel

    • Rule Type: Displays the number of items associated with either assignment rules or validation rules.

      Infotile filters: Assignment, Validation

      Item results filters: Assignment Type, Rule Name

      Item results actions: Export to Excel

    • Actionable: Displays the number of items that require action. Items can be either ready to add to a batch for import, or need corrections before being imported. If items need corrections, you can edit the items in a spreadsheet or use other means to make the corrections, then reload them for import.

      Infotile filters: Ready, Need Corrections

      Item results filters: Assignment Type, Severity, Rule Name

      Item results actions: Export to Excel, Add Items to Batch, Edit Items in Spreadsheet

  • You can filter the list by the Assignment Type (for associated assignment rules), Severity (for validation rules), and Rule Name (for an analysis that contains multiple rules).

  • For each item in the item results list, you can display a variety of fields, including:

    • Attribute values before and after being changed by assignment rules

    • New organizations and catalogs or categories assigned by rules

    • User messages caused by validation rule sets

    • The name of the rule that impacted the item

Scenarios for Post-Analysis Update

After you review the results of an impact analysis, you can rectify errors caused by rules, if any, by editing the items in a spreadsheet or using other means to make the corrections, then reload the items for import.

Consider an example scenario in which you have modified an assignment type item rule to reflect a pending change in a local sales tax. The rule will be applied to any new items that are created, but many items already exist that were created under the previous tax. You need to analyze the impact of applying the new tax assignment to those items.

To resolve the effects of the rule analysis:

  1. Click the Actionable infotile. You will be determining the action to take before the impacted items are ready for import back into production.

  2. Take the rule sets that produced the impact out of draft status. You can click the name of a rule set in the item results list to access the Edit Rule Set page. Deselect the Draft check box to take the rule set out of draft status.

  3. The actions you can take are determined by the category of actionable items that you choose: Ready or Need Corrections. Use one of the following scenarios.

    • Ready: These items are likely to be imported with no errors produced by the impact of the rules in the analysis set. Suggested actions include:

      • You can add these items to a new or existing batch so that they can be imported into production.

        Action: Select Add Items to Batch from the Actions menu. If you select New Batch, make selections in the Process Details dialog. The resulting rules update impact type of batch is predefined as an import to the Product Information Management Data Hub spoke system, which means that it updates only items that already exist. You can also add items to an existing rules update impact batch that was previously created by this option, . You can examine the results of the batch import on the Manage Item Batches page of the Product Information Management work area. You can examine the record of the import process in the Scheduled Processes work area, using the process ID displayed when you submitted the batch.

      • Optionally, you can add the items to a spreadsheet, to further prepare them for import.

        Action: Select Edit Items in Spreadsheet from the Actions menu.

    • Need Corrections: These items are likely to have errors when imported that are produced by the impact of the rules in the analysis set. For example, import errors would be caused by the triggering of rules with Reject severity.

      Rules that cause errors typically require an you to make a decision on how to correct the data. For example, if there is a rule which says Minimum Temp should be greater than Maximum Temp, the item data could be corrected by correcting either the Minimum Temp or the Maximum Temp attribute values.

      Suggested actions include:

      • You can add the items impacted by a rule to a spreadsheet, to edit them to be suitable for import when impacted by a rule.

        Action: Select Edit Items in Spreadsheet from the Actions menu. In the Edit Items in Spreadsheet: Select Rule dialog box, select the rule set and rule that impacted the items that need correction, then click Download. The spreadsheet opens on your local computer, containing the selected items. After you edit the item data, you can import it.

      • If you determine that corrections are needed because the impacting rule isn't acting as expected, then you can edit the rule instead of the item data. In a row for a selected item, click the Edit Rule control to edit the rule that produced the impact shown on that item. To see which other items are also impacted by the same rule, use the Rule Name filter on the results list, which filters the list to the items affected by the same rule.

        After you make the needed corrections to the item data or to the rules, you can select and add these items to a new or existing batch so that they can be imported into production.

        Action: Select Add Items to Batch from the Actions menu.

How You Use Custom Object Data in Rules

You can use the function getCustomObjectValue() to access data stored in a custom object created in the Oracle Fusion Customer Relationship Management Application Composer.

Consider the following example use case for custom objects. Assume that your company uses a catalog for export-controlled items. You need to assign your inventory items to the catalog based on complex rules that take into account both item attributes and non-item attributes, such as trade agreements. You maintain the item attributes as operational attributes and extensible flexfields in the Product Information Management work area. You maintain the trade agreement attributes in custom business objects designed using Application Composer.

Item rules can refer to both the item attributes and the non-item attributes, to determine if an item should be assigned to the export-controlled items catalog. For accessing the attributes maintained in custom objects, item rules use the function getCustomObjectValue().

In Application Composer, you have defined a custom object called Selling Restrictions, containing a matrix of selling restrictions by target market. You want to refer to that data to determine whether or not an item can be sold, based on its target market. Assume that the example custom object Selling Restrictions contains the data in the following table.

Target Market Restriction

EU

No

North America

Yes

APAC

Yes

Middle East

No

The following example fetches the value of Restriction from Selling Restrictions where the Target Market is North America. That fetched value for Restriction is Yes.

getCustomObjectValue(
"Selling Restrictions",
"Restriction",
"Target Market", [ITEM].[Market Attributes].[Target Market])

Your item rules can use complex business rules to determine attributes for assignment or validation purposes. You can shift some of the data-induced complexity for business rules, such as deriving the restriction for a target market, or deriving the color family name for a given color shade, to custom business objects and then refer to those values in your business rules. This practice of decoupling business rules from the underlying data protects your business rules from changes in data sets, such as color shades being added or dropped, and simplifies maintenance of your business rules.

Another use of custom objects with item rules is to use data available in legacy systems that may not have built-in web services. Relevant data from such systems can be extracted and maintained in custom objects and then be referred to in your item rules. This practice greatly enhances the scope of data used in your business rules.

How You Route Item Changes Through Change Order Types Using Rules

You can use validation rules to select change order types, which enables you to design a dynamic workflow routing that's based on criteria defined in a validation rule.

Define Change Order Types

The intention is to match specific types of change orders to specific modifications to items that require creation of change orders. Begin by defining the change order types that you want to match with item changes.

In the Setup and Maintenance work area, use the Manage Change Order Types task:

  • Offering: Product Management

  • Functional Area: Change Orders

  • Task: Manage Change Order Types

Define Validation Rules

Define validation rules that implement the criteria for matching item changes with change order types.

  1. Define a rule set for validation rules.

    The rule set can have an Association Type of Attribute group or Item class.

  2. Define rules in that validation rule set, to define the criteria for matching an item change with a change order type.

  3. When creating a rule in the rule set, in the Create Rule dialog box, select the Severity as Needs Approval.

  4. The Change Order Type field and the Enforce Change Order Type check box appear. The check box is selected by default.

    These options are only available if the Severity of the rule is Needs Approval.

  5. Search for and select the change order type that you defined.

  6. Define the If Expression and Validation Condition for the rule, with criteria that identify the item change to be matched to the change order type that you associated with the rule.

    Example:

    Field Value

    Change Order type

    Form-Fit-Function Change Order

    Severity

    Needs Approval

    Validation Condition

    !changed([Item].[Physical Attributes])

    User Message

    Any Physical attributes changes should go through a change order of change order type 'Form-Fit-Function Change Order'

  7. Save the rule set, and add it to the master rule set.

Effect on Item Creation

When a user modifies an item that's identified by the validation expression of your rule, the rule controls which change order type is applied.

When a user selects Save > Save to Change Order, the Save to Change Order dialog box reflects the effects of your rule:

  • If Create change order is selected, then the Type field displays the change order type that was determined by your rule. The type can't be changed, if the Enforce Change Order Type check box was selected in the rule.

  • If Add to existing change Order is selected, then the Type field displays only the change orders belonging to the change order type that was determined by your rule.

  • If the user's modifications to the item trigger more than one rule's criteria, the rule with the lowest sequence number in the rule set is applied.

Effect on Import

In import batches, the change order type is governed by the setting of the Change Order option in the Edit Item Batch Options dialog box. If you have selected One per Item then the change order type applied by your rule is used. If no type is set, then the default change order type specified for the item class is used.

Effect on Impact Analysis

To see the change order columns in the impact results table:

  1. Select the Analyze Item Rule Set Impact task in the Product Information Management work area.

  2. Click the name of an analysis to open it.

  3. In the results table for the analysis, select View > Columns, then select Change Order Type and Enforce the change order type.

Examples of Assignment and Validation

Example of Assigning Organizations Using Item Rules

You can define assignment rules that automatically assign items to one or more organizations when a condition is satisfied. The condition can be based on attribute values, another organization assignment, or a catalog assignment.

Scenario

The following table summarizes an example of an item rule that:

  • Is defined in an assignment rule set.

  • Tests whether an item has a product type of In-house. If the result of the test is true, then assign the item to the organizations M2 and M3.

  • Tests whether an item has a product type of Bought-outside. If the result of the test is true, then assign the item to the organization T1.

Note that this rule has more than one THEN expression. You add THEN expressions by using the Add Row action. The expressions are evaluated in the sequence of the rows, and the execution is halted when the first THEN expression evaluates to True. You can add additional rows of Then Expressions by clicking Add Row.

Field Value

Name

Organization assignment

Description

Auto assignment of item to organization based on given attributes.

Return type

Organization

Primary If Expression

true

Secondary If Expression

[Item].[Logistics].[Product_type] == 'In-house'

Return Value

'M2','M3'

Organization codes must be entered in quotation marks, either single, or double.

Secondary If Expression

[Item].[Logistics].[Product_type] == 'Bought-outside'

Return Value

'T1'

User Message

The item was assigned to an organization, based on the product type.

Example of Validating Organizations Using Item Rules

You can define validation rules that automatically validate the assignment of items to one or more organizations when a condition is satisfied. The condition can be based on attribute values, another organization assignment, or a catalog assignment.

Scenario

The following table summarizes an example of an item rule that:

  • Is defined in a validation rule set that's associated with an item class or with an attribute group.

  • Following the assumption that items of the item class Extra Data Servers must not be assigned to the Seattle Distribution Center (code S2), validates that an item isn't assigned to S2 if its item class is Extra Data Servers. This validation is performed by the following steps:

    • Test whether the item class of an item is Extra Data Servers.

    • If the result of the test is true, then test whether the item isn't assigned to the organization S2, by using the function assignedtoOrg(orgCode), which returns true if the item is assigned to the organization specified by orgCode.

Field Value

Name

Organization validation

Description

Validate assignment of Extra Data Servers

Severity

Reject

IF Expression

[Item].[Item Basic].[Item Class] == 'Extra Data Servers'

Validation Condition

!assignedtoOrg('S2')

User Message

Extra Data servers can't be assigned to the Seattle Distribution Center.

Example of Defining Change Policies with Validation Rules

You can define validation rules that automatically enforce change policies by testing for prohibited changes and setting the severity of the validation.

Scenario

The following tables summarize an example of an item rule set and two item rules that enforce a pair of change policies on item structures.

Rule Set Field Value

Business Entity

Item

Rule Set Name

Structure Validation Policy

Rule Set Type

Validation

Association Type

Item Class

Association Name

Root Item Class

The first rule:

  • Tests whether the structure name for the item is Manufacturing.

  • If the test for the structure name evaluates to true, performs the validation specified by the Validation Condition, which is the expression false.

  • If the Validation Condition evaluates to false, then the validation fails, and the action for the Severity is performed, which is Needs Approval

  • Consequently, if a change is being attempted to the Manufacturing structure of the item, then the rule forces you to create a change order and get it approved.

Rule Field Value

Name

Structure Policy Rule 1

Description

Ensures that changes to the Manufacturing structure of the item require approval of a change order.

Valid Component Rules check box

Check box must be deselected.

Severity

Needs Approval

IF Expression

[Structure].[Structure Attributes].[Structure Name] == "Manufacturing"

Validation Condition

false

User Message

Changes to this structure require the creation and approval of a change order.

The second rule:

  • Tests whether the structure name for the item is Engineering and the Life Cycle Phase is Design.

  • If the test for the structure name evaluates to true, performs the validation specified by the Validation Condition, which is the expression false.

  • If the Validation Condition evaluates to false, then the validation fails, and the action for the Severity is performed, which is Reject

  • Consequently, if a change is being attempted to the Engineering structure of the item while the Life Cycle Phase is Design, then the rule rejects the change and prevents it from occurring.

Rule Field Value

Name

Structure Policy Rule 2

Description

Ensures that changes to the Engineering structure can't be made if the life cycle phase is Design.

Valid Component Rules check box

Check box must be deselected.

Severity

Reject

IF Expression

[Item].[Main].[Life Cycle Phase]=="Design"

Validation Condition

false

User Message

Changes to this structure can't be made during the Design life cycle phase.

Example of Changing Item Supplier Site Organization Associations Using Validation Rules

You can define validation rules that automatically govern the creation and updating of item supplier site organization associations and the updating of association attributes, both Primary attributes and extensible flexfields.

Scenario

The following tables summarize an example of an item rule set and rules that govern an item supplier site organization association.

Rule Set Field Value

Business Entity

Item

Rule Set Name

Supplier Association Rule Set

Rule Set Type

Validation

Association Type

Item Class

Association Name

Electronics

The rule:

  • Is applied when an item belongs to the item class Electronics.

  • Because the IF expression is true, performs the validation specified by the Validation Condition.

  • The Validation Condition tests whether name of the item supplier site is Acme.

  • If the Validation Condition evaluates to true, then the validation succeeds, and the action for the Severity is performed, which is Needs Approval

  • Consequently, if the user tries to add an item supplier site association for the supplier Acme to an item belonging to the item class Electronic, then the rule forces you to create a change order and get it approved.

Rule Field Value

Name

Supplier Association Rule

Description

Ensures that a change order is required to add an item supplier site association for the supplier Acme.

Valid Component Rules check box

Check box must be deselected.

Severity

Needs Approval

IF Expression

true

Validation Condition

[Supplier].[Item Supplier Site Organization].[Supplier Name] == "Acme"

User Message

Adding the supplier Acme for Electronics items requires the creation and approval of a change order.

Example of Validating Component Types Using Rules

You can define validation rules that automatically check whether the components associated with the structure are valid. You can specify the list of valid user item types for components in the rule.

Scenario

The following table summarizes an example of an item rule set and item rule that:

  • Tests whether the structure associated with the item is of type Primary.

  • Validates that only components of item types type1 and type2 can be added to a structure of type Primary.

Rule Set Field Value

Business Entity

Item

Rule Set Name

Validate Component Types

Rule Set Type

Validation

Association Type

Item Class

Association Name

Root Item Class

Rule Field Value

Name

Validate Component Types for Primary Structure

Description

Ensures that only components of item type TYPE1 or TYPE2 can be added to a Primary structure.

Valid Component Rules check box

Check box must be selected.

Unlike other validation rules, rules that validate components don't have a Severity, because the item is being validated for only one aspect, and a degree of severity would be redundant.

IF Expression

[Structure].[Structure Attributes].[Structure Name] == "Primary"

Validation Condition

component_type("type1","type2")

User Message

Component type not supported for addition to this structure.

Example of Validating Item Class Changes with Rules

You can define validation rules that automatically check whether the item class of an item has been changed.

Scenario

End users are able to change the item class for an item. You can use a validation rule to restrict whether such a change is to, or from, a specific item class. Use the Severity value of the rule to warn about the change, reject the change, or require that the change needs an approved change order.

The following tables summarize an example of an item rule set and item rule that:

  • Tests whether the associated item is being changed to the item class TCCHLDVR, and also changed to the item class TCParent.

  • If the test for item class changes evaluates to true, perform the validation specified by the Validation Condition, which is the expression false.

  • If the Validation Condition evaluates to false, then the validation fails, and the action for the Severity is performed, which is Reject

  • Consequently, if the item class is being changed to TCCHLDVR and also changed from TCParent, then the change is rejected by the rule.

Rule Set Field Value

Business Entity

Item

Rule Set Name

Validate Item Class

Rule Set Type

Validation

Association Type

Item Class

Association Name

TCParent

Rule Field Value

Name

Validate Source and Target IC

Description

Ensures that items cant' change item class from TCParent to TCCHLDVR.

Severity

Reject

IF Expression

to_item_class("TCCHLDVR") AND from_item_class("TCParent")

Validation Condition

false

User Message

An item class cant' be changed from TCParent to TCCHLDVR.

Blending Rules

To control which item attribute value is imported into production from multiple suppliers of the item, you can define blending rules, which are applied during import, and which determine which supplier's attribute value to import, based on the blending priority that you define in the blending rules.

To use blending rules:

  • Understand how blending rules affect import

  • Examine an example of how blending rules affect import

  • Define blending rule sets and rules, and enable the blending rule sets

How Blending Rules Affect Import

When you import the same item from multiple spoke systems, specific attributes of the item might have different values, depending on the spoke system. To control which attribute value is imported into production, you can define blending rules, which are applied during import, and which determine which spoke system's attribute value to import, based on the blending priority that you define in the blending rules.

During the import process, blending rules use the spoke system item relationships on a production item to identify the spoke system product records to be blended with imported data. Blending rules are applied at the item level, in a specified order of preference among the spoke systems. When the import is uploaded to production, blended values overwrite the item attribute values in production.

Blending rules aren't applied to product data for new items, since there is no existing data to be blended with new data. The spoke system item relationship used by blending rules to relate a spoke system item to a production item isn't created until an item is imported into production.

Blending rules are applied in the following business events:

  • When an existing spoke system provides updates to product data that was imported earlier.

  • When a new spoke system provides data for an existing item.

Blending rules operate during import if:

  • Existing spoke system cross-references are found in the production database.

  • New spoke system cross-references are established as a result of matching with a production item containing spoke system cross-references with other spoke systems.

You can choose to apply blending rules to attributes in the following ways:

  • All attributes in one or more attribute groups. (This is the most common case.)

  • All attributes associated with one or more item classes.

  • One or more attributes from a single attribute group.

For blending to work, you can upload data to the staging area using these means:

  • Product Hub Portal

  • Product Uploads REST Service (using import maps)

    This REST service lets you insert and edit the product data in the staging area.

  • Data uploaded by other means (such as FBDI, ADFdi, Item Batch Maintenance Service) won't be available for blending because this data is uploaded directly to an item batch.

You can create blending rules for these spoke systems, to be applied when data is being imported from the staging area into Product Hub:

  • Supplier

  • Data Pool

  • Internal

After blending is completed, the blended item record overwrites production data for the item.

General Principles of Blending

General principles guiding the application of blending rules include:

  • Blending rules run only if any of the spoke systems mentioned in the blending rule has provided data into the supplier stage. If the higher priority spoke system hasn't provided any data, then whatever is provided by the lower priority or other spoke systems (spoke systems not mentioned in the blending rules) will be imported.

  • If a blending rule is written on an attribute then that rule will run only if that attribute is part of import. The attribute can be part of import because values are provided for that attribute in import.

  • If a blending rule is written on an attribute group then that rule will fire only if any of the attributes of that attribute group are part of import. The attributes can be part of import because values are provided for those attributes.

  • If a blending rule is written on an item class then that rule will run only if items of that item class or its child item classes are being imported.

  • No updates will occur to the items staged in the Staging area of Product Hub Interface. Oracle Fusion Product Hub Portal stores its data in the Staging area of Product Hub Interface. Blending happens only within the import batch. Blended data is then imported to production.

  • If more than one rule exists on the same attribute, then the first rule in the master blending rule set will be run.

  • Products in statuses Rejected or Draft don't get into the batch, so they don't have cross-references, and so they aren't considered for blending.

  • Blending rules defined for an item class which is at a higher level of the item class hierarchy will be inherited to child item classes.

Blending and Synchronization

By selecting or deselecting the Ignore Null check box when you create individual blending rules, you can choose whether to enable the synchronization of null attribute values from the staging area, to the batch interface area, and then to the production area.

  • By default, the Ignore Null check box in a blending rule is selected. If you leave it selected, then null values are ignored during import. Blending is performed, but synchronization of null attribute values isn't. This scenario is called blending-only.

  • If you deselect the Ignore Null check box in a blending rule, then null values being imported replace the corresponding values that exist for the attribute in production. This scenario is called blending-plus-synchronization.

  • The Ignore Null check box can be deselected only if the blending rule is written at attribute group level.

  • If an attribute group is a multi-row extensible flexfield, then synchronization causes the missing rows in the uploaded product data to be removed from the flexfield in production.

  • If an attribute group is used in a single-row extensible flexfield, then the attributes with null values in the uploaded product data are also replaced with nulls in the flexfield in production.

  • Blending-plus-synchronization is only supported for item-level extensible flexfields (single-row, multi-row, and translatable extensible flexfields) for items of all organizations being imported from Data Pool, Supplier and Internal spoke systems.

  • Blending-plus-synchronization is supported for items of master organizations and child organizations.

While data is being imported from item batch to production, synchronization of attribute data is performed, as part of blending rules. The attribute synchronization logic is:

  • Synchronization only occurs if the Ignore Null check box in a blending rule is deselected.

  • Synchronization occurs at two locations:

    • First, while uploading the data to the staging area

    • Second, while importing the data into Product Hub through the item import process

  • If synchronization is enabled for an attribute group (the Ignore Null check box is deselected) then:

    • While inserting data into the staging area, values that are missing in the incoming feed delete the corresponding existing values in the staging area.

    • While importing data into production, attribute values that exist in production but not in the batch are deleted from production.

  • If an attribute group named in a blending rule is a multi-row extensible flexfield, and Ignore Null is deselected, then, while inserting the data into the staging area, values of the attributes of this attribute group will be deleted in the staging area for which the values are missing in the data file being uploaded. This attribute synchronization in the staging area is only supported through the PROCESS operation of the Product Uploads REST Service. Then, while importing the data from an item batch to Product Hub, the data in the batch is compared with the production data. For all extensible flexfield rows in production that aren't in the data being imported, these rows are deleted in production after import. New rows being imported that don't exist in production will be added to production after import, and rows having updates will be updated in production after import. Note that for updating multi-row extensible flexfield attributes, unique row identifiers should be provided in the incoming feed.

  • If an attribute group named in a blending rule is a single-row extensible flexfield, and Ignore Null is deselected, then all the attributes of that attribute group that have no values in the batch are given null values in production after import.

  • Attribute groups for which Ignore Null is deselected in a blending rule are considered as being owned by the higher priority spoke system. This is termed attribute group ownership. Here's an example of attribute group ownership:

    • In a blending rule, spoke system item relationship SpokeA has priority 1 (higher), and SpokeB has priority 2 (lower). The blending rule is associated with attribute group AG_One.

    • Import case A (attribute group ownership not in effect): For SpokeA, Ignore Null is selected, so attribute synchronization isn't in effect.

      • In the staging area, SpokeA doesn't provide data for some attributes of attribute group AG_One. The data in the staging area is then imported into Product Hub.

      • SpokeB then provides the data for the same item in Staging for which SpokeA had provided the data but SpokeB provides data for all the attributes of attribute group AG_One. While importing this data from SpokeB, only those attribute values are imported which weren't provided by SpokeA because the Ignore Null check box was selected for SpokeA in the blending rule.

      • If SpokeA had provided values for all of the attributes of attribute group AG_One, then data of SpokeB for attribute group AG_One wouldn't have been imported.

    • Import case B (attribute group ownership in effect): For SpokeA, Ignore Null is deselected, so attribute synchronization is in effect. Because it has higher priority in the blending rule, and because Ignore Null is deselected, SpokeA is considered the owner of attribute group AG_One.

      • In the staging area, SpokeA doesn't provide data for some attributes of attribute group AG_One. The data in the staging area is then imported into Product Hub. (This is the same as import case A.)

      • Data from SpokeB for attribute group AG_One isn't imported to production, because SpokeB isn't the owner of attribute group AG_One. The null values provided by SpokeA for some of the attributes are retained in production and aren't overwritten by the values from SpokeB.

      • Without attribute group ownership being in effect, the attribute values from SpokeB for which SpokeA had not provided the values would be imported.

Restrictions and Validations

Restrictions and validations on blending rules include:

  • Synchronization of attribute values isn't performed for seeded operational item attributes.

  • Blending rules apply only for the item entity, not for the item revision or supplier entities.

  • Blending rules may be set up on any attributes of an item.

  • Blending rule sets can't be composite rule sets.

  • Blending rules defined at the higher levels of an item class hierarchy are inherited by child item classes.

  • Spoke systems categorized as internal systems, data pool, or supplier are available as source systems for use in blending rules. The predefined Product Information Management Data Hub spoke system isn't available as a source system for use in blending rules.

  • Data uploaded by means other than those identified here (such as Product Hub Portal and Product Uploads REST Service) isn't available for blending because this data is uploaded directly to an item batch. Examples of other means are: FBDI, ADFdi, and Item Batch Maintenance Service.

  • Rule set impact analysis isn't available for blending rule sets.

Define Blending Rule Sets and Rules

Blending rules must be created as part of a blending rule set, and the blending rule set must be associated with the entity containing the attribute whose value you want to control through blending rules.

Defining Blending Rule Sets and Rules: Procedure

To define a rule set and rules for a blending rule:

  1. In the Product Information Management work area, select the Manage Item Rule Sets task.

  2. Select Create from the Manage Rule Sets task bar.

  3. In the Create Rule Set dialog box, make the following required selections:

    • Set Composite to No.

    • Set Type to Blending.

  4. When you set the Type to Blending, the available rule association types are restricted to attribute groups or item classes. In the Association Type field, select either Attribute Group or Item Class.

  5. For an association type, you can select multiple attribute groups or item classes to associate with the rule set. In the Associations field, click the edit control.

  6. In the Select Associations dialog box, click Add, to add an association with the rule set.

    In the Association Name list, search for and select the name of the entity that contains the attribute whose value you want to control with blending rules.

    • For an attribute group association, this entity is the attribute group containing the attribute.

    • For an item class association, this entity is the item class associated with the attribute group containing the attribute.

  7. If you select Draft, then the rule set won't be triggered at all during import.

  8. Click Save and Continue.

  9. In the Rules tab of the Edit Rule Set page for the new rule set, select Create from the Actions menu.

  10. In the Create Rule dialog box, enter an integer in the Sequence field. The sequence number determines the order in which the rule will be triggered when the rule set is triggered.

  11. Using the Attribute list, select the attribute whose values you want to blend during import.

    If you selected multiple associations, then the rule applies to all attributes in the attribute group or item class, and you can't select an individual attribute. Accordingly the Attribute Group and Attribute lists are restricted to the value All.

    Note: The following rule fields aren't used by blending rules:
    • Return Type

    • Target Business Entity

    • Target Attribute Group

    • Target Attribute

  12. In the Details region for the rule, select Create from the Actions menu. Create a blending priority for the rule's associated attribute by selecting a value from the Spoke System list and entering a number in the Priority field.

    Lower priority numbers produce a higher blending priority. A spoke system with priority number 10 has a higher blending priority than a spoke system with priority number 20.

    If the blending rule is associated with an attribute group, you can deselect the Ignore Null check box to enable synchronization of attributes. By default, the check box is selected. Accordingly, attributes aren't synchronized unless you choose to do so.

  13. Repeat the previous step for each spoke system that supplies attribute values that you want to blend.

  14. Define more rules in the rule set, as needed.

  15. Click Save to save the rule set.

  16. Add the rule set to the master blending rule set, to enable its operation during import.

Enabling Blending Rule Sets: Procedure

To enable the triggering of a blending rule, you must add its rule set to the master blending rule set, which is named BLENDING_MASTER_RULE_SET. This composite rule set is predefined. You can't create any other composite blending rule sets. Only rule sets with a Type of Blending can be added to this master set. When a blending rule set is added to the master blending rule set, its blending rules are triggered when you import items into Oracle Fusion Product Hub.

To add a rule set to the master blending rule set:

  1. In the Product Information Management work area, select the Manage Item Rule Sets task.

  2. On the Manage Rule Sets page, search for and select the rule set named BLENDING_MASTER_RULE_SET.

  3. Select Add from the Actions menu.

  4. In the Select and Add: Rule Sets window, use the desired criteria to search for the rule sets that you want to add to the master.

    Tip: You can find all blending rule sets by specifying Blending in the Type field. You can search for your blending rule sets by specifying the association type or association name that you used in your rule sets.
  5. Select the rules sets you want to add, then click OK to add them to the master blending rule set.

  6. The rules sets you added are place at end of the sequence of blending rule sets in the master blending rule set, and are run in that sequence. If there are multiple blending rules defined for an attribute, only the first rule is run.

  7. To change the place of a blending rule set in the sequence, select it and select Edit Sequence from the Actions menu. In the Edit Sequence dialog box, enter the desired sequence number in the Sequence field and click OK. You must first edit the sequence of other rule sets to ensure that the desired sequence number isn't already in use.

Example of Blending Rules

The following example demonstrates the effect of blending rules.

Scenario

For this example, assume that you have defined the blending rules shown in the following list.

  • Blending_Rule_1

    • Item Class: Televisions

    • Attribute Group: Specs

    • Attribute: Frame Description

    • Priority -- Spoke System:

      • 1-- Vendor1 Spoke

      • 2-- Vendor2 Spoke

  • Blending_Rule_2

    • Item Class: Televisions

    • Attribute Group: Specs

    • Attribute: Resolution

    • Priority -- Spoke System:

      • 1 -- Vendor2 Spoke

      • 2 -- Vendor1 Spoke

  • Blending_Rule_3

    • Item Class: Televisions

    • Attribute Group: Specs

    • Attribute: Weight

    • Priority -- Spoke System:

      • 1 -- Vendor3 Spoke

      • 2 -- Vendor4 Spoke

At the beginning of the import process, Vendor1 loads data in Product Hub Portal for the attributes Frame Description and Resolution, as shown in the following list.

  • Vendor1

    • Spoke Item:

      • Vendor1 TV Item

    • Attribute: Frame Description

      • Value: Plastic body with back hinge

    • Attribute: Resolution

      • Value: 1930x1024

You import the loaded data. Since Vendor2 hasn't loaded any data in Product Hub Portal, the values loaded by Vendor1 are imported for both of the attributes, Frame Description and Resolution. Consequently, the attribute values in production data are as follows.

  • Production data in Product Hub:

    • Production item in Product Hub:

      • TV_1

    • Spoke Item cross-reference

      • Vendor1 TV Item

    • Attribute: Frame Description

      • Value: Plastic body with back hinge (initial value, from Vendor1)

    • Attribute: Resolution

      • Value: 1930x1024 (initial value, from Vendor1)

At a later time, Vendor2 loads data in Product Hub Portal for the attributes Frame Description and Resolution, as shown in the following list.

  • Vendor2

    • Spoke Item:

      • Vendor2 Television

    • Attribute: Frame Description

      • Value: Plastic with hinge

    • Attribute: Resolution

      • Value: 2930x1034

Then you try to import the data loaded by Vendor2. You determine that there is a match with the existing production item TV_1, so you create a new spoke system cross-reference with TV_1. Since Blending_Rule_1 gives blending priority for the attribute Frame Description to Vendor1, Vendor1's value for that attribute remains as previously imported into production. Since Blending_Rule_2 gives blending priority for the attribute Resolution to Vendor2, Vendor2's value for that attribute is imported into production. The resulting data is imported into production, as shown in the following list.

  • Production data in Product Hub:

    • Production item in Product Hub:

      • TV_1

    • Spoke Item cross-references

      • Vendor1 TV Item

      • Vendor2 Television

    • Attribute: Frame Description (Vendor1 has blending priority)

      • Value: Plastic body with back hinge (from Vendor1, unchanged)

    • Attribute: Resolution (Vendor2 has blending priority)

      • Value: 2930x1034 (from Vendor2)

At a later time, both Vendor1 and Vendor2 update their data in Product Hub Portal, including changed values for Frame Description and the addition of the new attributes Height and Weight, as shown in the following lists.

  • Vendor1

    • Spoke Item:

      • Vendor1 TV Item

    • Attribute: Frame Description

      • Value: Plastic body of PVC make with metallic back hinge (updated)

    • Attribute: Resolution

      • Value: 1930x1024

    • Attribute: Height (new)

      • Value: 2 Feet (new)

  • Vendor2

    • Spoke Item:

      • Vendor2 Television

    • Attribute: Frame Description

      • Value: PVC body with hinge (updated)

    • Attribute: Resolution

      • Value: 2930x1034

    • Attribute: Weight (new)

      • Value: 5 kg (new)

Then you import the updated data from Vendor2 (but not from Vendor1). The resulting data is imported into production, as shown in the following list.

  • Production data in Product Hub:

    • Production item in Product Hub:

      • TV_1

    • Spoke Item cross-references:

      • Vendor1 TV Item

      • Vendor2 Television

    • Attribute: Frame Description (Vendor1 has blending priority)

      • Value: Plastic body with back hinge (original import, from Vendor1)

    • Attribute: Resolution (Vendor2 has blending priority)

      • Value: 2930x1034 (unchanged, from Vendor2)

    • Attribute: Weight (new, from Vendor2)

      • Value: 5 kg (new, from Vendor2)

Note the following about the import into production data:

  • Since Blending_Rule_1 gives blending priority for the attribute Frame Description to Vendor1, Vendor1's value for that attribute is used instead of Vendor2's updated value, which isn't imported.

  • Because Vendor1's updated data wasn't imported, Vendor1's value for the attribute Frame Description remains as originally imported into production.

  • The new attribute Weight is imported from Vendor2. Even though Blending_Rule_3 is defined on that attribute, the rule isn't triggered because neither Vendor3 or Vendor4 uploaded data in Product Hub Portal, and no spoke system cross-references for these vendors exist or are created by matching during import.

FAQs for Product Rules

Why didn't my rule work?

If a rule that you defined doesn't seem to work as you intend, consider some of these reasons:

  • The rule set containing the rule isn't enabled. To enable a rule set, you must assign it to the master rule set.

  • The rule set containing the rule is in Draft status. Draft status prevents the rule from being triggered during item transactions. It's common to put a rule set in Draft status when starting to define it. To take the rule out of draft status, deselect the Draft check box on the Edit Rule Set page.

  • You defined a rule expression or condition incorrectly. Review the requirements for the If and Then expressions of assignment rules, and for the If expression and Validation Condition of validation rules.

What's a user message and when is it displayed?

The optional user message for a rule is displayed to the end user when:

  • An assignment rule successfully assigns a value to the target attribute.

    You can suppress the display by selecting Hide user message in the rule definition.

  • A validation rule's validation condition evaluates to false.