Skip to content

Automation Conditions Reference

Conditions are the “IF” part of automation rules. They determine whether a rule should execute its actions on a given product.

Here is an overview of all available conditions:


Explore the full specification of each available condition:

A condition that always corresponds to any product.

Implementation Class: AlwaysTrue


Checks if the product doesn’t have values or all values are empty for specified Attributes. Multi-language attributes are not checked, use Translations are missing instead. Composite attributes are skipped too.

Implementation Class: AttributesAreMissing

  • Attributes - the attributes to check, required, multiple attributes are possible

The involvedObject field of condition contains attributes that don’t have values or all values are empty for them. This attributes can be used in Actions.

For example, Add Attribute Value for missing Attributes action uses attributes stored in the condition result to modify the product attributes’ values for these attributes only.

Also, these attributes can be referenced in such actions as Send Email and Write To Log File by using FreeMarker expressions.


Checks if Product has not multi-language attribute values for specified Attributes which contain at least one of specified Strings.

Only not multi-language attributes are taken into account in values and composite values.

Composites and their nested attributes are not checked.

Checks for multi-language attributes are provided by Translations contain string

Implementation Class: AttributeContainsString

  • Attributes - the attributes to check, required, multiple attributes are possible
  • Strings - the strings to check, required, multiple values are possible

The involvedObject field of condition evaluation result contains a map with a key corresponding to the attribute object and value corresponding to the set of strings, that attribute value contains respectively. This map can be referenced in such actions as Send Email and Write To Log File by using FreeMarker expressions.


Checks if any value of the selected product’s attributes has any of the invalid chars. Composite attributes are not checked.

Implementation Class: AttributeValueHasInvalidChars

  • Attributes - the attributes to check, required, multiple attributes are possible.
  • Chars to be detected - the invalid chars to look for, required, multiple chars are possible, the possible values are:
    • [^\x00-\x7F] - looks for non-ASCII chars.
    • [\p{C}] - looks for non-printable chars.
    • [\p{Cc}\p{Cf}\p{Co}\p{Cn}] - looks for control chars.
    • [\r\n\t] - looks for delimiter chars.
  • Adjustable chars to be detected - the invalid chars to look for defined by a customer, optional.

The involvedObject field of condition evaluation result contains a map of values containing invalid chars that can be used in Actions.


Checks if the product is assigned to at least one of the Classification Groups of the given Classification

Implementation Class: ProductClassifiedInClassification

  • Classification - classification to check, required

Checks if the product is not assigned to any group from specified Classification.

Implementation Class: ClassificationAssignmentIsMissing

  • Classification - the classification to check, required

Checks if there are violations in attribute values and compatibility attribute values, namely

  • value does not fit an Attribute type
    • boolean must be true or false
    • date must be date stored in the yyyy-MM-dd format
    • decimal must be numeric and with correct decimal separator (internally no thousand’s separator)
    • integer must be numeric, no decimals and in integer range
    • text-table is Markdown table (so it can be rendered as HTML table)
  • value does not fit an Attribute type extension (only if value fits Attribute type)
    • date must be in from/to date range
    • decimal must be in min/max range
    • integer must be in min/max range
    • string must match a regular expression pattern and has to have length in minLength/minLength range
  • value is not from values in a value list specified for type extension
  • there is a multivalued value in DB (JSON array) for a non-multi-valued Attribute, e.g. ["Value 1", "Value 2"]
  • AttributeValue or compatibility attribute value has languageID, although the Attribute was declared as non-multi-language

Composite attributes are not checked.

Implementation Class: DataTypeViolations

The list of violations is stored in involvedObject field of condition evaluation result, these violations can be referenced in such actions as Send Email and Write To Log File.


Checks if the product doesn’t have assignments to at least for one document with specified View Types and Languages (optional). If the product doesn’t have assignments to document with specified view type and language than all its variants will be checked: all of them should have certain assignments.

If the Languages attribute parameter isn’t set, then condition checks if product doesn’t have assignments to at least one document with specified View Types only.

Implementation Class: DocumentsAreMissing

  • View Types - view types to check, required, multiple view types are possible
  • Languages - languages to check, optional, multiple languages are possible

NOTE:

Languages can contain no language item value besides concrete names of languages. That’s mean, that condition checks for specified View Types if the product doesn’t have the assignment to document with null value in the LanguageId field.

The involvedObject field of condition evaluation result contains a map with:

  • key corresponding to the view type for which there are no assignments for this product
  • value corresponding to the set of languages, that are missed for the specified view Type, if language parameter is not empty, otherwise - to null value. Can contain no language item.

These view types can be referenced in such actions as Send Email and Write To Log File by using expressions.


