Skip to main content

RuleNodes

RuleNodes​

RuleNodes are the functional building blocks of a RuleChain in optiCLOUD. They determine how incoming messages are filtered, enriched, transformed, stored, or forwarded to other systems.

This page provides a practical overview of the available nodes and their areas of use:

  • Which nodes are available?
  • What are they used for?
  • Which outputs or relations do they provide?

Overview by Category​

Filter Nodes​

RuleNodePurpose
Message Type FilterOnly allows specific message types to pass
Message Type SwitchRoutes messages to different paths depending on message type
File Type SwitchBranches file messages by file type
File Names FilterFilters file names by prefixes
Device FilterRestricts processing to selected devices
Script (Filter)Executes custom filter logic with JavaScript
SwitchRoutes messages to dynamic outputs using a script
Check Existence FieldsChecks whether fields exist in the message or metadata
GPS Geofencing FilterOnly allows messages inside a geofence to pass

Action Nodes​

RuleNodePurpose
Save TimeseriesStores telemetry as time series
Save AttributesStores attributes in a selected scope
Save AlarmsStores alarm states from alarm messages
Create AlarmCreates or updates an alarm
Clear AlarmClears an existing alarm
Alarm CounterCounts alarms within a time window
LogWrites debug or log output
GeneratorGenerates periodic messages
Message CountCounts incoming messages and publishes the counter
DelayDelays forwarding of a message
Aggregate OSF FileReads OSF files and creates telemetry from them
Aggregate JSONL FileReads JSONL files and creates telemetry from them
Process Raw Data FileProcesses file operations in blob storage
Generate ReportCreates reports for a defined time period
Device SystemAggregates data across multiple devices
GPS Geofencing EventsCreates events when entering or leaving a geofence
RPC Call RequestSends an RPC call to a device
RPC Call ReplyReplies to an incoming RPC call

Enrichment Nodes​

RuleNodePurpose
Originator AttributesLoads attributes of the originator into metadata
Originator TelemetryLoads telemetry of the originator into metadata
Originator FieldsAdds master data of the originator
Tenant DetailsAdds tenant information

Transformation Nodes​

RuleNodePurpose
Script (Transform)Changes the message, metadata, or message type using JavaScript
To EmailBuilds an email object from a message

External Nodes​

RuleNodePurpose
REST API CallSends data to an external REST interface
MQTTPublishes messages to an MQTT broker
KafkaPublishes messages to a Kafka topic
RabbitMQSends messages to RabbitMQ
AWS SQSSends messages to an SQS queue
AWS SNSPublishes messages to an SNS topic
GCP Pub/SubPublishes messages to Google Pub/Sub
Send EmailSends an email via SMTP

Scheduler Nodes​

RuleNodePurpose
Create Scheduled TaskSchedules a delayed one-time execution
Clear Scheduled TaskDeletes a previously scheduled task

Event and Alarm Nodes​

RuleNodePurpose
Complex AlarmCreates alarms based on complex real-time patterns
Complex Event ProcessingEvaluates file data using event rules
Enrich AlarmAdds extra information to existing alarms

Detailed Overview​

Filter Nodes​

Message Type Filter​

Category: Filter
Outputs: True, False

The node checks whether the message type of the incoming message is included in a configured list. If it matches, the message continues through True; otherwise through False.

Configuration​

LabelRequiredDescription
Message Types FilterYesList of allowed message types. At least one type must be entered.

Supported values include POST_ATTRIBUTES_REQUEST, POST_TELEMETRY_REQUEST, TO_SERVER_RPC_REQUEST, TO_DEVICE_RPC_REQUEST, ACTIVITY_EVENT, INACTIVITY_EVENT, CONNECT_EVENT, DISCONNECT_EVENT, BLOB_STORE_REQUEST, and POST_ALARMS.

Example​

Use this node when only telemetry data should be processed further. In that case, configure POST_TELEMETRY_REQUEST and connect the True output to the next node. That downstream node will then only receive messages of type POST_TELEMETRY_REQUEST.


Message Type Switch​

Category: Filter
Outputs: one per message type plus Other

The node distributes messages based on their message type to fixed outputs. It is useful as an early dispatcher in a RuleChain when different message types should be handled in separate branches.

Configuration​

