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.