Evaluate the FreeMarker template. Ensure that a condition is included in the template, as its absence will result in a false outcome.

Implementation Class: Expression

  • Expression - freemarker template for evaluation

The condition evaluation result contains only true or false, depends on template evaluation.


Checks if a product doesn’t have prices of a given type in a given contract. Checking prices is useful to check data completeness and data quality inside PIM. If the product doesn’t have prices of a given type in a given contract than all its variants will be checked: all of them should have certain prices.

Implementation Class: PricesAreMissing

  • Price Types - the price types to check, required, multiple price types are possible
  • Contracts - the contract to check, required, multiple Contracts are possible

The involvedObject field of condition evaluation result contains a map with a key which refers to a contractId, and a value - to a set of priceTypeId(s) that are not presented in a product. This values can be used in Actions.


Prices increased over the specified percent

Section titled “Prices increased over the specified percent”

This condition checks whether the prices have increased beyond a specified percentage threshold. If the price increase exceeds the defined percentage, an action can be triggered.

⚠️ Performance Impact: Loading and comparing historical price deltas may affect performance significantly in the case of using this condition.

Implementation Class: PricesHaveChanged.java

  • Maximum Price Increase Percent - defines the percentage threshold for price increases, required,
  • Check Prices Changed - determines the reference point for checking price changes, required, options include:
    • Since Last Update - compares the price with the last update
    • Since Approved Catalog Delivery - compares the price with the last approved catalog delivery
      • Date (for test only) - allows setting a specific date and time for testing purposes
    • Within Last - checks if the price has changed within a specified time frame
      • Within Last - defines the time range within which the price change is checked, only applicable if “Within Last” is selected
        • Value- numeric input defining the time range
        • Unit - selectable unit (minutes, hours, days, weeks)

If the price increase exceeds the defined percentage, then action is triggered.


Product is assigned to Classification Group

Section titled “Product is assigned to Classification Group”

Checks if the product is assigned to specified Classification Group

Implementation Class: ProductAssignedToClassificationGroup

  • Classification Group - classification group to check, required

Checks if at least one of the specified product’s Fields is missing.

Implementation Class: ProductHeaderInfosMissing

  • Fields - the fields to check, required, multiple values are possible, the possible values are
    • Product ID Extension
    • Ext. Product ID
    • Keywords
    • Manufacturer
    • Manufacturer Name
    • Mfg Product ID
    • Unit Of Measure
    • Sales Unit Of Measure
    • Valid From/To

The involvedObject field of condition evaluation result contains the set of fields’ names for which there are not value. These fields’ names can be referenced in such actions as Send Email and Write To Log File by using expressions.


Checks if the product is in specified Status.

Implementation Class: ProductStatusIs

  • Status - the status to check, required

Checks if the product is in specified range of statuses (from/to).

Implementation Class: ProductStatusIsInRange

  • from - the from part of range, if not specified then not limited by the from part
  • to - the to part of range, if not specified then not limited by the to part

NOTE: both, from and to, can be empty, it means that any status is allowed, practically it means that any product matches the condition


Checks if the product contains data which references other objects that do not exist in the system, namely

Master Data (Product)

  • catalogId
  • supplierId
  • manufacturerId
  • statusId
  • unitOfMeasureId
  • salesUnitOfMeasureId

Classifications (ProductGroup)

  • variant
  • group
  • compatibility.attributeValues
  • compatibility.attribute - if a given attribute doesn’t exist, values and language can’t be checked
  • compatibility.language - checks in the case of multi-language attribute (attribute has to exist!)

Attributes (AttributeValue)

  • attribute - if a given attribute doesn’t exist, values and language can’t be checked
  • values
  • language - checks in the case of multi-language attribute (attribute has to exist!)

Composites are not checked.

Product Documents (ProductDocument)

  • documentViewTypeId
  • languageId
  • status
  • variant

Prices (Price)

  • contractId
  • statusId
  • variant
  • currencyId
  • unitOfMeasureId
  • priceTypeId

Relations (ProductRelation, direct relations)

  • statusId
  • typeId
  • languageId
  • variant
  • relatedVariant
  • relatedProduct
  • relatedGroup

Variants (Variant)

  • statusId

Implementation Class: ReferencedDataIsMissing

  • Cases of - the cases to check, required, multiple values are possible, the possible values are (all cases are selected by default)
    • Master Data - checks references for product master data
    • Classifications - checks references for product groups assignments
    • Attributes - checks references for attribute values
    • Documents - checks references for document assignments
    • Prices - checks references for prices
    • Relations - checks references for relations (RelatedProduct), direct relations are considered
    • Variants - checks references for variants