This node has no configurable options. The outputs are fixed.

OutputCondition
POST_ATTRIBUTESMessage type is POST_ATTRIBUTES_REQUEST
POST_TELEMETRYMessage type is POST_TELEMETRY_REQUEST
POST_ALARMSMessage type is POST_ALARMS
BLOB_STORE_REQUESTMessage type is BLOB_STORE_REQUEST
RPC_REQUEST_FROM_DEVICEMessage type is TO_SERVER_RPC_REQUEST
RPC_REQUEST_TO_DEVICEMessage type is TO_DEVICE_RPC_REQUEST
ACTIVITY_EVENTMessage type is ACTIVITY_EVENT
INACTIVITY_EVENTMessage type is INACTIVITY_EVENT
CONNECT_EVENTMessage type is CONNECT_EVENT
DISCONNECT_EVENTMessage type is DISCONNECT_EVENT
OtherAll other message types

Example​

In a root RuleChain, this node can be placed directly after the input to split telemetry, attributes, alarms, RPC messages, and file operations into separate processing branches.


File Type Switch​

Category: Filter
Outputs: OSF, JSONL, Other

The node branches file messages based on the file extension. It is used in file pipelines after a file operation has been identified as BLOB_STORE_REQUEST.

Configuration​

This node has no configurable options. Detection is based on the file extension in the metadata.

OutputDetected file extensions
OSF.osf, .osfz
JSONL.log, .log.gz
OtherAll other file extensions

Example​

Route .osf files to Aggregate OSF File.


File Names Filter​

Category: Filter
Outputs: True, False

The node only forwards file messages through True if the file name starts with one of the configured prefixes.

Configuration​

LabelRequiredDescription
File PrefixesYesList of file name prefixes. The check is case-sensitive.

Notes​

  • An empty prefix list causes all messages to go through False.
  • The file name is read from the message metadata, usually from fileName.

Example​

If a device uploads files with data_ and config_, two File Names Filter nodes can be used to process both groups separately.


Device Filter​

Category: Filter
Outputs: True, False

The node restricts processing to selected devices. Depending on the setting, the device list can be used as an allowlist or blocklist.

Configuration​

LabelRequiredDescription
DevicesYesDevice selection via multi-select.
Allow selected devicesYesEnabled: only selected devices go through True. Disabled: selected devices are blocked.

Outputs​

OutputCondition
TrueDevice is allowed or not blocked
FalseDevice is not allowed or explicitly blocked

Example​

If a rule should only run for specific devices, the Device Filter can be placed before it and only pass the selected devices to the next node.


Script (Filter)​

Category: Filter
Outputs: True, False

The node executes a JavaScript function. If the script returns true, the message continues through True. If it returns false or the script fails, the message continues through False.

Configuration​

LabelRequiredDescription
Filter FunctionYesJavaScript function with the signature Filter(msg, metadata, msgType).

Script Context​

VariableDescription
msgJSON message body
metadataMessage metadata
msgTypeMessage type

Example​

var threshold = parseFloat(metadata.tempThreshold) || 50;
return msg.temperature > threshold;

Switch​

Category: Filter
Outputs: dynamic via script

The node forwards a message to one or more named outputs. The output names are returned by a JavaScript function as an array.

Configuration​

LabelRequiredDescription
Switch FunctionYesJavaScript function with the signature Switch(msg, metadata, msgType).

The script must return an array of strings. Each string corresponds to an output name.

Notes​

  • Output names without a connection are ignored.
  • An empty array discards the message.
  • Matching connections should be created in the RuleChain for all possible return values.

Example​

The following function checks the temperature value of a message and routes the message differently depending on the value.

  • The highTemp relation could be connected to an alarm node that creates a High Temperature alarm.
  • The lowTemp relation could be connected to an alarm node that creates a Low Temperature alarm.
  • The normalTemp relation could be connected to nodes that set an attribute such as TempStatus = OK.
function nextRelation(msg) {
if(msg.temperature > 50){
return ['highTemp'];
} else if (msg.temperature < 20){
return ['lowTemp'];
} else {
return ['normalTemp'];
}

}
return nextRelation(msg);

Check Existence Fields​

Category: Filter
Outputs: True, False

The node checks whether specific fields are present in the message body and/or metadata. This protects downstream nodes from incomplete messages.

