From this article, you will learn:
- What is the Business Rules Validation extension
- Which common business rules it will help you validate
- How to set up the Business Rules Validation extension
- What are the available configuration parameters
- How to set up most common business rules
What is the Rossum Business Rules Validation extension
The Rossum Business Rules Validation extension is a flexible tool that helps you validate extracted and annotated data based on your own business rules. It allows you to check both line items and header fields. If a validation fails, you’ll receive notifications in the form of info, warning, or error messages. This extension makes it easy for you to quickly verify if the data in processed documents is correct and spot any discrepancies.
Common business rules that extension will help you validate
Account Payable Business Rules
- Total Amount is equal to the sum of the Total Base and the Total Tax
- Total Amount for a line item is equal to the sum of the Amount Base (unit price) and the Item Tax
- Total Amount is equal to the sum of the line items’ Total Amount
- Due Date is within 120 days of the Issue Date
- Total Amount is equal to the Amount (unit price with tax) multiplied by the Quantity
- Total Tax is equal to the Tax Base multiplied by the Tax Rate
Logistics Business Rules
- Delivery Date cannot be empty
Sales Order Business Rules
- The Item Code in line items section must follow specific format for each vendor
- Delivery date is present either in header information or in the line items. If it is on line item level, all delivery dates for all the items should be the same.
How to Set Up the Business Rules Validation Extension
Setting up the extension involves a few straightforward steps:
Step 1: Prepare your queues and schemas
Start by identifying the queues containing the documents that require this extension. Then, determine the schema IDs of the fields that the extension will use to check the business rule.
Step 2: Activate the Business Rules Validation Extension in the Rossum Store
To activate the extension, follow these steps in the Rossum application:
- Click on the “Extensions” tab at the top of the app
- Choose the “Rossum store” option to access all available extensions
- Select the “Business Rules Validation” extension
- Click on “Try extension”

Step 3: Specify the queues to which you want to add the extension
In the “Rossum Store Extension Settings” scroll down to “Queues” and select the desired queues where you wish to utilise the extension. Remember to save your changes after selecting the appropriate queues.

Step 4: Configure the Business Rules
You can configure the extension either through the “Configuration” field directly in the app or by using the settings attribute of the hook API object. The configuration follows JSON format and includes a list of business rules that validate values extracted from your documents. You can find available configuration parameters in the table below.

Available configuration parameters
Attribute | Type | Required | Default value | Description |
checks | list | yes | – | It is a parent attribute that holds all the rules. |
rule | string | yes | – | The business rule that will be validated. Expression engine is used – documentation can be found here. |
message | string | yes | – | A message that is shown when business rules validation fails. |
type | string | no | error | Type of the message. Possible values: error – a red error message – stops the automation. Confirming the document is not possible. warning – an orange warning message – does not stop the automation, confirming the document is possible. info – a blue info message – does not stop the automation, confirming the document is possible. |
automation_blocker | boolean | no | false | Allows you to define custom rules for document automation. The behaviour is determined by the attribute setting: false – automation is stopped if the check fails but only if it returns an “error” message type. The document is held for user review. true – automation is stopped every time the check fails, no matter the message type it returns. The document is held for user review. If the check returns an “info” or “warning” message, the annotator will have the option to manually confirm the document. Please note that the automation blocker can only be applied to individual data points and cannot be used at the document level. |
queue_ids | list of integers | no | [] | List of queue IDs. Subset of queues to which the extension is assigned and applied. If not specified, validation applies to all queues to which the function is assigned. |
condition | string | no | ““ | The condition that has to be met in order for validation to be applied. For example you can apply rules only to documents coming from a specific vendor. Expression engine is used – documentation can be found here. |
active | boolean | no | true | true – the business rule is active false – the business rule is skipped |
and, or, all | list | no | – | Allows you to create structured business rules with a dedicated message for each part of the business rule e.g. {checks: [{rule...}{and:[{rule...}{or:[{rule...}{rule...}][][} |
Variables
It is also possible to define variables for better readability of the business rules –
{
"checks": [
(...)
],
"variables": {
"sum_total": "sum({item_line_total_amount, default=0})",
"sum_quantity": "sum({item_quantity})",
"number_items" : "len({item_amount})"
}
}
Empty values
If you need to check whether a value on a document is empty or not, you can use two functions: is_empty() and has_value(). For further details, please refer to the Expression Engine documentation.
Configuration examples
During the setup of business rules, you have the ability to refer to extracted data from a document using the schema IDs assigned to specific fields. For instance, if the field “Total Amount” has the schema ID “amount_total,” you should utilize “{amount_total}
” within your business rules to reference that particular value.
Account Payable Business Rules
- Total Amount is equal to the sum of the Total Base and the Total Tax
"rule": "{amount_total} == {amount_total_base} + {amount_total_tax}",
"message": "Total amount is not equal to the sum of amount base and the tax"
- Total Amount for a line item is equal to the sum of the Amount Base (unit price) and the Item Tax
"rule": "{item_amount_total} == {item_amount_base} + {item_tax}",
"message": "Line total is not equal to the sum of line amount base and the tax"
- Total Amount is equal to the sum of the line items’ Total Amount
"rule": "sum({item_amount_total}) == {amount_total}",
"message": "The sum of line items is not equal to the total amount."
- Due Date is within 120 days of the Issue Date
"rule": "{date_due} <= {date_issue} + timedelta(days=120)",
"message": "Due date is not within 120 days of the issue date."
- Total Amount is equal to the Amount (unit price with tax) multiplied by the Quantity
"rule": "{item_amount_total} == {item_amount} * {item_quantity}",
"message": "Line item total is not equal to unit price multiplied by quantity."
Logistics Business Rules
- Delivery Date cannot be empty
"rule": "has_value({date_delivery})",
"message": "Delivery date cannot be empty."
Sales Order Business Rules
- The Item Code in line items section must follow specific format on invoices from Rossum
"rule": "regexp('[\\d]{2}-X-[\\d]+',{item_code})",
"condition": "{sender_name} == 'Rossum'",
"message": "Rossum item code is - two-digit number followed by "-X-" and then one or more digits. "
- Delivery date is present either in header information or in the line items. If it is on line item level, all delivery dates for all the items should be the same.
"or": [
{
"rule": "has_value({delivery_date})",
"message": "Delivery date is empty."
},
{
"and": [
{
"rule": "has_value({line_delivery_date})".
"message": "Line item delivery date cannot be empty."
},
{
"rule": "unique_len({line_delivery_date}) == 1".
"message": "Delivery date of all items must be the same."
}
]
}
]
Important:
- In case of rules that apply to line items the extension displays the message for all the items that are breaking the rule.
- It is not possible to use “ symbol in rule content, please use ‘ instead.
- To indicate empty value please use ‘ ‘
- To build complex, string-based, validation rule you can use regular expressions.