Rule Logic - Custom Logic Blocks

This page describes the Custom Logic Blocks in more detail
Custom Logic Blocks allow the implementation of more complex business logic with the akenza Rule Engine. They enable simple stateless and stateful operations upon rule trigger using custom scripts in Javascript. Custom Logic Blocks are created on organization-level and are therefore available in all workspaces and can be selected when creating a rule.
This webinar explains how to create Custom Rules:
Webinar about how to create Custom Rules
A set of examples for logic blocks can be found here:
A Custom Logic Block consists of a definition of:
  • Inputs: the dynamic data that is evaluated during script execution (sensor data)
  • Parameters: constant values like thresholds
  • A script used to run the logic
In order to keep its usage consistent, it is not possible to edit custom logic inputs and parameters if the Custom Logic Block is assigned to an active rule.


Inputs specify the input data sources for a Custom Logic Block and contain the dynamic data of a device. At least one input needs to be defined in order to create a Custom Logic Block.
Input display/ label name
The input name
Input description
An optional description
Input variable name
A variable name used to access the value inside the script
Default topic
An optional default topic that is preselected when using the logic block
Default data key
An optional default data key that is preselected when using the logic block


Parameters represent static properties that are available during script runtime.
Parameter display/label name
The parameter name
Parameter variable name
A variable name used to access the parameter inside the script
Parameter Type
The data type of the parameter; Numerical, String, or Boolean
Default value
A default value for the parameter

Rule logic script

The Rule logic script defines the custom logic that is evaluated during rule runs.
function consume(event) {
var temperature = event.inputs.temperature;
var threshold = event.properties.tempThreshold;
if (temperature < threshold) {
emit("action", {
message: `it is too cold: the temperature is ${temperature}°C`,
Once a Custom Logic Block is saved, it can be selected as a logic block when creating a rule. Inputs need to be linked to an input device or tag and parameters need to be set.
Further, one or more actions need to be defined. The templating syntax can be used to access the results of a Custom Logic Block {{result.*}}. For example, {{result.message}} for the script shown above.

Custom logic timer

There is also the possibility to emit a timer inside the custom logic block.
function consume(event) {
let time = new Date();
time = new Date(time.setDate(time.getDate() + 1));
time = time.setHours(0,0,0,0);
emit("timer", {runAt: new Date(time)});
Refer to Stateful Operations for more information on how to share data between runs of a rule.