Configuration​

LabelRequiredDescription
Message DataNoField names that must exist in the message body.
Message MetadataNoField names that must exist in the metadata.
Check All Keys PresentYesEnabled: all listed fields must exist. Disabled: at least one field must exist.

At least one of the two fields messageNames or metadataNames must contain entries.

Example​

Before a Script node, you can check whether all channels used in the script are actually present in the message. This prevents the script from failing and reduces script complexity, because you do not need additional if/else checks for missing channels.


GPS Geofencing Filter​

Category: Filter
Outputs: True, False

The node checks whether GPS coordinates are inside a defined geofence. The check is stateless and evaluates only the current message.

Configuration​

LabelRequiredDescription
Latitude Key NameYesField name for the latitude in the message body.
Longitude Key NameYesField name for the longitude in the message body.
Fetch Perimeter Info from MetadataYesEnabled: the geofence definition is read from metadata. Disabled: the geofence is configured statically in the node.
Perimeter TypeYes, for static configurationCircle or Polygon.
Circle fieldsYes, for circleCenter point, radius, and unit of the circle.
Polygon DefinitionYes, for polygonGeoJSON or WKT definition of the polygon.

Note​

GPS Geofencing Events is used for stateful enter/leave events.

Example​

Only process telemetry when a vehicle is within a defined zone. Otherwise, the telemetry is discarded.


Action Nodes​

Save Timeseries​

Category: Action
Outputs: Success, Failure

The node stores telemetry data from the message body as time series values in the database.

Configuration​

LabelRequiredDescription
Default TTLYesLifetime of stored data points in seconds. 0 means no automatic deletion.
Enable Type CastYesConverts numeric or boolean string values to native data types.

Input​

The message type must be POST_TELEMETRY_REQUEST. The message body must be a JSON object or an array of JSON objects containing a ts timestamp.


Save Attributes​

Category: Action
Outputs: Success, Failure

The node stores key-value pairs from the message body as attributes of the originator entity.

Configuration​

LabelRequiredDescription
Attribute ScopeYesTarget scope for the attributes.
Enable Type CastYesConverts numeric or boolean string values to native data types.
ScopeMeaning
CLIENT_SCOPEAttributes reported by the device and visible to the device.
SHARED_SCOPEServer-side attributes that can be distributed to the device.
SERVER_SCOPEInternal server attributes that are not sent to the device.

Input​

The message body must be a JSON object. Each key is stored as an attribute name.


Save Alarms​

Category: Action
Outputs: Activated, Deactivated, Sustained

The node processes messages of type POST_ALARMS and stores alarm states in the database. It maps alarm state transitions.

Outputs​

OutputMeaning
ActivatedA new alarm was opened or a cleared alarm became active again.
DeactivatedAn active alarm was cleared.
SustainedAn already active alarm remains active.

Configuration​

LabelRequiredDescription
PropagateYesSpecifies whether alarms are propagated to parent entities.

Input​

The message must be of type POST_ALARMS and contain alarm data according to the platform alarm model.


Create Alarm​

Category: Action
Outputs: Created, Updated, False

The node creates an alarm for the message originator or updates an existing alarm of the same type. Alarm details are built from the message and metadata using JavaScript.

Outputs​

OutputMeaning
CreatedA new alarm was created.
UpdatedAn existing alarm of this type was updated.
FalseThe script did not produce an alarm.

Configuration​

LabelRequiredDescription
Alarm Details BuilderYesJavaScript function Details(msg, metadata, msgType) for building alarm details.
Alarm TypeYesAlarm type. Supports ${metadata.key} patterns.
Alarm SeverityYesSeverity: CRITICAL, MAJOR, MINOR, WARNING, INDETERMINATE.
PropagateYesPropagates the alarm to parent entities.

Metadata after Processing​

The node adds values such as alarmType, alarmIsNew, alarmSeverity, and alarmId.

Example​

A preceding Script Filter checks msg.temperature > 80. On True, this node creates a HighTemperature alarm with severity MAJOR. The details function can, for example, keep the highest temperature seen while the alarm remains active and gets updated.

