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:
- Always true: Always matches any product so that actions are performed on it
- Attributes values are missing: Checks if a product doesn’t have values or all values are empty for specified
Attributes - Attributes values contain string: Checks if a product has attribute values for specified
Attributeswhich contain at least one of specifiedStrings - Attribute Value has invalid chars: Checks if any of the values of the selected product’s attributes has any of the invalid chars.
- Classified in Classification: Checks if the product is assigned to at least one of the Classification Groups of the given
Classification - Classification assignment is missing: Checks if a product is not assigned to any group from specified
Classification - Data violates the type definitions: Checks if there are violations in attribute values and compatibility attribute values
- Document assignments are missing: Checks if a product doesn’t have assignments to at least for one document with specified
View TypesandLanguages(optional). - Expression: Evaluates freemarker template with special condition.
- Prices are missing: Checks if a product doesn’t have prices of a given type in a given contract.
- Prices increased over the specified percent: Checks whether the prices have increased beyond a specified percentage threshold.
- Product is assigned to Classification Group: Checks if the product is assigned to specified
Classification Group - Product header information is missing: Checks if at least one of the specified product’s
Fieldsis missing - Product Status is: Checks if a product is in specified
Status - Product Status is in range of: Checks if a product is in specified
Statuses Range - Referenced data is missing: Checks if a product contains data which references other objects which do not exist in system
- Relation to Product or Group exists: Checks if the product has or doesn’t have a Relation to other products or Classification Group
- Required Attribute Values are missing: Checks if a product has missed required attributes that are assigned to its Classification Group
- Translations are missing: Checks if a product doesn’t have values or all values are empty for specified
AttributesandLanguages - Translations contain string: Checks if product has attribute values for specific
Languageswhich contain at least one of specifiedStrings - Attribute length not in range: Checks if product has attribute values where the value length is not within the specified
range - Translations length not in range: Checks if product has attribute values for specific
Languageswhere the value length is not within the specifiedrange
Condition Reference
Section titled “Condition Reference”Explore the full specification of each available condition:
Always true
Section titled “Always true”A condition that always corresponds to any product.
Implementation Class: AlwaysTrue
Attributes values are missing
Section titled “Attributes values are missing”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
Parameters
Section titled “Parameters”Attributes- the attributes to check, required, multiple attributes are possible
Result
Section titled “Result”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.
Attributes values contain string
Section titled “Attributes values contain string”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
Parameters
Section titled “Parameters”Attributes- the attributes to check, required, multiple attributes are possibleStrings- the strings to check, required, multiple values are possible
Result
Section titled “Result”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.
Attribute Value has invalid chars
Section titled “Attribute Value has invalid chars”Checks if any value of the selected product’s attributes has any of the invalid chars. Composite attributes are not checked.
Implementation Class: AttributeValueHasInvalidChars
Parameters
Section titled “Parameters”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.
Result
Section titled “Result”The involvedObject field of condition evaluation result contains a map of values containing invalid chars that can be
used in Actions.
Classified in Classification
Section titled “Classified in Classification”Checks if the product is assigned to at least one of the Classification Groups of the given Classification
Implementation Class: ProductClassifiedInClassification
Parameters
Section titled “Parameters”Classification- classification to check, required
Classification assignment is missing
Section titled “Classification assignment is missing”Checks if the product is not assigned to any group from specified Classification.
Implementation Class: ClassificationAssignmentIsMissing
Parameters
Section titled “Parameters”Classification- the classification to check, required
Data violates the type definitions
Section titled “Data violates the type definitions”Checks if there are violations in attribute values and compatibility attribute values, namely
- value does not fit an Attribute type
booleanmust betrueorfalsedatemust be date stored in theyyyy-MM-ddformatdecimalmust be numeric and with correct decimal separator (internally no thousand’s separator)integermust be numeric, no decimals and in integer rangetext-tableis Markdown table (so it can be rendered as HTML table)
- value does not fit an Attribute type extension (only if value fits Attribute type)
datemust be in from/to date rangedecimalmust be in min/max rangeintegermust be in min/max rangestringmust 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
Result
Section titled “Result”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.
Document assignments are missing
Section titled “Document assignments are missing”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
Parameters
Section titled “Parameters”View Types- view types to check, required, multiple view types are possibleLanguages- languages to check, optional, multiple languages are possible
NOTE:
Languagescan containno languageitem value besides concrete names of languages. That’s mean, that condition checks for specifiedView Typesif the product doesn’t have the assignment to document withnullvalue in theLanguageIdfield.
Result
Section titled “Result”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
nullvalue. Can containno languageitem.
These view types can be referenced in such actions as Send Email and Write To Log File by using expressions.
Expression
Section titled “Expression”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
Parameters
Section titled “Parameters”Expression- freemarker template for evaluation
Result
Section titled “Result”The condition evaluation result contains only true or false, depends on template evaluation.
Prices are missing
Section titled “Prices are missing”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
Parameters
Section titled “Parameters”Price Types- the price types to check, required, multiple price types are possibleContracts- the contract to check, required, multiple Contracts are possible
Result
Section titled “Result”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
Parameters
Section titled “Parameters”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 updateSince Approved Catalog Delivery- compares the price with the last approved catalog deliveryDate (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 frameWithin Last- defines the time range within which the price change is checked, only applicable if “Within Last” is selectedValue- numeric input defining the time rangeUnit- selectable unit (minutes, hours, days, weeks)
Result
Section titled “Result”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
Parameters
Section titled “Parameters”Classification Group- classification group to check, required
Product header information is missing
Section titled “Product header information is missing”Checks if at least one of the specified product’s Fields is missing.
Implementation Class: ProductHeaderInfosMissing
Parameters
Section titled “Parameters”Fields- the fields to check, required, multiple values are possible, the possible values areProduct ID ExtensionExt. Product IDKeywordsManufacturerManufacturer NameMfg Product IDUnit Of MeasureSales Unit Of MeasureValid From/To
Result
Section titled “Result”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.
Product Status is
Section titled “Product Status is”Checks if the product is in specified Status.
Implementation Class: ProductStatusIs
Parameters
Section titled “Parameters”Status- the status to check, required
Product Status is in range of
Section titled “Product Status is in range of”Checks if the product is in specified range of statuses (from/to).
Implementation Class: ProductStatusIsInRange
Parameters
Section titled “Parameters”from- thefrompart of range, if not specified then not limited by thefrompartto- thetopart of range, if not specified then not limited by thetopart
NOTE: both, from and to, can be empty, it means that any status is allowed, practically it means that any product
matches the condition
Referenced data is missing
Section titled “Referenced data is missing”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
Parameters
Section titled “Parameters”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 dataClassifications- checks references for product groups assignmentsAttributes- checks references for attribute valuesDocuments- checks references for document assignmentsPrices- checks references for pricesRelations- checks references for relations (RelatedProduct), direct relations are consideredVariants- checks references for variants
Result
Section titled “Result”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.
Relation to Product or Group exists
Section titled “Relation to Product or Group exists”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
Parameters
Section titled “Parameters”Operator-ExistsorDoesn't existType- the types of Product Relations, required
Required Attribute Values are missing
Section titled “Required Attribute Values are missing”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
Parameters
Section titled “Parameters”Classification- classification to check, required
Result
Section titled “Result”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.
Translations are missing
Section titled “Translations are missing”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
Parameters
Section titled “Parameters”Attributes- the attributes to check, required, multiple attributes are possibleLanguages- the languages to check, required, multiple attributes are possible
Result
Section titled “Result”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.
Translations contain string
Section titled “Translations contain string”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
Parameters
Section titled “Parameters”Attributes- the attributes to check, required, multiple attributes are possibleStrings- the strings to check, required, multiple values are possibleLanguages- the languages to check, required, multiple languages are possible
Result
Section titled “Result”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" }}Attribute length not in range
Section titled “Attribute length not in range”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
Parameters
Section titled “Parameters”Attributes- the attributes to check, required, multiple attributes are possibleMin length- the minimum length of the valueMax length- the maximum length of the value
Result
Section titled “Result”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.
Translations length not in range
Section titled “Translations length not in range”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
Parameters
Section titled “Parameters”Attributes- the attributes to check, required, multiple attributes are possibleLanguages- the languages to check, required, multiple languages are possibleMin length- the minimum length of the valueMax length- the maximum length of the value
Result
Section titled “Result”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" }}