Route Communication
Manually routing blocked invoices to the correct stakeholders is a time-consuming and error-prone process. This automation solution streamlines your workflow by identifying blocked invoices and automatically notifying the appropriate account owners.
By leveraging Action Flows and custom Assignment Rules, you can ensure the right data reaches the right people instantly, allowing your team to focus on resolution rather than administration. This scalable approach handles high volumes of data with precision, ensuring that both blocked and unblocked invoices are communicated to the relevant recipients without manual intervention.
This Action Flow acts as an intelligent dispatcher for your invoice data. It follows a logic-driven path to ensure data integrity and targeted communication:
Data extraction and validation: Connects to your data source to pull essential invoice details, including customer names, net values, and block status.
Conditional routing: Automatically segregates data into two distinct paths:
Blocked invoices: Sent to specific assignees for urgent review.
Standard invoices: Sent to a general recipient for routine monitoring.
Intelligent assignment: Uses an Assignment Rule to look up the specific employee responsible for each customer, ensuring personalized and relevant notifications.
Aggregated reporting: Groups multiple invoices into a single, clean HTML table so stakeholders receive one consolidated update rather than multiple individual emails.
Below you will find the step-by-step guide for configuring each module of the above Action Flow.
To get the data you want to send to an assignee as well as to find the right assignee you have to set up the Celonis Query Data module. We use some demo data here as an example, getting Customer Names, Net Value and the Information if the Payment was blocked
.
![]() |
Configuration:
Action Flows Module: Celonis
Action: Query Data
![]() |
We add a router after we consolidated the data to be able to act in two different ways depending on the status of the payment (if it is blocked or not). We will configure the filters at a later point so just use the Router to create two routes.
![]() |
Configuration:
Action Flows Module: Flow Control
Action: Router
In this module we focus on two important steps:
1. Preparing the data to be sent
Text:
<tr>
<td>{{1.`Customer Name`}}</td>
<td>{{1.`Net Value`}}</td>
</tr>Note
This format helps you to build a HTML table.
2. The grouping by a specific Customer
Group by: Customer Name Item of the Celonis Query Data module
This ensures we get an output where we have the prepared data grouped by the respective Customer.
![]() |
Configuration:
Action Flows Module: Tools
Action: Text aggregator
![]() |
To make sure only the data of those customers where the payment is blocked gets forwarded on the first route we add a filter.
Note
If you add a filter, be aware to choose the right 'comparing' condition. We chose 'Equal to' (for text operators). But if you want to compare case insensitive you can select another option.
![]() |
5. (A) Find the right Assignee
![]() |
Configuration:
Action Flows Module: Celonis
Action: Get Assignee
After we got the data for the specific Customer we want to investigate the right person to send this data to.
If you configured it right you should be able to find it in the dropdown menu within the Get Assignee module and the defined field should pop up when selecting the rule. In our example case we have to input the Customer Name which we used for the group by in the module before to investigate which employee is responsible.
Name: Key Item of the Text Aggregator module (→ Customer Name)
Example Assignment Rule:
![]() |
Example Output of the Get Assignee module:
![]() |
![]() |
Configuration:
Action Flows Module: Email
Action: Send an Email
Within our Assignment Rule we defined to get the email addresses of the people in charge of the specific customer back which we now use to write an email.
To: Assignee Value item of the Get Assignee module
Subject: Define the subject of the mail, e.g. Blocked Orders for [choose the key item of the Text aggregator module to get the customer name here]
Content Type: HTML
Content:
<html>
<head>
<style> table, th, td {border: 1px solid black;border-collapse: collapse;} </style>
</head>
<body>
<h3>Hello!</h3>
<h4>Please find all currently blocked orders for {{3.`__IMTKEY__`}} below.</h4>
<table style="width:100%">
<tr>
<th>Customer</th>
<th>Net Value ($)</th>
</tr>
{{3.text}}
</table>
</body>
</html>![]() |
Text:
<tr>
<td>{{1.`Customer Name`}}
<td>{{1.`Net Value`}}![]() |
Configuration:
Action Flows Module: Tools
Action: Text aggregator
![]() |
To make sure only the data of those customers where the payment is not blocked gets forwarded on the first route we add a filter. You could also just tick the box for fallback route to make sure every bundle which doesn't fit the filter defined before will get forwarded using this route.
Note
If you add a filter, be aware to choose the right 'comparing' condition. We chose 'Equal to' (for text operators). But if you want to compare case insensitive you can select another option.
![]() |
![]() |
Configuration:
Action Flows Module: Email
Action: Send an Email
Within our assignment rule we defined to get the email addresses of the people in charge of the specific customer back which we now use to write an email.
To: choose a recipient here
Subject: Define the subject of the mail, e.g. Daily Orders for [choose the key item of the Text aggregator module to get the customer name here]
Content Type: HTML
Content:
<html>
<head>
<style> table, th, td {border: 1px solid black;border-collapse: collapse;} </style>
</head>
<body>
<h3>Hello!</h3>
<h4>Please find all relevant orders for today below.</h4>
<table style="width:100%">
<tr>
<th>Customer</th>
<th>Net Value ($)</th>
</tr>
{{4.text}}
</table>
</body>
</html>![]() |