var details = {};
if (metadata.prevAlarmDetails) {
details = JSON.parse(metadata.prevAlarmDetails);
if (parseFloat(details.highestTemp) < msg.temperature){
details.highestTemp = msg.temperature;
}
}
return details;

Clear Alarm​

Category: Action
Outputs: Cleared, False

The node clears an active alarm of the configured type for the message originator.

Outputs​

OutputMeaning
ClearedA matching active alarm was found and cleared.
FalseNo matching active alarm was found.

Configuration​

LabelRequiredDescription
Alarm Details BuilderYesJavaScript function for the final alarm details when clearing the alarm.
Alarm TypeYesAlarm type that must exactly match the previously created alarm.

Metadata after Processing​

The node adds alarmType and alarmId.

Example​

If a device reports temperature < 70 again, Clear Alarm can clear the previously created HighTemperature alarm.

info

The alarm type is case-sensitive. If a Create Alarm node created an alarm of type HighTemperature, exactly that HighTemperature alarm type must also be configured in the Clear Alarm node so it can be cleared.


Alarm Counter​

Category: Action
Outputs: Success, Failure

The node counts alarms based on configured criteria within a time window and stores the results as server attributes on the message originator.

Configuration​

The node contains a list of counter definitions.

LabelRequiredDescription
Find by Field NameYesAlarm field to filter by, for example severity or type.
With Field ValueYesValue the field must have, for example CRITICAL.
Save in Server AttributeYesName of the server attribute where the counter is stored.
Time Period Alarm ConsideredYesTime window in seconds. 0 means no time limit.

Example​

With

  • fieldName = severity
  • fieldValue = CRITICAL
  • attributeName = criticalAlarms24h
  • periodInSeconds = 86400

the number of critical alarms in the last 24 hours is counted and stored in the server attribute criticalAlarms24h.


Log​

Category: Action
Outputs: Success, Failure

The node writes a JavaScript-generated text to the server log and forwards the original message unchanged.

Configuration​

LabelRequiredDescription
Log FunctionYesJavaScript function ToString(msg, metadata, msgType) that returns the log text.

Notes​

  • The node is mainly intended for development, analysis, and troubleshooting.
  • It should be used sparingly and ideally only after consulting OptiMEAS, because a Log node is mainly useful when troubleshooting errors that the user may not be able to resolve independently.

Generator​

Category: Action
Outputs: Success, Failure

The node generates periodic messages using JavaScript and feeds them into the RuleChain. It can be used for testing, simulation, or time-based workflows.

Configuration​

LabelRequiredDescription
Message CountYesNumber of messages to generate. 0 means unlimited.
Period in SecondsYesInterval between generated messages in seconds.
OriginatorYesOrigin device for the generated messages.
Generator FunctionYesJavaScript function Generate(prevMsg, prevMetadata, prevMsgType).

The function must return msg, metadata, and msgType.

Example​

If you want to build and test a RuleChain but currently do not have a real device available, or no device is sending live data at that moment, you can use the Generator node to create artificial messages. For realistic testing, those generated messages should mirror the expected messages of a real device as closely as possible.

The following example creates messages with:

Telemetry channels: {"temperature": 42} and {"humidity": 77}

Metadata: {"data": 40}

Type: POST_TELEMETRY_REQUEST

var msg = { temperature: 42, humidity: 77 };
var metadata = { data: 40 };
var msgType = "POST_TELEMETRY_REQUEST";

return { msg: msg, metadata: metadata, msgType: msgType };

In the example above, the generated messages are static and always contain the same values (42, 77, 40). A generator can also produce varying data, for example:

var temp = Math.floor(Math.random() * max);
var hum = Math.floor(Math.random() * max);
var meta = Math.floor(Math.random() * max);

var msg = { temperature: temp, humidity: hum };
var metadata = { data: meta };
var msgType = "POST_TELEMETRY_REQUEST";

return { msg: msg, metadata: metadata, msgType: msgType };

Note​

In production environments, the interval should be chosen carefully to avoid unnecessary message load.


Message Count​

Category: Action
Outputs: Success, Failure

The node counts messages within a time interval and publishes the counter as telemetry.

Configuration​

LabelRequiredDescription
Interval in SecondsYesLength of the counting window in seconds.
Output Timeseries Key PrefixYesTelemetry key for the counter value.

Output​

