Rule & Warning types

Summary

In Supplier Data Manager (SDM), rules and warnings control how field values are validated during the Normalisation step. A rule is a hard requirement — a field that fails a rule blocks the job and prevents the user from advancing. A warning is a soft requirement — users can acknowledge the issue and continue. Both rules and warnings share the same set of types described below and are configured per field in the project settings.

General behavior

  • SDM does not execute rules or warnings if the field is empty, except when the requirement level of the field is required, or when the field has a rule of type required, required_with, required_without, or required_on.
  • Rules and warnings are only applied during the Normalisation step.
  • If a field has multiple rules or warnings, they are combined with an AND operator: all rules and all warnings must pass for the field to be valid.

All types

Type Description Example Executed when field is empty Notes
required Makes sure that a value is entered in the field, otherwise an error is displayed. Field A must have a value. YES
required_with Ensures field A is required if certain other fields are completed. If fields B and/or C have values, field A must be completed. YES Options: columns, which (all or any)
required_without Ensures field A is required if certain other fields are empty. If fields B and/or C are empty, field A must be completed. YES Options: columns, which (all or any)
required_on Ensures field A is required if another field matches a specific pattern. Field A is required if field B contains the value "Red". YES Only valid on string fields. Options: column, pattern
regex Ensures the value matches a regular expression pattern. Field A must match the pattern ^[a-zA-Z0-9]+$. Options: pattern
is_true Ensures the field has a boolean value of true. Field A must be set to true.
unique Ensures the value is unique across all rows. Values in field A must be unique across the file. Case-sensitive: "Apple" and "apple" are treated as distinct values.
unique_with Ensures the combination of values from multiple fields is unique across all rows. The combination of values in fields A and B must be unique. Option: column. Case-sensitive: "Apple" and "apple" are treated as distinct values.
unique_on Ensures the value is unique within rows that share a specific condition. Field A must be unique among rows where field B has a specific value (e.g., "Active"). Option: columns. Case-sensitive: "Apple" and "apple" are treated as distinct values.
isin Ensures the value is within a defined set of acceptable values. Field A must be one of ["Red", "Green", "Blue"]. Options: values. Commonly used to validate that option values in Select attributes or family codes are within the allowed set.
max_length Ensures the value does not exceed a maximum number of characters. Field A must not exceed 255 characters. Options: threshold, strict. No type check is performed — this rule can be applied to both string and numeric fields (e.g., for EAN codes with a 13-digit maximum).
max_value Ensures the value does not exceed a maximum number. Field A must be less than or equal to 100. Options: threshold, strict
min_value Ensures the value meets a minimum number. Field A must be greater than or equal to 10. Options: threshold, strict
min_date Ensures a date value is on or after a minimum date. Field A must be on or after 2024-01-01. Options: min_date (ISO 8601 format: YYYY-MM-DD). The field's format property determines how the date string is parsed.
max_date Ensures a date value is on or before a maximum date. Field A must be on or before 2024-12-31. Options: max_date (ISO 8601 format: YYYY-MM-DD). The field's format property determines how the date string is parsed.
superior_to Ensures the value in field A is greater than the value in field B. Field A must be greater than field B. Numeric fields only. Options: column, strict
inferior_to Ensures the value in field A is less than the value in field B. Field A must be less than field B. Numeric fields only. Options: column, strict
uneditable Prevents the field value from being edited after initial entry. Field A cannot be changed once it has been set.
equal_to Ensures the value in field A equals the value in another field. Field A must equal field B. Option: column
any_of Ensures that at least one of several cases passes. Each case contains conditions that must ALL be satisfied, but ANY case can pass for the rule to succeed. Field A must either be 15 or more characters long, OR contain a premium keyword. Options: cases (list of validation cases). Each case has a conditions array. Conditions can include an optional field property to apply the condition to a different field.

Examples

unique_with

An error is displayed for row 5 because the value in field A is not unique when combined with field B.

The screenshot above shows a normalisation step with a unique_with rule violation on row 5: the combination of values in fields A and B is duplicated, triggering an error.

any_of

The any_of rule passes if any of its cases succeed. Within each case, all conditions must pass (AND logic). Use this rule to express "either/or" validation requirements.

{
  "name": "any_of",
  "cases": [
    {
      "conditions": [
        {"name": "regex", "pattern": "^.{15,}$"}
      ]
    },
    {
      "conditions": [
        {"name": "regex", "pattern": ".*(PRO|ELITE|PREMIUM|EXPERT).*"}
      ]
    }
  ]
}
  • Case 1: Field must be at least 15 characters long
  • Case 2: Field must contain a premium keyword (PRO, ELITE, PREMIUM, or EXPERT)
  • Result: The rule passes if either case succeeds (OR logic between cases)
  • Within each case: All conditions must pass (AND logic within a case)

To apply a condition to a different field than the one the rule is defined on, add a field property to the condition:

{
  "name": "any_of",
  "cases": [
    {
      "conditions": [
        {"name": "required"},
        {"name": "isin", "field": "category", "values": ["Electronics", "Appliances"]}
      ]
    }
  ]
}

In this example, the case passes only if the current field is filled in AND the category field contains one of the specified values.