The involvedObject field of condition evaluation result contains the map of missed references. This map can be referenced in such actions as Send Email and Write To Log File by using expressions.


Checks if the product has or doesn’t have a Relation to other products or Classification Group. In case several fields of Relation Types need to be checked, it has ‘AND’ logical operator: all conditions for the Product should match.

Implementation Class: ProductHasRelation

  • Operator - Exists or Doesn't exist
  • Type - the types of Product Relations, required

Checks if the product is

  • assigned to at least one of the Classification Groups of the given Classification. In other case ‘Product is not classified in {classificationId} classification’ message will appear;
  • these Classification Groups have at least one attribute with parameter ‘Required’ = true (‘Is Required’ parameter can be changed in Settings -> Attributes or Settings -> Classifications -> View Groups -> Attributes section). In other case ‘There aren’t required attributes in the Classification Groups’ message will appear;
  • product doesn’t have values or all values are empty for attributes which assigned to Classification Groups in specified Classification

Composite attributes and their nested attributes are not checked.

Implementation Class: RequiredAttributesAreMissing

  • Classification - classification to check, required

The involvedObject field of condition contains attributes that don’t have values or all values are empty for them. This attributes can be used in Actions.

For example, Add Attribute Value for missing Attributes action uses attributes stored in the condition result to modify the product attributes’ values for these attributes only.

Also, these attributes can be referenced in such actions as Send Email and Write To Log File by using FreeMarker expressions.


Checks if the product doesn’t have values or all values are empty for at least one combination of attribute and language for specified Attributes and Languages. Composite attributes are not checked.

NOTE: This condition is similar to Attributes values are missing but also takes into account specified Languages.

Implementation Class: TranslationsAreMissing

  • Attributes - the attributes to check, required, multiple attributes are possible
  • Languages - the languages to check, required, multiple attributes are possible

involvedObject field of condition evaluation result contains a map with a key which refers to an attribute, and a value - to a set of languages for which there are not values or all values are empty. This values can be used in Actions.

For example, Add Attribute Value for missing Attributes action uses this map stored in the condition result to modify the product attributes’ values for the attributes and languages in the map.

Also, these attributes can be referenced in such actions as Send Email and Write To Log File by using expressions.


Checks if product has values for specific Languages which contain at least one of specified Strings. Composite attributes, its nested attributes and not multi-language attributes are not taken into account.

Implementation Class: TranslationsContainsString

  • Attributes - the attributes to check, required, multiple attributes are possible
  • Strings - the strings to check, required, multiple values are possible
  • Languages - the languages to check, required, multiple languages are possible

The involvedObject field of condition evaluation result contains a map with a key corresponding to the attribute object and value corresponding to map with a key language and value strings, that translations of attribute value contains respectively. This map can be referenced in such actions as Send Email and Write To Log File by using FreeMarker expressions.

The structure of the result map is the same as for multi-language attribute value in Product e.g., for attributes: [“ShortDescription”], languages: [“en-GB”, “de-DE”], strings: [“ZenPad”]:

{
"ShortDescription": {
"en-GB": "ZenPad",
"de-DE": "ZenPad"
}
}

Checks if Product has not multi-language attribute values for specified Attributes where the value length is not within the specified range.

Only not multi-language attributes are taken into account in values.

Composites and their nested attributes are not checked.

Checks for multi-language attributes are provided by Translations length not in range

Implementation Class: AttributeLengthNotInRange

  • Attributes - the attributes to check, required, multiple attributes are possible
  • Min length - the minimum length of the value
  • Max length - the maximum length of the value

The involvedObject field of condition evaluation result contains a map with a key corresponding to the attribute object and value corresponding to the values that don’t match the range. This map can be referenced in such actions as Send Email and Write To Log File by using FreeMarker expressions.


Checks if Product has multi-language attribute values for specified Attributes and specific Languages where the value length is not within the specified range.

Composite attributes, its nested attributes and not multi-language attributes are not taken into account.

Implementation Class: TranslationsLengthNotInRange

  • Attributes - the attributes to check, required, multiple attributes are possible
  • Languages - the languages to check, required, multiple languages are possible
  • Min length - the minimum length of the value
  • Max length - the maximum length of the value

The involvedObject field of condition evaluation result contains a map with a key corresponding to the attribute object and value corresponding to the values that don’t match the range. This map can be referenced in such actions as Send Email and Write To Log File by using FreeMarker expressions.

The structure of the result map is the same as for multi-language attribute value in Product e.g., for attributes: [“ShortDescription”], languages: [“en-GB”, “de-DE”], strings: [“ZenPad”]:

{
"ShortDescription": {
"en-GB": "ZenPad",
"de-DE": "ZenPad"
}
}