At the end of each interval, a POST_TELEMETRY_REQUEST message is generated, for example:

{
"messageCount": 42
}

Incoming messages are also forwarded unchanged through Success.


Delay​

Category: Action
Outputs: Success, Failure

The node holds messages back for a configured duration and then forwards them. The delay can be static or determined via metadata.

Configuration​

LabelRequiredDescription
Use Metadata Period PatternYesEnables a dynamic delay via metadata.
Period in SecondsYes, if staticStatic delay in seconds.
Period in Seconds PatternYes, if dynamicMetadata field or ${...} expression for the delay.
Max Pending MessagesYesMaximum number of queued messages.

Notes​

  • Pending messages are lost on server restart because they are not stored persistently.
  • If too many queued messages are reached, new messages go through Failure.

Aggregate OSF File​

Category: Action
Outputs: Success, Failure

The node loads a referenced OSF file from a BLOB_STORE_REQUEST and processes it.

Input and Output​

  • Input: BLOB_STORE_REQUEST with method GET.
  • The metadata must contain the reference to the stored file.
  • For each detected time interval, the node creates a POST_TELEMETRY_REQUEST message with the measured values.

Processing Chain​

File Type Switch [OSF]
-> Aggregate OSF File [Success]
-> Save Timeseries

Aggregate JSONL File​

Category: Action
Outputs: Success, Failure

The node loads a JSONL file from a BLOB_STORE_REQUEST and processes it.

Input and Output​

  • Input: BLOB_STORE_REQUEST with method GET.
  • The file must contain valid JSONL.
  • Each line generates a POST_TELEMETRY_REQUEST message through Success.

Processing Chain​

File Type Switch [JSONL]
-> Aggregate JSONL File [Success]
-> Save Timeseries

Process Raw Data File​

Category: Action
Outputs: Download, Upload, Delete, Other

The node classifies BLOB_STORE_REQUEST messages by file operation and forwards them to the matching output.

Configuration​

LabelRequiredDescription
Selected ScopesYesAttribute scopes that should be processed.
Selected MethodsYesHTTP methods or file operations that should be forwarded.
MethodOutputMeaning
PUTUploadFile was uploaded.
GETDownloadFile should be downloaded.
DELETEDeleteFile was deleted.
otherOtherUnknown or unconfigured operation.

Example​

Upload can be connected to File Type Switch to distinguish OSF and JSONL files further.


Generate Report​

Category: Action
Outputs: Success, Failure

The node creates a report for the message originator over a configured time window.

Configuration​

SectionFields
Report typereportType with values such as DEVICE_ACTIVITY, TELEMETRY, DEVICE_STATISTIC, ALARM, OSF_DATA, JASPER_TEMPLATE.
Conditional fieldsalarmSearchStatus, templateId, keys, sources, depending on the report type.
Time windowuseMetadataIntervalPatterns, startInterval, startIntervalTimeUnit, endInterval, endIntervalTimeUnit, startIntervalPattern, endIntervalPattern.

Example​

For a daily telemetry export, reportType = TELEMETRY can be configured with a one-day time window and the desired telemetry keys.


Device System​

Category: Action
Outputs: Success, Failure

The node processes data that belongs to a device system. Data from multiple related devices can be aggregated or correlated.

Configuration​

This node has no configurable UI options. Its internal version is set by the platform.

Notes​

  • The originator must belong to a configured device system.
  • The structure of the device system is loaded from the database.
  • The node is only relevant when the device system feature is used.

GPS Geofencing Events​

Category: Action
Outputs: Entered, Left, Inside, Outside

The node tracks the geofence state per device and creates events when entering or leaving an area. Unlike GPS Geofencing Filter, this node is stateful.

Configuration​

The coordinate and geofence fields are the same as in GPS Geofencing Filter. In addition, minimum durations are configured:

LabelDescription
Minimal Inside DurationTime a device must remain inside the area before Entered is generated.
Inside Duration UnitTime unit for minInsideDuration.
Minimal Outside DurationTime outside the area before Left is generated.
Outside Duration UnitTime unit for minOutsideDuration.

Outputs​

OutputMeaning
EnteredDevice stayed inside long enough and was previously outside.
LeftDevice stayed outside long enough and was previously inside.
InsideDevice is inside, but the minimum duration has not been reached yet.
OutsideDevice is outside, but the minimum duration has not been reached yet.

RPC Call Request​

Category: Action
Outputs: Success, Failure, Timeout

The node sends an RPC call from the server to a device and waits for the response.

Configuration​

LabelRequiredDescription
TimeoutYesWait time in seconds before the message continues through Timeout.

Input and Output​

The message body must contain method and params. The originator must be a device. On Success, the device response replaces the message body.

Example​

{
"method": "emergencyShutdown",
"params": { "reason": "HighTemperature" }
}
info

The device must be configured accordingly so that it can actually execute the required Remote Procedure Calls.


RPC Call Reply​

Category: Action
Outputs: Success, Failure

The node sends a response back to an RPC request coming from a device. The response content is built from the current message body.

Configuration​

LabelRequiredDescription
Request ID Metadata AttributeNoMetadata field containing the RPC request ID.

Input​

The message must be of type TO_SERVER_RPC_REQUEST. serviceId, sessionId, and requestId are usually set by the platform.


Enrichment Nodes​

Originator Attributes​

Category: Enrichment
Outputs: Success, Failure

The node reads attributes and the latest telemetry values of the originator from the database and writes them into the message metadata.

Metadata Prefixes​

SourcePrefix in metadata
Client attributescs_
Shared attributesshared_
Server attributesss_
Latest telemetryno prefix

Configuration​

LabelRequiredDescription
Client AttributesNoClient attributes added as cs_<name>.
Shared AttributesNoShared attributes added as shared_<name>.
Server AttributesNoServer attributes added as ss_<name>.
Latest TimeseriesNoLatest telemetry values added without a prefix.
Tell FailureYesEnabled: missing values lead to Failure. Disabled: missing values are skipped.

At least one attribute or telemetry key must be configured.

Example​

If you want to define an offset value manually for a temperature channel, you can create a server attribute such as offset: 5. This node can then load that value and enrich the metadata so it can be used downstream by selecting the channel offset under Server Attributes.

In the following Script node, that value can then be accessed like this:

var offset = metadata.ss_offset;
var correctedTemperature = msg.temperature + offset;
return {
msg: msg,
metadata: metadata,
msgType: msgType
};

Originator Telemetry​

Category: Enrichment
Outputs: Success, Failure

The node reads historical telemetry values of the originator from a time window and adds them to the metadata.

Configuration​

SectionFields
Data selectionlatestTsKeyNames, fetchMode with FIRST, LAST, or ALL.
Additional fields for ALLaggregation, orderBy, limit.
Time windowuseMetadataIntervalPatterns, startInterval, startIntervalTimeUnit, endInterval, endIntervalTimeUnit, startIntervalPattern, endIntervalPattern.

Notes​

  • With FIRST or LAST, a single value per key is added.
  • With ALL, values are stored in metadata as a JSON array.

Example​

To compare against the average of the last five minutes, temperature can be loaded with fetchMode = ALL and then evaluated in a Transform script.

Script node

var temperatureArray = metadata.temperatureArray;
var total = 0;
var avgTemp = 0;

for (var i = 0; i < temperatureArray.length; i++) {
total += temperatureArray[i];
}

if (temperatureArray.length > 0) {
avgTemp = total / temperatureArray.length;
}

msg.avgTemp = avgTemp;

return {
msg: msg,
metadata: metadata,
msgType: msgType
};

Originator Fields​

Category: Enrichment
Outputs: Success, Failure

The node reads originator master data fields, such as name or type, and writes them into the metadata under configurable names.

Configuration​

LabelRequiredDescription
Fields MappingYesMapping of entity field names to metadata keys.
Source fieldMeaning
nameDisplay name of the device
typeEntity type, DEVICE
labelLabel of the entity
additionalInfoAdditional information as JSON
createdTimeCreation timestamp in epoch milliseconds

Example​

With name -> deviceName, a downstream To Email node can use ${deviceName} in the subject.


Tenant Details​

Category: Enrichment
Outputs: Success, Failure

The node adds contact and address data of the tenant to the message body or metadata.

Configuration​

LabelRequiredDescription
DetailsYesSelected tenant fields. At least one field must be selected.
Add Details to MetadataYesEnabled: values are written to metadata. Disabled: values are written to the message body.

Available fields are TITLE, EMAIL, PHONE, COUNTRY, CITY, STATE, ZIP, ADDRESS, ADDRESS2, and ADDITIONAL_INFO.


Transformation Nodes​

Script (Transform)​

Category: Transformation
Outputs: Success, Failure

The node changes the message body, metadata, and/or message type using JavaScript. The script result is passed to the next nodes.

Configuration​

LabelRequiredDescription
Transform FunctionYesJavaScript function Transform(msg, metadata, msgType).

Return Value​

The script must return an object with msg, metadata, and msgType.

Example​

var newMsg = {};
newMsg.temperatureF = msg.temperature * 9 / 5 + 32;
newMsg.humidity = msg.humidity;

return {
msg: newMsg,
metadata: metadata,
msgType: msgType
};

To Email​

Category: Transformation
Outputs: Success, Failure

The node creates an email object from the current message and its metadata.

Configuration​

LabelRequiredDescription
FromYesSender address.
ToYesRecipient address or multiple recipients separated by commas.
CCNoCC recipients.
BCCNoBCC recipients.
SubjectYesSubject line.
BodyYesEmail content.

All fields support placeholders in the format ${metadataKey}.

info

The To Email node only creates the email object. The actual sending is done by the Send Email node, which handles communication with the SMTP server.

Processing Chain​


External Nodes​

REST API Call​

Category: External
Outputs: Success, Failure

The node sends an HTTP request to an external REST interface. The current message body is used as the request payload.

Configuration​

LabelRequiredDescription
Endpoint URL PatternYesTarget URL. Supports ${metadata} placeholders.
Request MethodYesHTTP method: GET, POST, PUT, DELETE.
Use Simple Client HTTP FactoryNoUses a simple HTTP client, for example for large responses.
HeadersNoHTTP headers as a key-value list.

Output​

On success, status, statusCode, statusReason, and headers are written to metadata. The response body becomes the new message body.


MQTT​

Category: External
Outputs: Success, Failure

The node publishes the current message body to an external MQTT broker. The topic can be built dynamically from metadata.

Configuration​

LabelRequiredDescription
Topic PatternYesMQTT topic with optional ${metadata} placeholders.
HostYesHost name or IP address of the broker.
PortYesBroker port, for example 1883 or 8883.
Connection TimeoutYesConnection timeout in seconds.
Client IDNoMQTT client ID.
Clean SessionNoControls whether broker session data is discarded.
Enable SSLNoEnables TLS/SSL.

Credentials​

Supported modes are anonymous, basic with username/password, and cert.PEM for mTLS with PEM certificates.


Kafka​

Category: External
Outputs: Success, Failure

The node publishes the current message body as a record to a Kafka topic.

Configuration​

LabelRequiredDescription
Topic PatternYesKafka topic, optionally with metadata placeholders.
Bootstrap ServersYesComma-separated list of brokers.
Auto Retry TimesNoNumber of retry attempts.
Batch SizeNoBatch size in bytes.
Time to BufferNoWait time for collecting records in milliseconds.
Buffer Max SizeNoMaximum producer buffer size.
AcksYesBroker acknowledgement behavior.
SerializerYesSerializer classes.
Other PropertiesNoAdditional Kafka producer properties.

Output​

On success, offset, partition, and topic are written to metadata.


RabbitMQ​

Category: External
Outputs: Success, Failure

The node publishes the message body to a RabbitMQ exchange. Exchange and routing key can be built from metadata.

Configuration​

LabelRequiredDescription
Exchange Name PatternNoExchange name. Empty means default exchange.
Routing Key PatternNoRouting key.
Message PropertiesNoAMQP message properties.
HostYesRabbitMQ host.
PortYesAMQP port.
Virtual HostNoRabbitMQ virtual host.
CredentialsNoAuthentication.
Automatic RecoveryNoAutomatic reconnection.
TimeoutsNoConnection and handshake timeouts.
Client PropertiesNoAdditional client properties.

AWS SQS​

Category: External
Outputs: Success, Failure

The node sends the current message body to an AWS SQS queue. Standard and FIFO queues are supported.

Configuration​

LabelRequiredDescription
Queue TypeYesStandard or FIFO queue.
Queue URL PatternYesURL of the SQS queue. Supports metadata placeholders.
Delay SecondsNoDelay for standard queues.
Message AttributesNoAdditional SQS attributes.
AWS CredentialsYesIAM credentials.
AWS RegionYesAWS region of the queue.

Output​

On success, values such as messageId, requestId, messageBodyMd5, messageAttributesMd5, and for FIFO queues sequenceNumber are added.


AWS SNS​

Category: External
Outputs: Success, Failure

The node publishes the current message body to an AWS SNS topic.

Configuration​

LabelRequiredDescription
Topic ARN PatternYesARN of the SNS topic. Supports metadata placeholders.
AWS CredentialsYesIAM credentials.
AWS RegionYesAWS region of the topic.

Output​

On success, messageId and requestId are written to metadata.


GCP Pub/Sub​

Category: External
Outputs: Success, Failure

The node publishes the current message body to a Google Cloud Pub/Sub topic.

Configuration​

LabelRequiredDescription
GCP Project IDYesGoogle Cloud project ID.
Topic NameYesName of the Pub/Sub topic.
GCP Service Account KeyYesUpload of a JSON file with service account credentials.
Message AttributesNoAdditional Pub/Sub attributes.

Note​

The service account requires the permission roles/pubsub.publisher for the target topic.

Output​

On success, messageId is written to metadata.


Send Email​

Category: External
Outputs: Success, Failure

The node sends an email object via SMTP. The email object must be created beforehand by the To Email node.

Configuration​

LabelRequiredDescription
Use General SMTP SettingsYesEnables the system-wide SMTP settings.

If the system-wide SMTP settings are disabled, smtpProtocol, smtpHost, smtpPort, username, password, timeout, enableTls, requireTls, checkServerIdentity, and sslTrustHost can be configured.

Note​

If the incoming message is not a valid email object, it is routed through Failure.


Scheduler Nodes​

Create Scheduled Task​

Category: Scheduler
Outputs: Success, Failure

The node schedules a one-time task for a later point in time. The task can generate a report or trigger a RuleChain.

Configuration​

LabelRequiredDescription
Job NameYesUnique name of the scheduled task.
Delay Before StartYesDelay until execution.
TypeYesREPORT or RULE_CHAIN.
Rule ChainYes, for RULE_CHAINRuleChain to execute.
Report fieldsdepends on report typeConfiguration for scheduled reports.

Notes​

  • A task with the same jobName for the same entity is overwritten.

Clear Scheduled Task​

Category: Scheduler
Outputs: Success, Failure

The node deletes a previously scheduled task before it is executed.

Configuration​

LabelRequiredDescription
Job NameYesExact name of the task that should be deleted.

Notes​

  • The name must match the name used in Create Scheduled Task.
  • The assignment is done per originator entity.
  • If no matching task exists, the message goes through Failure.

Event and Alarm Nodes​

Complex Alarm​

Category: Event Rule
Outputs: Success, Created, Cleared

The node creates or clears alarms based on an event rule for real-time telemetry. It is suitable for patterns that cannot be modeled with a simple single-value check.

Configuration​

LabelRequiredDescription
Event RuleYesSelection of an existing event rule.

Notes​

  • The event rule must be created before the node is used. See Event Processing
  • Created means that a new alarm was opened.
  • Cleared means that an existing alarm was cleared.
  • Success means that no alarm state change took place.

Complex Event Processing​

Category: Event Rule
Outputs: Success, Created, Cleared

The node applies complex event processing to already loaded OSF file data. It is the file-based variant of Complex Alarm.

Configuration​

LabelRequiredDescription
Event RuleYesSelection of the event rule for CEP evaluation.

Notes​

  • The node is placed after Aggregate OSF File.
  • The event rule must already exist in the platform. See Event Processing

Enrich Alarm​

Category: Event Rule
Outputs: Success, Failure

The node enriches an existing alarm with additional information from an Excel-based event rule.

Configuration​

LabelRequiredDescription
Event RuleYesSelection of an event rule with the associated Excel file for enrichment.

Notes​

  • The event rule must already exist in the platform. See Event Processing
  • The event rule must include an Excel file with mappings for alarm types or conditions.
  • The node is used after Create Alarm or Complex Alarm.
  • The additional details are written back into the alarm record.