Skip to main content

Workflow Action Reference

Actions are modular, executable building blocks that define specific operations within a workflow. Each action performs a discrete task, such as manipulating data, interacting with APIs, controlling logic flow, or performing system-level operations.

This article provides a quick reference to all available workflow actions, along with their parameter descriptions and usage details. Use it to understand what each action does and how to configure it when building or troubleshooting workflows.


info

General Info

Most action parameters support two modes:

  • Static: Assigns a constant value that remains unchanged throughout the workflow.
  • Dynamic: Assigns a variable or object whose value is resolved at runtime and may change during execution.

Display Settings

Each action module includes customizable display settings that control how it appears in the interface:

  • Background Color: Sets the background color of the action module.
  • Text Color: Defines the color of the text displayed within the module.
  • Action Display Name: Allows you to specify a custom name for the action module.
  • Display Description: A brief description that provides context or details about the module’s purpose.


AddJobTags (V1)

The AddJobTags action assigns one or more tags to the current workflow job. Tags are used for categorization, filtering, monitoring, and reporting purposes.

This action does not alter workflow execution logic — it enriches the workflow job with metadata.

Functionality

Input:

  • A list of tags (TAGS)

Process:

  • Reads the provided list of tag strings.
  • Adds the tags to the current workflow job.
  • Existing tags remain unchanged unless system behavior defines duplicate handling internally.

Output:

  • The workflow job is updated with the specified tags.
  • Execution continues normally.

⚙ Parameters

NameModeTypeDescription
TAGSStaticList<String>One or more tags to assign to the current workflow job.
info
  • Tags can be used for:
    • Filtering workflow jobs in monitoring views
    • Grouping related executions
    • Triggering external reporting or analytics
  • Use consistent naming conventions (e.g., Finance, HighPriority, ImportJob, Customer:ABC) to ensure reliable filtering.
  • Multiple tags can be applied in a single action.
  • Job tags assigned to workflow job will be listed under workflow job for that instance.
warning

Tags are metadata only and do not influence workflow logic unless explicitly referenced elsewhere.

Avoid inconsistent or free-form tag naming, as this reduces filtering reliability.


AddTime

The AddTime action adjusts a date/time value by adding or subtracting a specified duration. The result is stored in a target variable as a DateTimeOffset. This block is commonly used for scheduling, calculating expirations, or adjusting timestamps.

Functionality

Input:
A base DateTimeOffset value, an operation (+ or -), and a duration string (e.g., 2d, 5h30m).

Process:
Performs the time addition or subtraction.
Duration is interpreted as days, hours, minutes, and seconds.

Output:
A new DateTimeOffset value stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
DATETIMEStatic/DynamicDateTimeOffsetBase date/time value to adjust.
OPERATIONStatic/DynamicStringMust be "+" (add) or "-" (subtract).
VALUEStatic/DynamicStringTime string in format like 1d2h30m10s.
RESULT_VARStaticStringVariable name to store the resulting DateTimeOffset.

⏱ Time Format Examples

  • 2d → 2 days
  • 5h30m → 5 hours and 30 minutes
  • 10s → 10 seconds
  • 1d2h15s → 1 day, 2 hours, 15 seconds
warning

Do not use negative values inside VALUE. To subtract time, set OPERATION = "-".


CastBool

The CastBool action converts an object value into a Boolean (true or false) and stores the result in a workflow variable.

info

This block is often used when values are extracted as generic objects (for example, usnig JsonPathValue) but need to be explicitly interpreted as Boolean values for conditions or branching logic.

Functionality

Input:
A source object (SOURCE_VAR) that contains a value representing a Boolean.

Process:
Casts the object into a Boolean.

Output:
The resulting Boolean value is stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
SOURCE_VARStatic/DynamicObjectInput object containing a value to be cast into a Boolean.
RESULT_VARStaticStringVariable name to store the resulting Boolean.
info

Use CastBool after JsonPathValue when extracting Boolean values from JSON. Since JSON booleans are often stored as generic objects, this ensures they are converted into usable Boolean workflow variables.

warning

The action will fail if the input is null or if the value is not recognizable as a Boolean (e.g., "abc").


CastDateTime

The CastDateTime action converts a DateTime object into a proper workflow variable that can be used in the workflow.

It is especially useful when values are extracted using actions like JsonPathValue, which store date fields as generic objects instead of typed DateTime variables.

Functionality

Input:
A source object (SOURCE_VAR) that must already contain a DateTime value.
(For example, a JSON field like "2025-05-21T15:30:00Z" extracted into an object.)

Process:
Casts the object into a DateTime variable.

Output:
The resulting DateTime value is stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
SOURCE_VARStatic/DynamicObjectThe input object that contains a DateTime value.
RESULT_VARStaticStringVariable name to store the resulting DateTime.
tip

Use CastDateTime after JsonPathValue when you need to convert a JSON-extracted date (stored as an object) into a proper DateTime variable for workflow logic.

warning

This action will not convert arbitrary objects. The input must be an object containing a valid DateTime.


CastDateTimeOffset

The CastDateTimeOffset action converts a DateTime object with offset information into a proper workflow variable.

This is particularly useful when values are extracted as generic objects (for example, using JsonPathValue from a JSON payload). In such cases, the block ensures the value is converted into a usable, time zone–aware DateTime variable.

Functionality

Input:
A source object (SOURCE_VAR) that contains a DateTime value with offset or UTC information.

Process:
Attempts to cast the object into a DateTimeOffset variable.
Supported formats include:

  • ISO 8601 → "2025-05-21T14:45:00+05:30"
  • UTC string → "2025-05-21T09:15:00Z"

Output:
The resulting DateTimeOffset is stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
SOURCE_VARStatic/DynamicObjectInput object containing a DateTime value with offset (often extracted via JsonPathValue).
RESULT_VARStaticStringVariable name to store the resulting DateTimeOffset.
tip

Use CastDateTimeOffset after JsonPathValue when extracting timestamp fields from JSON payloads. This ensures the value is converted into a proper, time zone–aware DateTime variable for workflow calculations.

warning

The input must be an object containing a valid DateTime with offset.
If the object is null or in an invalid format, the action fails.


CastDecimal (V1)

The CastDecimal action casts a given object into a Decimal and stores the result in a workflow variable.

Functionality

Input:
A source object (SOURCE_VAR) that must represent a value convertible to a decimal.

Process:
Attempts to cast the object into a Decimal.

Output:
The resulting decimal value is stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
SOURCE_VARStatic/DynamicObjectInput object to be cast into a decimal.
RESULT_VARStaticStringVariable name to store the resulting decimal value.
warning

The action fails if the source is null or cannot be converted to a decimal.


CastDictionary

The CastDictionary action converts a source object into a Dictionary<string, object> and stores it in a workflow variable.

This is especially useful when values are extracted as generic objects (for example, using JsonPathValue from JSON payloads) but need to be handled as a structured dictionary for further processing.

Functionality

Input:
A source object (SOURCE_VAR) that must be compatible with a dictionary structure.

Process:
Attempts to cast the object into a Dictionary<string, object>.

  • Works well with deserialized JSON objects.
  • Supports generic objects returned by APIs or workflows.

Output:
The resulting dictionary is stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
SOURCE_VARStatic/DynamicObjectThe source object to cast into a dictionary (commonly extracted via JsonPathValue or from deserialized JSON).
RESULT_VARStaticStringVariable name to store the resulting dictionary object.
info

Use CastDictionary when working with JSON data or API responses where objects are returned as generic types. Casting them into dictionaries makes it easier to access keys and values in workflows.


CastDictionaryList(V1)

The CastDictionaryList action converts an object into a List<Dictionary<string, object>> and stores the result in a workflow variable.

This is particularly useful when handling JSON arrays or API responses that return lists of key–value pair objects. It ensures that tabular or structured data represented as generic objects can be safely cast and used in workflows.

Functionality

Input:
A source object (SOURCE_VAR) that must represent a list of dictionaries (with string keys).

Process:
Attempts to cast the object into a List<Dictionary<string, object>>.

  • Works well with JSON arrays of objects.
  • Supports tabular-style data transformations.

Output:
The resulting list of dictionaries is stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
SOURCE_VARStatic/DynamicObjectInput object expected to be a list of dictionaries (e.g., JSON arrays of objects, API responses).
RESULT_VARStaticStringVariable name to store the resulting List<Dictionary<string, object>>.
tip

Use CastDictionaryList when processing data from JSON payloads or web services that return collections of objects. This allows workflows to iterate through rows and access values by keys.

warning

The input must strictly conform to a list of dictionaries with string keys.
The action fails if the source is null or incompatible with the required structure.


CastDictionaryList(V2)

The CastDictionaryList action converts an object into a List<Dictionary<string, string>> and stores the result in a workflow variable.

This is particularly useful when handling JSON arrays or API responses that return lists of key–value pair objects. It ensures that tabular or structured data represented as generic objects can be safely cast and used in workflows.

Functionality

Input:
A source object (SOURCE_VAR) that must represent a list of dictionaries (with string keys and values).

Process:
Attempts to cast the object into a List<Dictionary<string, string>>.

  • Works well with JSON arrays of objects.
  • Supports tabular-style data transformations.

Output:
The resulting list of dictionaries is stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
SOURCE_VARStatic/DynamicObjectInput object expected to be a list of dictionaries (e.g., JSON arrays of objects, API responses).
RESULT_VARStaticStringVariable name to store the resulting List<Dictionary<string, string>>.
tip

Use CastDictionaryList when processing data from JSON payloads or web services that return collections of objects. This allows workflows to iterate through rows and access values by keys.

warning

The input must strictly conform to a list of dictionaries with string keys.
The action fails if the source is null or incompatible with the required structure.


CastInt

The CastInt action converts the value in SOURCE_VAR into an integer and stores it in a workflow variable.

This is useful when values are provided as generic objects but need to be handled as integers inside workflows.

Functionality

Input:
A source object (SOURCE_VAR) that must represent a value convertible to an integer.

Process:
Attempts to cast the object into an integer.

Output:
The resulting integer is stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
SOURCE_VARStatic/DynamicObjectThe input object to cast to an integer.
RESULT_VARStaticStringVariable name to store the resulting integer.
warning

The action fails if the source is null or cannot be converted to an integer.


CastObject (V1)

The CastObject action casts a given value into a generic Object and stores the result in a workflow variable.

Functionality

Input:
A source value (SOURCE_VAR) to be cast as an object.

Process:
Casts the input into a generic Object.

Output:
The resulting object is stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
SOURCE_VARStatic/DynamicObjectInput value to be cast into a generic object.
RESULT_VARStaticStringVariable name to store the resulting object.

CastObjectList

The CastObjectList action converts an input object into a List<object> and stores it in a workflow variable.

This is useful when values are extracted as generic objects (for example, JSON arrays or API responses) but need to be treated as a list for iteration or further processing.

Functionality

Input:
A source object (SOURCE_VAR) that must represent a list.

Process:
Attempts to cast the object into a List<object>.

Output:
The resulting list is stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
SOURCE_VARStatic/DynamicObjectInput object expected to be a list.
RESULT_VARStaticStringVariable name to store the resulting List<object>.
warning

The action fails if the source is null or if it cannot be cast into a list.


CastString

The CastString action converts an input object into a string and stores the result in a workflow variable.

This is useful when values are provided as generic objects (for example, from JSON or API responses) but must be explicitly treated as strings for downstream processing, comparisons, or display.

Functionality

Input:
A source object (SOURCE_VAR) that must represent a value convertible to string.

Process:
Attempts to cast the object into a string.

Output:
The resulting string is stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
SOURCE_VARStatic/DynamicObjectInput object to be cast into a string.
RESULT_VARStaticStringVariable name to store the resulting string.
info

Use CastString to normalize values into string from JSONPath action or format before logging, formatting messages, or passing data to endpoints that expect string input.

warning

The action fails if the source is null or cannot be converted to a string.


CheckStorageExists

The CheckStorageExists action verifies whether a storage entity exists at a specified level (Number, Location, Area, or Bin).

If the name is found, the corresponding internal ID is returned. If it does not exist, the result is 0.

This is especially useful when building workflows that need to confirm the presence of storage zones before creating or updating them.

Functionality

Input:
A storage level (Number, Location, Area, or Bin) and the name to check.

Process:
Looks up the storage hierarchy at the specified level and searches for the given name.

Output:
The internal ID of the storage entity is stored in outputVar.
If no match is found, 0 is stored.

⚙ Parameters

NameModeTypeDescription
levelStatic/DynamicStringStorage level to check (Number, Location, Area, or Bin).
nameStatic/DynamicStringName of the storage entity to look for.
outputVarStaticStringVariable name to store the resulting ID. Will be 0 if not found.
tip

Use CheckStorageExists together with CreateStorageLocation to implement conditional logic — for example, check if a zone exists first, and only create it if the result equals 0.


Condition

The Condition action evaluates a Boolean expression and returns either true or false. It is commonly used to control workflow logic, such as branching paths (if/else), loop execution, or conditional task execution.

Functionality

Input:
A Boolean expression (EXPRESSION) that must evaluate to true or false.

Process:
The workflow evaluates the expression during execution.

Output:
The result of the evaluation (true or false) determines which workflow path continues.

⚙ Parameters

NameModeTypeDescription
EXPRESSIONStatic/DynamicBoolBoolean expression to evaluate. Must resolve to true or false.
tip

Use Condition for decision-making in workflows, such as:

  • Branching logic (if/else)
  • Controlling loops (while or until)
  • Guarding actions that should only run when certain conditions are met

Example

VAR1 > 10 && VAR2 == "active"

ConvertToGhostData

The ConvertToGhostData action transforms structured data into the GhostData format — a compact serialization type used by RcomMobile.

It takes a complex dictionary of lists and serializes it into a JSON string that represents a valid GhostData object.

Functionality

Input:
A dictionary object (SOURCE_VAR) of the type:
Dictionary<string, List<Dictionary<string, object>>>

Process:
Converts the dictionary into a GhostData object and serializes it into JSON format.

Output:
The resulting GhostData JSON string is stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
SOURCE_VARStatic/DynamicObjectInput object of type Dictionary<string, List<Dictionary<string, object>>>.
RESULT_VARStatic/DynamicStringVariable name to store the serialized GhostData JSON string.
tip

Use ConvertToGhostData when preparing structured data for RcomMobile or for workflows that require GhostData format as input.

warning

The source object must strictly follow the required structure (string keys mapped to lists of dictionaries).
If the structure is invalid, the conversion will fail.


CreateExcelSheet

The CreateExcelSheet block creates an Excel file from a list of dictionaries based on the the columns specified in COLUMN_HEADERS and stores the result as a byte array.

⚙️ Parameters

NameModeTypeDescription
TABLE_DATAStatic/DynamicList<Dictionary<string,object>>The data rows to include in the sheet. Each item should be a dictionary representing a row.
COLUMN_HEADERSStatic/DynamicList<string>The ordered list of column headers. Must be defined before execution using SetVar.
RESULT_VARStaticStringThe name of the variable that will store the generated Excel file as a byte array.
info

💡 Tip: Use CreateTemporaryFile to save the generated file in database.


CreateObject

The CreateObject action creates a new instance of an object in the system and returns its unique identifier (OBJECT_ID).

Every new object must be assigned to an object group afterward, typically using the SetObjectGroupAttribute action.

Functionality

Input:
No input is required other than specifying the result variable.

Process:
Creates a new object record in the gateway.

Output:
The newly generated OBJECT_ID is stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
RESULT_VARStatic/DynamicStringVariable name to store the new OBJECT_ID.
tip

Always follow CreateObject with SetObjectGroupAttribute to assign the object to a specific object group, otherwise it will remain unlinked and unusable.


CreateStorageLocation

The CreateStorageLocation action creates a new entry in the storage hierarchy under a specified storage number.

You can define sublevels such as Location, Area, and Bin, but each level must follow the correct hierarchy:

  • Location requires a valid Number.
  • Area requires a valid Location.
  • Bin requires a valid Area.

This action is commonly used to build structured storage systems such as warehouses, factories, or hospital inventory zones.

Functionality

Input:
A required top-level storage number, and optionally a location, area, or bin.

Process:
Creates a new storage entry at the specified level.
If a sublevel is provided, all parent levels must already exist.

Output:
A new storage location (Number, Location, Area, or Bin) is created under the given hierarchy.

⚙️ Parameters

NameModeTypeDescription
numberStatic/DynamicStringRequired. Top-level identifier (e.g., warehouse or zone).
locationStatic/DynamicStringOptional. Required if Area or Bin is defined. Represents a sublocation.
areaStatic/DynamicStringOptional. Required if Bin is defined. Represents an internal zone or section.
binStatic/DynamicStringOptional. Represents the final slot or compartment within an area.
tip

Use CheckStorageExists before running this action to avoid duplicates and to implement conditional creation logic.

warning

All parent levels must exist before creating a sublevel.

The system does not auto-create missing parents. For example, to create a Bin, you must first ensure the corresponding Area and Location exist.


CustomMySQL

The CustomMySQL block executes a custom SQL query on a specified MySQL database connection. It can be used for both data retrieval and scalar queries, depending on the query type and the IS_OBJECT_SELECTION flag.

This block is ideal for interacting with external MySQL databases during workflow execution, such as fetching reference data, validating inputs, or updating external systems.

Functionality

  • Input: MySQL connection string and SQL query.
  • Process: Runs the query against the database and stores the result in a workflow variable.
    • If IS_OBJECT_SELECTION is set to true, the result is stored as a DataContext (multiple rows/columns).
    • If IS_OBJECT_SELECTION is false, the result is treated as a scalar value (single value).
  • Output: The result of the SQL query, stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
CONNECTION_STRINGStatic/DynamicStringMySQL connection string (must include host, port, username, password, and database name).
QUERYStatic/DynamicStringSQL query to execute. Ensure correct syntax and table/column references.
RESULT_VARStaticStringName of the variable where the result will be stored.
IS_OBJECT_SELECTIONStatic/DynamicBoolSet to true if the query returns a rowset (e.g., SELECT *); false if the result is a single value.
warning

Ensure that the query is properly sanitized and that the connection string has only the necessary permissions. Avoid running destructive operations like DROP, DELETE, or unrestricted UPDATE unless explicitly required.


CustomPostgresSQL (V1)

The CustomPostgresSQL block executes a custom SQL query on a specified PostgreSQL database connection. It can be used for both data retrieval and scalar queries, depending on the query type and the IS_OBJECT_SELECTION flag.

Functionality

  • Input: PostgreSQL connection string and SQL query.
  • Process: Runs the query against the database and stores the result in a workflow variable.
    • If IS_OBJECT_SELECTION is true, the result is treated as a rowset (multiple rows/objects).
    • If IS_OBJECT_SELECTION is false, the result is treated as a scalar value (single value).
  • Output: The result of the SQL query, stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
CONNECTION_STRINGStaticStringPostgreSQL connection string (must include host, port, username, password, and database name).
QUERYStaticStringSQL query to execute. Ensure correct syntax and table/column references.
RESULT_VARStaticStringName of the variable where the result will be stored.
IS_OBJECT_SELECTIONStaticBoolSet to true if the query returns a rowset (e.g., SELECT *); false if the result is a single value.
warning

Ensure that the query is properly sanitized and that the connection string has only the necessary permissions. Avoid running destructive operations like DROP, DELETE, or unrestricted UPDATE unless explicitly required.


CustomPostgresSQL (V2)

The CustomPostgresSQL (V2) block extends V1 with an optional COMMAND_TIMEOUT parameter and a dedicated IS_FETCH_QUERY flag. If COMMAND_TIMEOUT is not provided, the default timeout behavior applies (default = 0, no timeout).

Functionality

  • Input: PostgreSQL connection string, SQL query, and optional timeout.
  • Process: Runs the query against the database. Uses IS_FETCH_QUERY to determine whether to return a rowset or scalar, and respects the command timeout if specified.
  • Output: The result of the SQL query, stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
CONNECTION_STRINGStaticStringPostgreSQL connection string.
QUERYStaticStringSQL query to execute.
IS_FETCH_QUERYStaticBoolSet to true if the query returns rows; false for non-fetch (e.g., INSERT, UPDATE) operations.
IS_OBJECT_SELECTIONStaticBoolSet to true if the query returns a rowset; false if the result is a single scalar value.
COMMAND_TIMEOUTStaticIntTimeout in milliseconds for the query. Set to 0 or omit for no timeout.
RESULT_VARStaticStringName of the variable where the result will be stored.
warning

Ensure that the query is properly sanitized and that the connection string has only the necessary permissions. Avoid running destructive operations like DROP, DELETE, or unrestricted UPDATE unless explicitly required.


CustomScript

The CustomScript action executes a script written in the RCOM Gateway Interpreter scripting language.

This block is intended for advanced scenarios where built-in workflow actions are not sufficient, allowing you to implement custom logic, calculations, or transformations directly within a workflow.

Functionality

Input:
A script string written in the RCOM Gateway Interpreter language.

Process:
Executes the provided script according to the interpreter’s syntax and rules.

Output:
Any results defined in the script execution are applied to the workflow context (e.g., variable assignments, transformations).

⚙ Parameters

NameModeTypeDescription
SCRIPTStatic/DynamicStringThe RCOM Gateway Interpreter script to execute.
tip

Use CustomScript when you need specialized logic that cannot be achieved with standard workflow blocks.

warning
  • Scripts must strictly follow the RCOM Gateway Interpreter syntax.
  • Invalid or malformed scripts will cause execution to fail.

CustomSQL

The CustomSQL action executes a SQL query against a SQL Server database using the provided connection string.

It can handle both object result sets (from SELECT queries) and scalar results (from single-value queries). The query results are stored in the specified workflow variable.

Functionality

Input:
A valid SQL Server connection string and a SQL query.

Process:

  • Connects to the database, executes the query, and retrieves results.
  • If IS_OBJECT_SELECTION = true, results are returned as rows (objects).
  • Otherwise, the result is treated as a scalar value.

Output:
The query result is stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
CONNECTION_STRINGStatic/DynamicStringSQL Server connection string. Must have appropriate permissions.
QUERYStatic/DynamicStringSQL query to execute.
RESULT_VARStatic/DynamicStringVariable name to store the query result.
IS_OBJECT_SELECTIONStatic/DynamicBoolSet to true if the query returns rows (SELECT). Otherwise, false for scalar results.
warning
  • Ensure the SQL query is valid.
  • The CONNECTION_STRING must have the required access rights.
  • Poorly structured queries may cause workflow errors or performance issues.

CreateTemporaryFile

The CreateTemporaryFile action saves a file (provided as a byte array) into the RCOM Gateway database and returns a unique File ID.

This is useful when workflows generate files (such as Excel reports) that need to be stored temporarily for later retrieval, download, or further processing.

Functionality

Input:
File content in byte array format, along with a name and MIME type.

Process:
Stores the file in the RCOM Gateway database.

Output:
The generated File ID is stored in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
DATAStatic/DynamicByte[]File content in byte array form.
FILE_NAMEStatic/DynamicStringName of the file (e.g., report.xlsx).
CONTENT_TYPEStatic/DynamicStringMIME type of the file (e.g., application/vnd.openxmlformats-officedocument.spreadsheetml.sheet).
RESULT_VARStaticStringVariable name to store the resulting File ID.
tip

Use CreateTemporaryFile together with LoadTemporaryFile to save and later retrieve files inside workflows.


Decode6Bit

Decodes the given 6-bit encoded EPC hex string (EPC_HEX) into ASCII and stores the result in TARGET_VAR.
If REMOVE_EOT is set to true, the decoded string will be truncated at the End-of-Transmission (EOT) character.
Returns true if decoding is successful.

⚙️ Parameters

ParameterModeTypeDescription
EPC_HEXStatic/DynamicStringHexadecimal EPC input to decode
REMOVE_EOTStatic/DynamicBoolIf true, truncate output at the EOT character (if present)
TARGET_VARStaticStringVariable to store the decoded ASCII result

This block is especially useful in RFID/EPC workflows.


DecodeData

Decodes the input data (DATA_TOBE_DECODED) based on predefined command type rules and stores the structured result in the specified RESULT_VAR.
Returns decoded fields as a databag (key-value format) suitable for further processing.

⚙️ Parameters

ParameterModeTypeDescription
DATA_TOBE_DECODEDStatic/DynamicStringInput data string to decode
RESULT_VARStaticStringOutput variable to store the decoded databag

DecodeGS1

Decodes the provided EPC hex string (EPC_HEX) into its corresponding GS1 EPC URI representations.
Stores the results in EPC_URI (pure identity URI) and EPC_TAG_URI (tag-level URI).
Returns true if decoding is successful and the EPC conforms to a recognized GS1 scheme.

⚙️ Parameters

ParameterModeTypeDescription
EPC_HEXStatic/DynamicStringHex-encoded EPC to decode
EPC_URIStaticStringOutput variable for GS1 EPC URI (pure identity format)
EPC_TAG_URIStaticStringOutput variable for GS1 EPC Tag URI (with filter and type)

DeleteAttachment (V1)

The DeleteAttachment action instantly removes an attachment file with the specified filename associated with the provided OBJECT_ID.

If the item is not deleted, the action result returns false.

Functionality

Input:

  • Object ID (OBJECT_ID)
  • Attachment file name (FILE_NAME)

Process:

  • Locates the object by OBJECT_ID.
  • Attempts to find and remove the attachment matching FILE_NAME.

Output:

  • Returns true when deletion succeeds.
  • Returns false when no matching attachment is deleted.

⚙ Parameters

NameModeTypeDescription
OBJECT_IDStatic/DynamicGuidUnique identifier of the object containing the attachment.
FILE_NAMEStaticStringExact filename of the attachment to remove with file type. (example: data.csv)
warning

Ensure FILE_NAME exactly matches the stored attachment name with file extension.


DeleteObject

Deletes the object identified by OBJECT_ID.
If DELETE_HISTORY is set to true, the object’s history data will also be removed.

⚙️ Parameters

ParameterModeTypeDescription
OBJECT_IDStatic/DynamicGuidUnique identifier of the object to delete
DELETE_HISTORYStatic/DynamicBoolWhether to delete the object's history data
warning

Deleting an object is irreversible. Use DELETE_HISTORY carefully as it removes audit trails.


DeleteObjectInstant

The DeleteObjectInstant block deletes an object from an Object Group immediately during workflow execution. Unlike queued deletion at the end of a workflow, this block performs the removal in real time, allowing subsequent steps to react accordingly.

Functionality

Input: The object’s unique ID (GUID).

Process:

  • Instantly deletes the object from its Object Group.
  • Optional: Also deletes its history.
  • Optional: Performs soft delete (retains object metadata but marks it as deleted).

Output: No return data, but the object is removed immediately.

Return:

  • true → if deletion is successful.
  • false → if the object does not exist or deletion fails.

⚙ Parameters

NameModeTypeDescription
OBJECT_IDDynamic/StaticGuidThe unique identifier of the object to be deleted.
DELETE_HISTORYStatic/DynamicBoolIf enabled, removes the entire history of the object. Default is false.
SOFT_DELETEStaticDynamicBoolIf enabled, performs a soft delete (marks the object as deleted rather than removing it completely). Default is false.
tip

Use DeleteObjectInstant in cases where object removal must take effect before proceeding to downstream workflow logic (e.g., cleanup before recalculation or ID reuse).


Encode6Bit

Converts an ASCII string (SOURCE_VAR) into a 6-bit encoded hexadecimal string (TARGET_VAR).
Optionally appends an EOT (End Of Transmission) character if specified.
It can also validate the total length does not exceed the allowed MAX_LENGTH_WORDS (if set).

⚙️ Parameters

ParameterModeTypeDescription
SOURCE_VARStatic/DynamicStringThe input ASCII string to encode.
TARGET_VARStaticStringThe variable where the encoded result will be stored.
ADD_EOTStatic/DynamicBoolIf true, an EOT character will be appended unless already present.
MAX_LENGTH_WORDSStatic/DynamicIntMaximum allowed word length. <= 0 disables the check.
  • EOT Handling:
    If ADD_EOT is true and the EOT character (\x04) is not already present, it is appended automatically.

  • Length Check:
    The encoded result is validated against MAX_LENGTH_WORDS. If it exceeds this length due to EOT or initial content, the operation fails.

  • Return: true if successful and all conditions (including optional length check) are met.


EncodeGS1

Converts the given GS1 EPC identifier (SOURCE_VAR, in EPC URN format) into a GS1 EPC URI scheme and stores the result in TARGET_VAR.
Optionally, apply a FILTER value to specify the EPC filter field.
Returns true if the conversion is successful and the scheme is valid.

⚙️ Parameters

ParameterModeTypeDescription
SOURCE_VARStatic/DynamicStringGS1 EPC identifier in EPC URN format
TARGET_VARStaticStringVariable to store the resulting GS1 EPC URI
FILTERStatic/DynamicIntOptional EPC filter value (e.g., 0–7)
info

Ensure SOURCE_VAR follows the correct EPC URN syntax. FILTER affects URI encoding for certain EPC schemes.

ForEach

Iterates over each item in the specified list (LIST_NAME), processing them one by one.
The current item is assigned to ITEM_VAR, and its zero-based index is assigned to INDEX_VAR.

Supports input lists of types: List, Dictionary, String, or Object (iterable).

⚙️ Parameters

ParameterModeTypeDescription
LIST_NAMEStatic/DynamicList, Dictionary, String, ObjectThe collection to iterate over
ITEM_VARStaticStringVariable name to hold the current item
INDEX_VARStaticStringVariable name to hold the current item's index

EncodeGs1TagUri

The EncodeGs1TagUri block is designed to convert a GS1 EPC identifier provided in URN tag format into a GS1 EPC URI scheme and store the converted value in a variable.

Functionality

  • Input: A GS1 EPC identifier in URN tag format (example: urn:epc:tag:sgtin-96:3.0614141.812345.6789)

  • Process: Converts the URN into the GS1 EPC URI scheme.

  • Output: Stores the result in the specified TARGET_VAR.

  • Return:

    • true → if conversion was successful and the scheme is valid.
    • false → if conversion failed.

⚙ Parameters

NameModeTypeDescription
SOURCE_VARStatic/DynamicStringGS1 EPC identifier in URN tag format (e.g., urn:epc:tag:sgtin-96:3.0614141.812345.6789).
TARGET_VARStaticStringVariable name where the resulting GS1 EPC URI will be stored.
tip

Ensure the EPC in SOURCE_VAR follows the GS1 URN syntax. If the EPC type supports filters, setting FILTER will adjust the resulting EPC URI accordingly.


FlushContext (V1)

The FlushContext action manages workflow context variables based on the selected FLUSH_MODE.

  • WhiteList: Keeps only the specified variables and removes all others.
  • BlackList: Removes only the specified variables and keeps all others.

It accepts * (all) or a comma-separated list of context variable names.

Functionality

Input:

  • Flush mode (FLUSH_MODE)
  • Context variable names (CONTEXT_VARIABLES)

Process:

  • Parses the variable list.
  • Applies whitelist or blacklist filtering to workflow context.

Output:

  • Returns true if at least one variable was flushed.
  • Returns false if nothing was flushed.

⚙ Parameters

NameModeTypeDescription
FLUSH_MODEStaticStringFlush strategy: BlackList or WhiteList.
CONTEXT_VARIABLESStaticString* or comma-separated context variable names.
info

Use BlackList with * to clear all variables, or WhiteList with * to keep all variables.


GenerateGuid

Generates a new random Guid (Globally Unique Identifier) and stores it in the specified RESULT_VAR.
Useful for creating unique IDs for objects, sessions, or transactions.

⚙️ Parameters

ParameterModeTypeDescription
RESULT_VARStaticStringVariable to store the generated GUID
info

GUIDs follow the standard 128-bit format (e.g., xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).


GetAttachment (V1)

The GetAttachment action retrieves a stored attachment file associated with a specific object and makes its binary content available inside the workflow.
Use this action when files (e.g., documents, images, exports) are stored as object attachments and must be accessed for further processing, export, or transmission.

Functionality

Input:

  • An object identifier (OBJECT_ID)
  • The exact attachment file name with extension (FILE_NAME)
  • Target variable names for file extension and file data

Process:

  • Searches for the attachment linked to the specified OBJECT_ID.
  • Matches the attachment using the provided FILE_NAME.
  • If found:
    • Extracts the file content as binary data.
    • Determines or assigns the file extension.
  • If not found:
    • The action returns false.

Output:

  • RESULT_DATA contains the file content as List<Byte>.
  • RESULT_FILE_EXTENSION contains the file extension (e.g., docx, pdf, png).

⚙ Parameters

NameModeTypeDescription
OBJECT_IDStatic/DynamicGuidUnique identifier of the object that contains the attachment.
FILE_NAMEStatic/DynamicStringExact name of the attachment file with extension to retrieve (case sensitivity depends on system configuration).
RESULT_FILE_EXTENSIONStaticStringWorkflow variable name that will store the file extension of the retrieved attachment.
RESULT_DATAStaticStringWorkflow variable name that will store the attachment file data as List<Byte>.
info
  • The file name must exactly match the stored attachment, including the file extension (e.g., file.docx).
  • The action does not perform partial or fuzzy matching.

The resulting RESULT_DATA can be used in:

  • Export actions
  • Email attachments
  • File storage actions
  • Document processing actions (e.g., Word or PDF processing)
warning

Common failure causes

  • OBJECT_ID does not exist.
  • The object has no attachments.
  • The specified FILE_NAME does not match any stored attachment.
  • Insufficient permissions to access the object or its attachments.

GetDate

Retrieves the current date and time and stores it in the specified RESULT_VAR.
Set USE_UTC to true to return the time in UTC; otherwise, the local server time is used.

⚙️ Parameters

ParameterModeTypeDescription
USE_UTCStatic/DynamicBoolIf true, returns time in UTC format
RESULT_VARStaticStringVariable to store the current date and time
info

The returned value is in ISO 8601 format.


GetDateOffset

Retrieves the current DateTimeOffset, which includes both the date/time and the timezone offset, and stores it in RESULT_VAR.
Set USE_UTC to true to return the value in Coordinated Universal Time (UTC); otherwise, local time with offset is returned.

⚙️ Parameters

ParameterModeTypeDescription
USE_UTCStatic/DynamicBoolIf true, returns the DateTimeOffset in UTC
RESULT_VARStaticStringVariable to store the resulting DateTimeOffset value
info

DateTimeOffset is ideal when tracking both absolute time and the originating timezone.


GetGroup (V1)

The GetGroup block retrieves the group name associated with a specific GROUP_ID (GUID). This is useful when workflows need to resolve or display the human-readable group name based on a stored reference or ID.

Functionality

  • Input: A static GUID that represents the group.
  • Process: Fetches the corresponding group name using the provided GROUP_ID.
  • Output: Stores the resolved group name in the specified workflow variable.

⚙ Parameters

NameModeTypeDescription
GROUP_IDStaticGuidThe unique identifier of the group.
RESULT_VARStaticStringName of the variable where the group name will be stored.
info

✅ Tip: Use this block when you have a GROUP_ID stored in your object or data context and need to resolve the readable group name—for display, logging, or to pass in SetObjectAttributes action..


GetKeyList

Retrieves all keys from the dictionary specified in SOURCE_VAR (Dictionary<string, object>) and stores them as a list in RESULT_VAR.
Fails if the source is null or not a valid dictionary.

⚙️ Parameters

ParameterModeTypeDescription
SOURCE_VARStatic/DynamicDictionary<string,object>The source dictionary from which to extract keys
RESULT_VARStaticStringVariable to store the resulting list of keys
info

The result is typically a List<string> representing all the top-level keys in the dictionary.


GetObjectChangeHistory

The GetObjectChangeHistory action retrieves the historical changes of one or more attributes for a specific object within an Object Group, constrained by an optional time window.

Use this when you need an auditable trail of how selected fields evolved over time—for example, to investigate discrepancies, generate compliance reports, or drive workflow logic based on last-known changes.

Functionality

Input:

  • A target OBJECT_ID in the selected Object Group.
  • A list of ATTRIBUTES to track.
  • Optional START_DATE and END_DATE to filter results by time.

Process:

  • Queries the change log for the specified object and returns only the events that affect the requested attributes.
  • Applies the time filter if provided.

Output:

  • Writes a collection of change entries to RESULT_VAR.
  • Each entry represents a single change event for a tracked attribute.

⚙ Parameters

NameModeTypeDescription
OBJECT_IDStaticGuidThe unique identifier of the object whose attribute history should be fetched.
ATTRIBUTESStaticList<String>One or more attribute names to include in the history query. Provide at least one.
START_DATEStatic (Optional)DateTimeOffsetLower bound (inclusive) for change timestamps. If omitted, history is fetched from the earliest available record.
END_DATEStatic (Optional)DateTimeOffsetUpper bound (inclusive) for change timestamps. If omitted, history is fetched up to the latest available record.
RESULT_VARStaticStringWorkflow variable name that will receive the resulting collection of change records.
warning
  • ATTRIBUTES is required. Supplying an empty list will result in no data and may cause the action to fail validation.
  • Ensure START_DATEEND_DATE. If the range is inverted, the result set will be empty.

GetObjectGroupSchema

The GetObjectGroupSchema block retrieves the schema of a specified Object Group and maps key metadata-column types, nullability, and primary keys into individual workflow variables. These variables are populated as dictionaries, allowing downstream actions to dynamically interpret and use the structure of the Object Group.

Functionality:

Input: Object Group name (dynamic).

Process: Queries the Object Group definition from the platform and extracts structural metadata.

Output: Maps three sets of information into the workflow:

  • Column names and their data types (Dictionary<string, string>)
  • Column names and nullability (Dictionary<string, bool>)
  • Primary key columns (List<string>)

These outputs are useful when workflows need to validate data, generate forms, or perform structure-aware operations dynamically.

Return:

  • true → if the schema was successfully retrieved and mapped.
  • false → if the Object Group is not found or an error occurs.

⚙ Parameters

NameModeTypeDescription
OBJECT_GROUP_NAMEDynamic/StaticStringInternal name of the Object Group whose schema is to be retrieved.
COLUMN_TYPEStaticStringVariable name where column types will be stored as a Dictionary<string, string>. Example: { "ID": "Number", "DOB": "Date" }
NULLABLEStaticStringVariable name to store nullability as a Dictionary<string, bool>. Example: { "DOB": true, "ID": false }
PRIMARY_KEYSStaticStringVariable name to store a list of primary key columns as a stringified List<string>. Example: [ "ID", "TEMP_ID" ]
tip

These output variables can be used in later steps for building dynamic logic based on field types, form constraints, or validation rules.


GetObjectsOfAttributes (v1)

The GetObjectsOfAttributes block retrieves all objects from the specified OBJECT_GROUP_NAME that match either:

  • The provided ATTRIBUTES dictionary (key–value pairs), or
  • Specific parameter name/value pairs (PARAM_NAME1, PARAM_VALUE1, etc.).

If COLUMN_NAMES is provided, only those columns will be fetched; otherwise, the full object data is retrieved.
Results are stored in RESULT_VAR as a DataContext.

Either ATTRIBUTES or at least one PARAM_NAME/PARAM_VALUE pair must be provided.

Functionality

Input:

An object group name and either an attribute dictionary or up to two explicit parameter/value pairs.

Process:

  1. Queries the object group for matching entries.
  2. If COLUMN_NAMES is given, returns only those columns.
  3. If CHECK_EXISTENCE is enabled, writes a boolean flag to the workflow context indicating whether matches were found.

Output:

  • Matching objects as a DataContext stored in RESULT_VAR.

Return:

  • true → if query executed successfully.
  • false → if no results found and CHECK_EXISTENCE is disabled, or if execution fails.

⚙ Parameters

NameModeTypeDescription
OBJECT_GROUP_NAMEStatic/DynamicStringName of the object group to query.
ATTRIBUTESStatic/DynamicDictionary<string, object>(Optional) Dictionary of attributes to match.
PARAM_NAME1Static/DynamicString(Optional) Name of a parameter to match.
PARAM_VALUE1Static/DynamicObject(Optional) Value for PARAM_NAME1.
PARAM_NAME2Static/DynamicString(Optional) Name of a second parameter to match.
PARAM_VALUE2Static/DynamicObject(Optional) Value for PARAM_NAME2.
COLUMN_NAMESStatic/DynamicList<string>(Optional) List of column names to fetch.
RESULT_VARStaticStringVariable to store the result (as a DataContext).
info

Use ATTRIBUTES for bulk matching, or PARAM_NAME1/PARAM_NAME2 for explicit comparisons. Both can be combined if needed for stricter filtering.


GetObjectsOfAttributes (v2)

The GetObjectsOfAttributes block retrieves all objects from the specified OBJECT_GROUP_NAME that match either:

  • The provided ATTRIBUTES dictionary (key–value pairs), or
  • Specific parameter name/value pairs (PARAM_NAME1, PARAM_VALUE1, etc.).
  • Version 2 adds a CHECK_EXISTENCE option, which makes the block return true if matching objects are found and false if no data is found.

If COLUMN_NAMES is provided, only those columns will be fetched; otherwise, the full object data is retrieved.
Results are stored in RESULT_VAR as a DataContext.

Either ATTRIBUTES or at least one PARAM_NAME/PARAM_VALUE pair must be provided.

Functionality

Input:

An object group name and either an attribute dictionary or up to two explicit parameter/value pairs.

Process:

  1. Queries the object group for matching entries.
  2. If COLUMN_NAMES is given, returns only those columns.
  3. If CHECK_EXISTENCE is enabled, writes a boolean flag to the workflow context indicating whether matches were found.

Output:

  • Matching objects as a DataContext stored in RESULT_VAR.

Return:

  • true → if matching objects exist.
  • false → if no data is found.

⚙ Parameters

NameModeTypeDescription
OBJECT_GROUP_NAMEStatic/DynamicStringName of the object group to query.
ATTRIBUTESStatic/DynamicDictionary<string, object>(Optional) Dictionary of attributes to match.
PARAM_NAME1Static/DynamicString(Optional) Name of a parameter to match.
PARAM_VALUE1Static/DynamicObject(Optional) Value for PARAM_NAME1.
PARAM_NAME2Static/DynamicString(Optional) Name of a second parameter to match.
PARAM_VALUE2Static/DynamicObject(Optional) Value for PARAM_NAME2.
COLUMN_NAMESStatic/DynamicList<string>(Optional) List of column names to fetch.
RESULT_VARStaticStringVariable to store the result (as a DataContext).
CHECK_EXISTENCEStatic/DynamicBoolIf true, the action returns true if results exist, false if no objects are found.
info

Use ATTRIBUTES for bulk matching, or PARAM_NAME1/PARAM_NAME2 for explicit comparisons. Both can be combined if needed for stricter filtering.


GetObjectsOfAttributes (V3)

The GetObjectsOfAttributes (V3) block retrieves all objects from the specified OBJECT_GROUP_NAME that match either:

  • The provided ATTRIBUTES dictionary (key-value pairs), or
  • Specific parameter name/value pairs (PARAM_NAME1, PARAM_VALUE1, etc.).

Either ATTRIBUTES or at least one parameter name/value pair must be set.

If COLUMN_NAMES is provided, only those columns are returned; otherwise, full object data is fetched. Results are stored in RESULT_VAR as a DataContext.

When searching custom attributes:

  • Numeric strings are matched by value.
  • Numeric types are treated as index-based lookups.

What's Different from V2

  • V3 explicitly defines custom-attribute numeric matching behavior.
  • In V3, numeric strings are interpreted as literal values.
  • In V3, numeric-typed inputs are interpreted as index-based lookups.

Functionality

Input:

  • Object group name
  • Matching attributes or parameter pairs
  • Optional column selection

Process:

  1. Queries the object group using either ATTRIBUTES or parameter name/value pairs.
  2. Applies optional column filtering when COLUMN_NAMES is provided.
  3. Evaluates existence status based on CHECK_EXISTENCE.

Output:

  • Matching objects as a DataContext in RESULT_VAR.

Return:

  • true when matches are found.
  • false when no matches are found (or no valid query condition is provided).

⚙ Parameters

NameModeTypeDescription
OBJECT_GROUP_NAMEDynamicStringName of the object group to query.
ATTRIBUTESDynamicDictionary<String,Object>Dictionary of attributes to match.
PARAM_NAME1StaticStringName of first parameter to match.
PARAM_VALUE1DynamicObjectValue for PARAM_NAME1.
PARAM_NAME2StaticStringName of second parameter to match.
PARAM_VALUE2DynamicObjectValue for PARAM_NAME2.
COLUMN_NAMESStaticList<String>Optional list of column names to fetch.
RESULT_VARStaticStringVariable to store the result as a DataContext.
CHECK_EXISTENCEStaticBoolIf enabled, returns existence status based on matching results.
info

Use ATTRIBUTES for bulk matching and parameter pairs for targeted lookups. Provide COLUMN_NAMES only when a reduced result set is needed.

warning

At least one matching condition is required. If both ATTRIBUTES and parameter pairs are empty, the action may return no data.


GetObjectsOfObjectGroup

Retrieves all objects from the specified object group (OBJECT_GROUP_NAME) and stores the result in a DataContext within RESULT_VAR.
Optionally, use COLUMN_NAMES to limit the fetched data to specific columns if provided, only those fields are retrieved and detailed object metadata is excluded.

info

Attribute, group, and location metadata in this block are immutable and cannot be modified.

⚙️ Parameters

ParameterModeTypeDescription
OBJECT_GROUP_NAMEStatic/DynamicStringThe unique name or ID of the object group to fetch data from
COLUMN_NAMESStatic/DynamicList<string>Optional list of column names to fetch; retrieves all data if left empty
RESULT_VARStaticStringVariable to store the resulting data as a DataContext
info

Use this block when you need to retrieve full datasets tied to a specific group without filtering by attributes.


GetObjectsOfStorage

Retrieves all objects located in a specified storage location and stores them in a DataContext within RESULT_VAR.
Storage location is defined using a combination of STORAGE_NUMBER, STORAGE_LOCATION, STORAGE_AREA, and STORAGE_BIN.
If COLUMN_NAMES is provided, only those columns will be fetched full object metadata will be skipped.

info

Attribute, group, and location metadata in this block are immutable and cannot be modified.

⚙️ Parameters

ParameterModeTypeDescription
STORAGE_NUMBERStaticIntIdentifier for the storage number
STORAGE_LOCATIONStaticIntIdentifier for the specific location within the storage
STORAGE_AREAStaticIntIdentifier for the area inside the storage location
STORAGE_BINStaticIntIdentifier for the bin inside the storage area
OBJECT_GROUP_NAMEOBJECT_GROUP_NAMEStringThe unique name or ID of the object group to fetch data from
COLUMN_NAMESStatic/DynamicList<string>Optional list of columns to retrieve; fetches all data if left unspecified
RESULT_VARStaticStringVariable to store the fetched objects as a DataContext
info

Use this block for warehouse-style data retrieval where object grouping is based on physical storage parameters.


GetStorageAreas

Returns all defined storage Areas, with their internal ID and parent Location ID.

⚙️ Parameters

NameModeTypeDescription
outputVarStaticStringVariable to store the list of Areas (ID, name, parent Location ID).

GetStorageBins

Returns all defined storage Bins, with their internal ID and parent Area ID.

⚙️ Parameters

NameModeTypeDescription
outputVarStaticStringVariable to store the list of Bins (ID, name, parent Area ID).

GetStorageLocations

Returns all defined storage Locations, each with its internal ID and parent Storage Number ID.

⚙️ Parameters

NameModeTypeDescription
outputVarStaticStringVariable to store the list of Locations (ID, name, parent Number ID).

GetStorageNumbers

Fetches all defined top-level Storage Numbers.

⚙️ Parameters

NameModeTypeDescription
outputVarStaticStringVariable to store the list of Storage Numbers (ID + name).
info

❌ No hierarchical data is returned (i.e., no children like Locations or Areas).


JsonPath

Executes a JSONPath query on the JSON string stored in SOURCE_VAR and stores the result in RESULT_VAR as a String.
JsonPath allows querying and extracting specific parts of a JSON structure using path-like syntax.

⚙️ Parameters

ParameterModeTypeDescription
JSON_PATHStatic/DynamicStringThe JsonPath expression used to extract data
SOURCE_VARStatic/DynamicStringThe variable containing the JSON string to query
RESULT_VARStaticStringVariable to store the result of the JsonPath query
info

Use $ as the root element in your JSON_PATH. For example: $.name retrieves "name" fields in the JSON.


JsonPathValue (V1)

  • Executes a JSONPath query on the JSON string in SOURCE_VAR and casts the result into the specified RESULT_TYPE, storing it in RESULT_VAR.
  • If the JsonPath expression yields no result, an empty string is returned by default.

Supported RESULT_TYPE values:

  • Primitive types: int, long, double, decimal, bool, guid, date, string
  • Complex types:
    • list: List<object>
    • object: Dictionary<string, object>
    • objectlist: List<Dictionary<string, object>>

⚙️ Parameters

ParameterModeTypeDescription
JSON_PATHStatic/DynamicStringThe JsonPath query to extract data
SOURCE_VARStatic/DynamicStringVariable containing the JSON string
RESULT_TYPEStatic/DynamicStringThe desired output type
RESULT_VARStaticStringVariable to store the casted result
info

Use $ as the root element in your JSON_PATH. For example: $.name retrieves "name" fields in the JSON. This block is ideal when type safety or structured deserialization is needed for downstream processing.


JsonPathValue (V2)

The JsonPathValue (V2) block extracts data from a JSON structure using a specified JsonPath expression and stores the result in a workflow variable with a defined type.

Compared to the earlier version, this block introduces improved type handling—automatically converting the extracted value into the specified result type. It also handles missing or unmatched paths gracefully by returning an empty string (""), instead of throwing errors.

Functionality

  • Input: JsonPath expression and source variable containing a JSON structure.
  • Process:
    • Executes the JsonPath query on the JSON data in SOURCE_VAR.
    • Converts the result into the specified RESULT_TYPE.
  • Output: The converted value is stored in RESULT_VAR.

If the JsonPath expression doesn't match any value, the result is always an empty string, regardless of the expected type.

⚙ Parameters

NameModeTypeDescription
JSON_PATHDynamicStringJsonPath expression to execute.
SOURCE_VARDynamicStringVariable containing the input JSON data.
RESULT_TYPEDynamicStringType to convert the result into. Allowed types: int, double, long, bool, decimal, guid, date, string, list, object, objectlist.
RESULT_VARStaticStringName of the variable where the result will be stored.
note

Result Type Notes

  • list: List of objects (List<object>)
  • object: Dictionary (Dictionary<string, object>)
  • objectlist: List of dictionaries (List<Dictionary<string, object>>)
  • guid, date, bool, int, etc.: Converted into their respective primitive types

JsonSerializer (V1)

  • Converts the object stored in SOURCE_VAR into a JSON string and saves it in RESULT_VAR.
  • If INTENDED is set to true, the serialization will respect any intended formatting or serialization rules configured in the system.

⚙️ Parameters

ParameterModeTypeDescription
SOURCE_VARStatic/DynamicObjectThe source object to serialize
INTENDEDStatic/DynamicBoolIf true, applies intended/custom serialization behavior
RESULT_VARStaticStringVariable to store the resulting JSON string
info

Use this block when you need to convert complex data structures into JSON for storage, transmission, or logging.


JsonSerializer (V2)

The JsonSerializer (V2) block converts a given object or data structure into a JSON string and stores it in a workflow variable. This version improves upon previous implementations by automatically converting all DateTime fields into UTC format, ensuring consistency across systems and time zones.

This block is especially useful when integrating with external APIs, storing structured logs, or preparing payloads for custom UI or outbound messages.

Functionality

  • Input: Any object (e.g., dictionary, list, or data context) from a workflow variable.
  • Process: Serializes the object into a JSON string. If the object includes DateTime fields, they are auto-converted to UTC format.
  • Output: The resulting JSON string is saved to the target variable.

⚙ Parameters

NameModeTypeDescription
SOURCE_VARStatic/DynamicObjectThe input object to serialize. This can be a dictionary, list, or any valid object stored in a variable.
INTENDEDStatic/DynamicBoolIf true, applies intended/custom serialization behavior
RESULT_VARStaticStringVariable name where the resulting JSON string will be stored.
tip

Ideal for converting structured data into JSON format before sending it to APIs or saving into logs, files, or databases.


LoadCsv (V1)

The LoadCsv action parses CSV content (provided as bytes) into structured workflow data. It supports complex CSV formats by allowing fine-grained control over delimiter detection, encoding, header handling, quoting rules, row/column filtering, trimming, and optional type conversion.

Use this action when you receive a CSV as a file/byte array and need it as structured workflow data for filtering, mapping, inserts, exports, or dynamic table generation (for example, feeding List<Dictionary<string, object>> into Word table placeholders).

Functionality

Input:

  • CSV file content as List<Byte> (DATA)
  • Parsing configuration (delimiter, encoding, quote behavior, header options, row/column selection)
  • Optional conversion configuration (locales, decimal/group separators, schema override, date formats, percent mode)

Process:

  • Decodes the CSV bytes using the selected ENCODING.
  • Determines the delimiter:
    • Uses DELIMITER if explicitly set, otherwise auto-detects (if supported by configuration).
  • Extracts rows according to:
    • HEADER_ROW, START_ROW, END_ROW
    • SKIP_ROWS
    • SKIP_EMPTY_ROWS
  • Determines column names:
    • Uses header row when HAS_HEADER = true
    • Otherwise uses COLUMN_HEADERS (if provided) or generated column names.
  • Applies column filters:
    • START_COLUMN, END_COLUMN
    • SKIP_COLUMNS
  • Parses quoted fields using:
    • QUOTE_CHARACTER, IGNORE_QUOTES, ESCAPE_MODE, ALLOW_MULTILINE_FIELDS
  • Normalizes cell values:
    • TRIM_VALUES
    • Empty cells return an empty string "".
  • Optional null handling rules (see notes)
  • Optionally converts types if CONVERT_TYPES = true using locale + schema rules.

Output:

  • Stores parsed rows as List<Dictionary<string, object>> in RESULT_VAR.
  • Each dictionary represents one row:
    • Keys = column headers
    • Values = object (never null; empty cells become "")

⚙ Parameters

NameModeTypeDescription
DATAStatic/DynamicList<Byte>CSV file content as bytes.
DELIMITERStatic/DynamicStringField delimiter. Typical values: , ; \t |.
ENCODINGStatic/DynamicStringText encoding (e.g., UTF-8, ISO-8859-1, Windows-1252).
FILE_LOCALEStatic/DynamicStringFile locale for parsing decisions (often auto). e.g., en-US, fr-FR, de-DE.
NUMBER_LOCALEStatic/DynamicStringLocale used for numeric parsing/conversion.
HAS_HEADERStatic/DynamicBoolIf true, uses HEADER_ROW as column names.
HEADER_ROWStatic/DynamicInt1-based row index containing headers (used when HAS_HEADER = true).
START_ROWStatic/DynamicInt1-based row index to start reading data from (after decoding).
END_ROWStatic/DynamicInt1-based row index to stop reading at.
SKIP_ROWSStatic/DynamicList<Int>Specific row indices to skip.
COLUMN_HEADERSStatic/DynamicList<String>Manual headers to use when HAS_HEADER = false (or to override).
START_COLUMNStatic/DynamicInt1-based index of first column to include.
END_COLUMNStatic/DynamicInt1-based index of last column to include.
SKIP_COLUMNSStatic/DynamicList<Int>Column indices to exclude.
QUOTE_CHARACTERStatic/DynamicStringQuote character, typically ".
IGNORE_QUOTESStatic/DynamicBoolIf true, treats quote characters as normal text.
ESCAPE_MODEStatic/DynamicStringHow quotes are escaped. Typical: double_quote ("" inside a quoted value).
ALLOW_MULTILINE_FIELDSStatic/DynamicBoolIf true, allows line breaks inside quoted fields.
COMMENT_PREFIXStatic/DynamicStringLines starting with this prefix are treated as comments and skipped.
SKIP_EMPTY_ROWSStatic/DynamicBoolIf true, ignores rows where all cells are empty.
TRIM_VALUESStatic/DynamicBoolIf true, trims whitespace around values.
NULL_VALUESStatic/DynamicList<String>Tokens that should be interpreted as null.
EMPTY_STRING_AS_NULLStatic/DynamicBoolIf true, empty strings are treated as null during conversion.
DECIMAL_SEPARATORStatic/DynamicStringDecimal separator override (e.g., . or ,).
GROUP_SEPARATORStatic/DynamicStringThousands separator override (e.g., , or . or space).
PERCENT_MODEStatic/DynamicStringHow to treat percent values (e.g., as_number).
DATE_TIME_FORMATSStatic/DynamicList<String>Allowed date/time formats for conversion.
DAY_FIRSTStatic/DynamicBoolIf true, interprets ambiguous dates as day-first.
SCHEMA_OVERRIDEStatic/DynamicDictionary<String, String>Column type overrides (e.g., {"Amount":"decimal","CreatedAt":"datetime"}).
CONVERT_TYPESStatic/DynamicBoolIf true, attempts to convert strings to typed objects.
RESULT_VARStaticStringWorkflow variable name to store the parsed output.
warning

Important behavior and pitfalls

  • Header mismatch: If HAS_HEADER = false but COLUMN_HEADERS is missing or wrong length, your dictionaries may have generated or misaligned column keys.
  • Delimiter issues: A wrong delimiter will shift columns and silently corrupt parsing output. If you expect semicolon CSVs (common in EU exports), set DELIMITER = ;.
  • Encoding issues: If special characters (ä, ö, €) appear broken, switch encoding to Windows-1252 or ISO-8859-1.
  • Quoted multiline fields: If your CSV contains line breaks inside quotes, ALLOW_MULTILINE_FIELDS must be enabled.
  • Type conversion surprises: With CONVERT_TYPES = true, parsing depends heavily on locale, separators, and schema overrides; explicitly set SCHEMA_OVERRIDE for high-stakes columns (amounts, dates).

LoadExcelSheet (v1)

The LoadExcelSheet block parses an Excel file (provided as a byte array) and converts it into a list of dictionaries for processing.

⚙️ Parameters

NameModeTypeDescription
DATAStatic/DynamicByte[]The Excel file content (eg: retrieved via LoadTemporaryFile action).
RESULT_VARStaticStringVariable to store the parsed Excel data as a list of dictionaries.

LoadTemporaryFile

The LoadTemporaryFile block retrieves a file from database storage using a given file ID.

Parameters

NameModeTypeDescription
FILE_IDStatic/DynamicIntThe numeric ID of the file to retrieve.
RESULT_VARStaticStringVariable to store the loaded file as a byte array.

Log (V1)

The Log action writes a message into the system log using a specified log level. It is primarily used for debugging, monitoring workflow execution, and tracing runtime values.

The action always returns true.

info

Use this action to output variable values, execution checkpoints, or diagnostic information during workflow processing.

Functionality

Input:

  • A log message expression (MESSAGE)
  • A log level (LEVEL, optional)

Process:

  • Evaluates the MESSAGE expression.
  • Attempts to resolve the specified LEVEL.
  • Writes the message to the system log using the resolved level.
  • If the level is missing or invalid, defaults to FINE.

Output:

  • The evaluated message is written to the system log.
  • Always returns true.

⚙ Parameters

NameModeTypeDescription
MESSAGEDynamicStringThe message or expression to log. Supports dynamic workflow expressions.
LEVELStaticStringLog level. Supported values: SEVERE, ERROR, WARNING, INFO, CONFIG, FINE, FINER, FINEST. Defaults to FINE if invalid or not set.

Log Levels

LevelPurpose
SEVERECritical system failures.
ERRORExecution errors affecting workflow behavior.
WARNINGNon-critical issues or unexpected conditions.
INFOGeneral operational information.
CONFIGConfiguration-related details.
FINEStandard debug-level logging (default).
FINERMore detailed debug information.
FINESTHighly detailed trace output.

Log (V2)

The Log action writes a message into the system log using a specified log level. It is primarily used for debugging, monitoring workflow execution, and tracing runtime values.

The action always returns true.

info

Use this action to output variable values, execution checkpoints, or diagnostic information during workflow processing.

Functionality

Input:

  • A log message expression (MESSAGE)
  • A log level (LEVEL, optional)

Process:

  • Evaluates the MESSAGE expression.
  • Attempts to resolve the specified LEVEL.
  • Writes the message to the system log using the resolved level.
  • If the level is missing or invalid, defaults to FINE.

Output:

  • The evaluated message is written to the system log.
  • Always returns true.

⚙ Parameters

NameModeTypeDescription
MESSAGEDynamicStringThe message or expression to log. Supports dynamic workflow expressions.
LEVELStaticStringLog level. Supported values: SEVERE, ERROR, WARNING, INFO, CONFIG, FINE, FINER, FINEST. Defaults to FINE if invalid or not set.

Log Levels

LevelPurpose
SEVERECritical system failures.
ERRORExecution errors affecting workflow behavior.
WARNINGNon-critical issues or unexpected conditions.
INFOGeneral operational information.
CONFIGConfiguration-related details.
FINEStandard debug-level logging (default).
FINERMore detailed debug information.
FINESTHighly detailed trace output.

Log (V3)

The Log (V3) action writes a message into the system log with a configurable log level and optional structured metadata. It extends previous versions by allowing a process status and an error identifier to be attached to the log entry.

The action always returns true.

info

Use this version when logs must include structured status information (e.g., workflow state transitions) or standardized error identifiers for monitoring and reporting.

Functionality

Input:

  • A log message expression (MESSAGE)
  • A log level (LEVEL, optional)
  • Optional process status (PROCESS_STATUS)
  • Optional error identifier (ERROR_IDENTIFIER)

Process:

  • Evaluates the MESSAGE expression at runtime.
  • Resolves the provided LEVEL.
  • Writes the log entry with the evaluated message.
  • If defined:
    • Adds PROCESS_STATUS to the log entry.
    • Adds ERROR_IDENTIFIER to the log entry.
  • If LEVEL is not set or not resolvable, defaults to FINE.

Output:

  • A structured log entry is written to the system log.
  • Always returns true.

⚙ Parameters

NameModeTypeDescription
MESSAGEDynamicStringThe message or expression to log. Supports dynamic workflow expressions.
LEVELStaticStringLog level. Supported values: SEVERE, ERROR, WARNING, INFO, CONFIG, FINE, FINER, FINEST. Defaults to FINE if invalid or not provided.
PROCESS_STATUSStaticStringOptional workflow or process status (e.g., Started, Completed, Failed).
ERROR_IDENTIFIERStaticStringOptional identifier used to categorize or track specific error conditions.(Predefined error identifiers)

Log Levels

LevelPurpose
SEVERECritical system-level failures.
ERRORExecution errors affecting workflow behavior.
WARNINGUnexpected conditions that do not stop execution.
INFOGeneral operational information.
CONFIGConfiguration-related details.
FINEDefault debug-level logging.
FINERDetailed debugging output.
FINESTHighly detailed trace-level logging.

Usage notes

  • Use PROCESS_STATUS to reflect workflow lifecycle events.
  • Use ERROR_IDENTIFIER to standardize error tracking across workflows.
  • Structured logging is recommended for workflows that integrate with monitoring or alerting systems.
  • If structured metadata is not required, earlier Log versions may be sufficient.
warning

An invalid or missing log level does not fail the action - it falls back to FINE. Logging sensitive data (e.g., credentials, tokens, personal data) may create security risks.


LookUpAttribute

Searches for an object within the specified OBJECT_GROUP_NAME by matching either the given ATTRIBUTES dictionary or one or two parameter name-value pairs.
Upon finding a matching object, it retrieves the value of the specified COLUMN_NAME attribute and stores it in RESULT_VAR.

If no matching object is found:

  • Returns DEFAULT_VALUE in RESULT_VAR if RETURN_DEFAULT is true.
  • Otherwise, the action returns false.
warning

Either ATTRIBUTES or at least one parameter name-value pair must be provided for matching.

⚙️ Parameters

ParameterModeTypeDescription
OBJECT_GROUP_NAMEStatic/DynamicStringName of the object group to search in
ATTRIBUTESStatic/DynamicDictionary<String,Object>Attributes dictionary to match
PARAM_NAME1Static/DynamicStringName of first parameter to match
PARAM_VALUE1Static/DynamicObjectValue of first parameter
PARAM_NAME2Static/DynamicStringName of second parameter to match (optional)
PARAM_VALUE2Static/DynamicObjectValue of second parameter (optional)
COLUMN_NAMEStatic/DynamicStringName of the attribute/column whose value to retrieve
RETURN_DEFAULTStatic/DynamicBoolWhether to return DEFAULT_VALUE if no match found
DEFAULT_VALUEStatic/DynamicObjectValue to return if no match and fallback enabled
RESULT_VARStaticStringVariable to store the retrieved attribute value

LookUpAttributes

Searches for an object in the specified OBJECT_GROUP_NAME by matching either an ATTRIBUTES dictionary or parameter pairs.
If a matching object is found:

  • All attributes are returned by default.
  • If COLUMN_NAMES is specified, only the listed attributes are included.

If no match is found:

  • The action returns false, unless RETURN_DEFAULT is set to true, in which case DEFAULT_VALUE (a dictionary) is assigned to RESULT_VAR.

⚙️ Parameters

ParameterModeTypeDescription
OBJECT_GROUP_NAMEStatic/DynamicStringName of the object group to search within
ATTRIBUTESStatic/DynamicDictionary<String,Object>Attributes to match against
PARAM_NAME1Static/DynamicStringFirst parameter name for matching
PARAM_VALUE1Static/DynamicObjectValue of first parameter
PARAM_NAME2Static/DynamicStringSecond parameter name for matching (optional)
PARAM_VALUE2Static/DynamicObjectValue of second parameter (optional)
COLUMN_NAMESStatic/DynamicList<String>List of attribute names to return (optional)
RETURN_DEFAULTStatic/DynamicBoolWhether to return DEFAULT_VALUE if no match is found
DEFAULT_VALUEStatic/DynamicDictionary<String,Object>Default dictionary to return if no match and fallback enabled
RESULT_VARStaticStringVariable to store the resulting dictionary
info

Use this when you need a full set or a subset of an object’s attributes based on flexible matching logic.


MatchAndSortList (V1)

The MatchAndSortList (V1) block filters and sorts a list of dictionaries by evaluating key-value matches and applying optional sorting rules.

Functionality

  • Input: A list of dictionaries (INPUT_LIST) along with filter fields and optional sorting parameters.
  • Process:
    • Filters the list based on provided key-value pairs in FILTER_FIELDS.
    • Sorts the filtered results according to the field in SORT_BY, with optional descending order.
  • Output: Stores the filtered and sorted list in the specified RESULT_VAR.

Return:

  • true → if filtering and sorting were successful.
  • false → if the list could not be processed (e.g., invalid structure).

⚙ Parameters

NameModeTypeDescription
INPUT_LISTStatic/DynamicList<Dictionary<string,object>>The input list of dictionaries to filter and sort.
FILTER_FIELDSStatic/DynamicDictionary<string,object>Key-value pairs used to filter the input list.
SORT_BYStaticStringField name to sort the results by.
SORT_DESCENDINGStaticBoolIf true, sorts the results in descending order; otherwise, ascending.
RESULT_VARStaticStringVariable name to store the resulting filtered and sorted list.
info
  • Optional Filtering: Leave FILTER_FIELDS empty if only sorting is required.
  • Sorting Direction: Use SORT_DESCENDING = true for descending order; default is ascending.
  • Multiple Filters: You can specify several key-value pairs in FILTER_FIELDS; only items matching all criteria will remain.
  • Graceful Fallback: If no entries match the filter, RESULT_VAR will contain an empty list.

MQTTChallengeResponse (V1)

The MQTTChallengeResponse (V1) block publishes a request message to a specified MQTT topic and waits for a corresponding response on another topic.

Functionality

  • Input: MQTT client configuration, request topic, response topic, and a message payload.
  • Process:
    • Publishes the request message on the defined REQUEST_TOPIC.
    • Subscribes to the RESPONSE_TOPIC and waits for a reply.
  • Output: Stores the response payload in the specified RESULT_VAR.

Return:

  • true → if a valid response was received within the timeout period.
  • false → if no response was received or an error occurred.

⚙ Parameters

NameModeTypeDescription
MQTT_CLIENTStatic/DynamicStringIdentifier of the MQTT client configuration to use.
REQUEST_TOPICStatic/DynamicStringMQTT topic to which the request message will be published.
RESPONSE_TOPICStatic/DynamicStringMQTT topic on which to listen for the response.
QOS_LEVELStatic/DynamicIntQuality of Service level for publishing the message (0, 1, or 2).
REQUEST_PAYLOADStatic/DynamicStringThe payload of the request message (typically JSON or plain text).
TIMEOUT_MILLISStaStatic/DynamicticIntMaximum time (in milliseconds) to wait for a response.
RESULT_VARStatic/DynamicStringVariable name to store the received response payload.
info
  • Timeout Handling: Always set a reasonable TIMEOUT_MILLIS to avoid long workflow delays if no response is received.

  • QoS Selection:

    • 0 → At most once (no acknowledgment).
    • 1 → At least once (acknowledged).
    • 2 → Exactly once (highest reliability, more overhead).
  • Best Use Cases: Challenge–response authentication, IoT device handshakes, or workflows requiring synchronous confirmation.

  • Error Handling: If the timeout expires with no response, ensure your workflow accounts for the false return value.


MQTTPublisher

Publishes a message to an MQTT broker using the specified client configuration.
You can define the target topic, QoS level, and payload.
If AWAIT_RESPONSE is enabled, the block will wait for a broker response up to the defined TIMEOUT_MILLIS.

Supports all MQTT QoS levels:

  • 0: At most once
  • 1: At least once
  • 2: Exactly once

⚙️ Parameters

ParameterModeTypeDescription
MQTT_CLIENTStatic/DynamicStringThe identifier of the MQTT client configuration to use
TOPICStatic/DynamicStringThe MQTT topic to which the message should be published
QOS_LEVELStatic/DynamicIntQuality of Service level (0, 1, or 2)
PAYLOADStatic/DynamicStringThe message payload to publish (typically in JSON or plain text)
AWAIT_RESPONSEStatic/DynamicBoolWhether to wait for a response from the broker after publishing
TIMEOUT_MILLISStatic/DynamicIntTimeout (in milliseconds) to wait if AWAIT_RESPONSE is true
info

Use this block to send messages to IoT devices, event buses, or cloud services via MQTT.


PublishRabbitMQ (V1)

The PublishRabbitMQ block sends a message to a specified RabbitMQ exchange using the provided host, credentials, exchange name, and routing key.

Functionality

  • Input: RabbitMQ connection details, target exchange, routing key, and the message to send.
  • Process:
    • Connects to the RabbitMQ server using the host, port, username, and password.
    • Publishes the given message to the specified exchange and routing key.
  • Output: Sets a status flag (true or false) in the IS_SUCCESS variable indicating whether the operation succeeded.

⚙ Parameters

NameModeTypeDescription
RABBITMQ_HOSTStatic/DynamicStringHostname or IP address of the RabbitMQ server.
RABBITMQ_PORTStatic/DynamicIntPort number for the RabbitMQ connection (typically 5672).
USERNAMEStatic/DynamicStringUsername for authenticating with RabbitMQ.
PASSWORDStatic/DynamicStringPassword for authenticating with RabbitMQ.
EXCHANGEStatic/DynamicStringName of the exchange where the message will be published.
ROUTING_KEYStatic/DynamicStringRouting key used to deliver the message to a specific queue.
MESSAGEStatic/DynamicStringThe message body to send (must be a JSON string or plain text).
IS_SUCCESSStaticStringWorkflow variable name where the success result (true/false) will be stored.
info

Ensure the exchange exists and is correctly configured on the RabbitMQ server. This block does not create exchanges or queues.

warning

Keep credentials secure and avoid logging them directly in workflows.

ReadObject

Retrieves object details by OBJECT_ID and loads them into the current tag context.
You can optionally specify:

  • OBJECT_GROUP_NAME to scope the lookup.
  • COLUMN_NAMES to limit the retrieved fields.

The retrieved data is stored in the specified RESULT_VAR.

⚙️ Parameters

ParameterModeTypeDescription
OBJECT_IDStatic/DynamicGuidUnique identifier of the object to retrieve
OBJECT_GROUP_NAMEStatic/DynamicString(Optional) Object group to which the object belongs
COLUMN_NAMESStatic/DynamicList<String>(Optional) List of fields to retrieve. If not set, all fields are returned
RESULT_VARStaticStringName of the variable where the object data will be stored
info

Use this block when you need specific object attributes for decision-making or transformation later in the workflow.


ReadObjectGroup

Retrieves metadata and configuration details of a specified object group by its unique name or ID.
The result is stored in a DataContext under the variable specified by RESULT_VAR.

info

This is useful for loading group-level configurations, attributes, or mappings that may guide further processing logic.

⚙️ Parameters

ParameterModeTypeDescription
OBJECT_GROUP_NAMEStatic/DynamicStringUnique name or ID of the object group to be fetched
RESULT_VARStaticStringName of the variable where the object group details will be stored

RegexMatch (V1)

The RegexMatch block checks whether a given input string matches a specified regular expression (RegEx) pattern. Optionally, it can also capture and return matching results, including full matches and individual capture groups.

This block is ideal for string validation, pattern extraction, and conditional logic based on formatted inputs (e.g., IDs, barcodes, user input, etc.).


Functionality

Input: A target string and a RegEx pattern.

Process:

  • Applies the RegEx pattern to the input string.
  • Evaluates the True path if the pattern matches, or the False path otherwise.
  • If CATCH_RESULTS is enabled, returns:
    • RESULTS[0] → Full match
    • RESULTS[1]...RESULTS[n] → Each capture group from the pattern

Output: A list of matched strings, if capture is enabled.

⚙ Parameters

NameModeTypeDescription
STRINGStatic/DynamicStringThe input text to be matched.
PATTERNStatic/DynamicStringThe regular expression pattern to test against the input string.
CATCH_RESULTSStatic/DynamicBoolIf true, matched results are stored in the RESULTS variable.
RESULTSStaticList<string>Variable where match results will be stored. Index 0 = full match, 1…n = capture groups.
tip

Use capture groups in your RegEx (e.g., (ID):(\d+)) to extract specific portions of the matched text.


RemoveJobTags (V1)

The RemoveJobTags action removes one or more tags from the current workflow job. Tags are used for categorization, filtering, and monitoring, and this action updates that metadata accordingly.

This action does not affect workflow logic or execution flow.

Functionality

Input:

  • A list of tags (TAGS)

Process:

  • Reads the provided list of tag strings.
  • Removes matching tags from the current workflow job.
  • Tags not present on the instance are ignored.

Output:

  • The workflow job is updated with the specified tags removed.
  • Execution continues normally.

⚙ Parameters

NameModeTypeDescription
TAGSStaticList<String>One or more tags to remove from the current workflow job.
info
  • Use this action when:
    • A workflow changes state and certain classification tags are no longer valid.
    • Temporary or transitional tags need to be cleared.
  • Tag names must match exactly to be removed.
  • Removing tags helps maintain accurate filtering and reporting in monitoring views.
warning

Removing a tag that does not exist has no effect.

Tags are metadata only and do not influence workflow behavior unless referenced elsewhere.


ReplaceWordPlaceholders (V1)

The ReplaceWordPlaceholders (V1) action processes a Word document(.docx) template by replacing text placeholders and optionally generating and inserting up to 5 dynamic tables from structured data. The processed document is stored as a byte list in a workflow variable for further use (for example, export or upload).

Functionality

Input:

  • A Word template with placeholders as List<Byte> (WORD_FILE)
  • A dictionary of text replacements (Dictionary<String, String>)
  • Up to 5 table placeholders + table data pairs (List<Dictionary<String, Object>>)
  • A target workflow variable name to store the final document bytes (RESULT_VAR)

Process:

  • Loads the Word file from WORD_TEMPLATE.
  • Replaces all text placeholders in the form {{key}} or {{key2}} using entries from REPLACEMENTS {key: "value",key2:"value2"}.
  • For each table placeholder defined (TABLEn_PLACEHOLDER):
    • Finds {{TABLE:<placeholder>}} in the template.
    • Uses the corresponding TABLEn_DATA (List<Dictionary<string, object>>) to build a table:
      • Creates a header row from the first dictionary keys in the list.
      • Creates rows from each dictionary entry.
      • Applies borders to all cells.
  • Serializes the processed Word document back into List<Byte>.

Output:

  • Stores the processed Word document bytes in RESULT_VAR.

⚙ Parameters

NameModeTypeDescription
WORD_TEMPLATEStatic/DynamicList<Byte> (File)Word document template content as bytes (.docx).
REPLACEMENTSStatic/DynamicDictionary<String, String>Key/value pairs used for text replacement. Keys map to placeholders using {{key}}.
TABLE1_PLACEHOLDERStatic/DynamicStringPlaceholder name for table 1 (used in {{TABLE:<name>}}). Example: invoice.
TABLE1_DATAStatic/DynamicList<Dictionary<String, Object>>Data used to generate Table 1 (headers from keys, rows from values).
TABLE2_PLACEHOLDERStatic/DynamicStringPlaceholder name for table 2. Leave empty if unused.
TABLE2_DATAStatic/DynamicList<Dictionary<String, Object>>Data used to generate Table 2.
TABLE3_PLACEHOLDERStatic/DynamicStringPlaceholder name for table 3. Leave empty if unused.
TABLE3_DATAStatic/DynamicList<Dictionary<String, Object>>Data used to generate table 3.
TABLE4_PLACEHOLDERStatic/DynamicStringPlaceholder name for table 4. Leave empty if unused.
TABLE4_DATAStatic/DynamicList<Dictionary<String, Object>>Data used to generate table 4.
TABLE5_PLACEHOLDERStatic/DynamicStringPlaceholder name for table 5. Leave empty if unused.
TABLE5_DATAStatic/DynamicList<Dictionary<String, Object>>Data used to generate table 5.
RESULT_VARStaticStringWorkflow variable name that will store the finalized Word document as List<Byte>.

Placeholder formats

  • Text placeholders: {{key}}
    Example: {{CustomerName}} gets replaced by REPLACEMENTS["CustomerName"].

  • Table placeholders: {{TABLE:placeholder}}
    Example: {{TABLE:invoice}} is replaced by a generated table using TABLE1_DATA when TABLE1_PLACEHOLDER = "invoice".

info
  • Text replacement source: Only keys in REPLACEMENTS are used. Entries absent from the dictionary remain unchanged.

  • Dynamic table creation:

    • Table headers are created from the first dictionary keys in the list.
    • Each dictionary == one row
    • Values are written into rows in the same column order as the header keys.
    • All cells are bordered automatically.
    • If the second or subsequent dictionary has a different column name than the first, that row entry will not be added to the table.

SaveAttachment (V1)

The SaveAttachment action creates or updates an attachment for a specific object. The file is stored immediately and becomes available in the object’s attachment list.
Use this action when a workflow generates or modifies a file (for example, a processed Word document) and needs to store it as an attachment on an object.

Functionality

Input:

  • An object identifier (OBJECT_ID)
  • File name and extension
  • Binary file content (BYTE_DATA)
  • Optional overwrite behavior
  • A result variable name

Process:

  • Locates the object using OBJECT_ID.
  • Creates a new attachment with the specified FILE_NAME and FILE_EXTENSION.
  • If an attachment with the same name already exists:
    • Replaces it if OVERWRITE = true
    • Fails if OVERWRITE = false
  • Stores the provided BYTE_DATA as the attachment content.

⚙ Parameters

NameModeTypeDescription
OBJECT_IDStatic/DynamicGuidUnique identifier of the object to which the attachment will be saved.
FILE_EXTENTSIONStatic/DynamicStringFile extension of the attachment (e.g., docx, pdf, png).
FILE_NAMEStatic/DynamicStringName of the attachment file to create or update.
BYTE_DATAStatic/DynamicList<Byte>Binary content of the file to be stored.
OVERWRITEStatic/DynamicBoolIf true, replaces an existing attachment with the same name. If false, saving fails when the file already exists.
RESULT_VARStaticStringWorkflow variable name used to store the result of the operation.
info
  • BYTE_DATA must contain valid file content matching the specified file extension.
  • The file name should include the extension.
  • When generating files dynamically (e.g., via ReplaceWordPlaceholders), use the resulting byte list directly as BYTE_DATA.
  • Overwrite behavior should be explicitly controlled to prevent unintended file replacement.
warning

Common failure causes

  • OBJECT_ID does not exist.
  • BYTE_DATA is null or empty.
  • An attachment with the same name already exists and OVERWRITE is set to false.
  • Invalid or unsupported file extension.
  • Insufficient permissions to modify object attachments.

SendEmail (V1)

Sends an email to one or more recipients.
By default, the email uses the credentials configured in the client profile. To override them, disable the USE_CLIENT_CREDENTIALS flag and provide custom server settings.

  • Multiple recipients can be separated using semicolons (;).
  • SSL encryption is optional and can be enabled via the ENABLE_SSL flag.

⚙️ Parameters

ParameterModeTypeDescription
USE_CLIENT_CREDENTIALSStatic/DynamicBoolIf true, uses credentials from the client configuration
EMAIL_SERVERStatic/DynamicStringSMTP server address (required if not using client credentials)
EMAIL_SERVER_PORTStatic/DynamicIntSMTP port number
ENABLE_SSLStatic/DynamicBoolWhether to use SSL encryption for the connection
EMAIL_SERVER_USERStatic/DynamicStringSMTP username (used if USE_CLIENT_CREDENTIALS is false)
EMAIL_SERVER_PASSWORDStatic/DynamicStringSMTP password (used if USE_CLIENT_CREDENTIALS is false)
FROM_ADDRESSStatic/DynamicStringSender's email address
RECIPIENTSStatic/DynamicStringSemicolon-separated list of recipient email addresses
SUBJECTStatic/DynamicStringSubject line of the email
BODYStatic/DynamicStringContent of the email (supports plain text or HTML)
warning

For secure email delivery, always use SSL with authenticated credentials unless you're in a trusted network environment.


SendEmail (V2)

The SendEmail (V2) action sends an email using a configurable SMTP server. It supports multiple recipients and up to 5 attachments, each defined by name, MIME type, and binary content.

If an attachment name is provided, both MIME type and file content are required.

Functionality

Input:

  • SMTP configuration (server, port, SSL, authentication)
  • Sender address
  • One or more recipients (separated by ;)
  • Subject and body
  • Optional attachments (up to 5)

Process:

  • Connects to the specified SMTP server using:
    • Either client credentials (if enabled), or
    • Explicit username/password authentication.
  • Builds the email message:
    • Sets sender (FROM_ADDRESS)
    • Splits recipients by ;
    • Applies subject and body
  • For each attachment slot (1–5):
    • If ATTACHMENT_NAME_X is provided:
      • Validates that ATTACHMENT_TYPE_X and ATTACHMENT_CONTENT_X are also provided.
      • Attaches the file using the given MIME type and binary content.
  • Sends the email.

Output:

  • Returns:
    • true if the email is successfully sent.
    • false if sending fails (e.g., connection or validation error).

⚙ Parameters

SMTP Configuration

NameModeTypeDescription
USE_CLIENT_CREDENTIALSStatic/DynamicBoolIf true, uses system/client credentials instead of explicit username/password.
EMAIL_SERVERStatic/DynamicStringSMTP server hostname or IP address.
EMAIL_SERVER_PORTStatic/DynamicIntSMTP server port (e.g., 25, 465, 587).
ENABLE_SSLStatic/DynamicBoolEnables SSL/TLS for secure SMTP connection.
EMAIL_SERVER_USERStatic/DynamicStringSMTP username (required if not using client credentials).
EMAIL_SERVER_PASSWORDStatic/DynamicStringSMTP password (required if not using client credentials).

Email Content

NameModeTypeDescription
FROM_ADDRESSStatic/DynamicStringSender email address.
RECIPIENTSStatic/DynamicStringRecipient email addresses separated by ;.
SUBJECTStatic/DynamicStringEmail subject line.
BODYStatic/DynamicStringEmail body content (plain text or HTML depending on implementation).

Attachments (1–5)

Each attachment slot follows the same structure:

NameModeTypeDescription
ATTACHMENT_NAME_XStatic/DynamicStringFile name (e.g., invoice.pdf).
ATTACHMENT_TYPE_XStatic/DynamicStringMIME type (e.g., application/pdf, application/vnd.openxmlformats-officedocument.wordprocessingml.document).
ATTACHMENT_CONTENT_XStatic/DynamicList<Byte>Binary file content.
info
  • Multiple recipients must be separated using ;.
  • If ATTACHMENT_NAME_X is set:
    • ATTACHMENT_TYPE_X and ATTACHMENT_CONTENT_X must also be provided.
  • If an attachment slot is unused, leave all three related fields empty.
  • The attachment content must be valid binary data matching the specified MIME type.
warning

Common failure causes

  • SMTP server unreachable or incorrect port.
  • SSL configuration mismatch.
  • Invalid authentication credentials.
  • Attachment name provided without MIME type or content.
  • Invalid recipient format.
  • Firewall restrictions blocking outbound SMTP traffic.

SetDictionary (V1)

The SetDictionary action defines up to five key-value entries on a target dictionary object.

Each KEYx maps to VALUEx. If KEYx is empty, no assignment is performed for that pair.

Functionality

Input:

  • Target dictionary (OBJECT)
  • Up to five key-value pairs (KEY1/VALUE1 ... KEY5/VALUE5)

Process:

  • Evaluates each key-value pair.
  • Writes only pairs where KEYx is not empty.

Output:

  • Updates the provided dictionary object with the specified entries.

⚙ Parameters

NameModeTypeDescription
OBJECTStatic/DynamicDictionary<string, object>Dictionary variable to update.
KEY1StaticStringKey name for first assignment.
VALUE1StaticStringValue assigned to KEY1.
KEY2StaticStringKey name for second assignment.
VALUE2StaticStringValue assigned to KEY2.
KEY3StaticStringKey name for third assignment.
VALUE3StaticStringValue assigned to KEY3.
KEY4StaticStringKey name for fourth assignment.
VALUE4StaticStringValue assigned to KEY4.
KEY5StaticStringKey name for fifth assignment.
VALUE5StaticStringValue assigned to KEY5.
info

This action behaves similarly to SetVar, but writes into a dictionary as key-value entries.


SetGeoLocation

Updates the geographic location (latitude and longitude) of a specific object identified by OBJECT_ID.
This is typically used to map physical entities (e.g., assets, devices, or locations) to real-world coordinates for tracking or visualization.

⚙️ Parameters

ParameterModeTypeDescription
OBJECT_IDStatic/DynamicGuidUnique identifier of the object
LATITUDEStatic/DynamicDecimalLatitude coordinate of the object's location
LONGITUDEStatic/DynamicDecimalLongitude coordinate of the object's location
info

Ensure the coordinates are valid decimal values within their respective geographic bounds (±90 for latitude, ±180 for longitude).


SetHttpResponse

Configures the HTTP response to be returned from an API or web-triggered workflow.
This includes setting the status code, response headers, content type, and response body.
Use this to send structured responses back to HTTP clients.

⚙️ Parameters

ParameterModeTypeDescription
RESULT_CODEStatic/DynamicIntHTTP status code (e.g., 200, 404, 500)
RESPONSE_HEADERStatic/DynamicDictionary<String, String>Optional custom headers to include in the response
CONTENT_TYPEStatic/DynamicStringType of the response (text/json)
RESPONSE_BODYStatic/DynamicStringBody of the HTTP response (can be plain text or JSON)
info

Set CONTENT_TYPE to text/json to return structured data.

SetObjectAttributes (V1)

The SetObjectAttributes (V1) block is used to set or update the attributes of an object within a specified Object Group during workflow execution. Unlike V2, this version requires the group to be specified using its name (as a string).

This action is commonly used after object creation or update events, enabling workflows to dynamically assign or modify attribute values such as status, type, or location.

Functionality

Input: The object’s unique identifier (OBJECT_ID), the name of the group (GROUP), and a dictionary of attribute name-value pairs.

Process:

  • Locates the object in the given Object Group.
  • Updates the object using attributes provided in ATTRIBUTE_DATACONTEXT.
  • Assigns the object to the specified group (by name).

Output: Returns a boolean result indicating success or failure.

⚙ Parameters

NameModeTypeDescription
OBJECT_IDStatic/DynamicGUIDUnique identifier of the object whose attributes are being set.
GROUPStatic/DynamicStringName of the group to which the object is assigned.
OBJECT_GROUP_NAMEStatic/DynamicStringInternal name of the Object Group where the object belongs.
ATTRIBUTE_DATACONTEXTStatic/DynamicDictionary<string, object>Dictionary containing the attribute names and their values.
warning

This version uses GROUP (name string). Use SetObjectAttributes (V2) if you need to pass group identifiers programmatically using GUIDs.


SetObjectAttributes (V2)

The SetObjectAttributes (V2) block sets or updates the attribute values of an object within a specified Object Group. Compared to the original version, V2 introduces support for passing the Group as a GUID (GROUP_ID) instead of a name, making it more reliable and suitable for programmatic usage where names might vary or change.

This block is typically used to update fields such as status, metadata, or classification of an object after it has been created or processed.

Functionality

Input: The object's unique ID (OBJECT_ID), the Object Group ID (GROUP_ID), Object Group name, and a dictionary of attributes to update.

Process:

  • Locates the object based on OBJECT_ID and OBJECT_GROUP_NAME.
  • Updates the object using the provided ATTRIBUTE_DATACONTEXT.
  • Group assignment is performed using the GUID provided in GROUP_ID.

⚙ Parameters

NameModeTypeDescription
OBJECT_IDStatic/DynamicGUIDUnique identifier of the object to be updated.
GROUP_IDStatic/DynamicGUIDGUID of the group to assign to the object.
OBJECT_GROUP_NAMEStatic/DynamicStringInternal name of the Object Group the object belongs to.
ATTRIBUTE_DATACONTEXTStatic/DynamicDictionary<string, object>Dictionary containing the attribute names and their new values.
info

🆕 New in V2: Use GROUP_ID (GUID) instead of GROUP (name string) for more precise and reliable group assignments - especially useful when you dont have the group name in the context or want to reduce the number of actions used.


SetObjectAttributes (V3)

The SetObjectAttributes (V3) block sets Object Group attributes of an object using ATTRIBUTE_DATACONTEXT, which should include all required attributes.

This version accepts a GUID value in GROUP and includes USER_ID for user-context-aware updates.

Unlike previous versions, this action does not perform implicit type conversion. Provided attribute values must match expected data types exactly.

Functionality

Input: The object's unique ID (OBJECT_ID), group reference (GROUP), Object Group name (OBJECT_GROUP_NAME), attribute dictionary (ATTRIBUTE_DATACONTEXT), and user ID (USER_ID).

Process:

  • Locates the target object in the specified Object Group.
  • Applies attribute updates from ATTRIBUTE_DATACONTEXT.
  • Uses GROUP as GUID-compatible group reference.
  • Executes the update under the provided USER_ID context.
  • Validates attribute values strictly against expected types (no implicit conversion).

Output:

  • Updates object attributes when validation and assignment succeed.
  • Returns false when required attributes are missing, IDs are invalid, or data types do not match schema expectations.

⚙ Parameters

NameModeTypeDescription
OBJECT_IDDynamicGuidUnique identifier of the object to update.
GROUPStaticObjectGroup reference that accepts a GUID value.
OBJECT_GROUP_NAMEDynamicStringInternal name of the Object Group containing the object.
ATTRIBUTE_DATACONTEXTDynamicDictionary<String,Object>Dictionary of object attributes to set. Must include required attributes.
USER_IDDynamicGuidUser context identifier used for the update operation.
warning

No implicit type conversion is applied in V3. Ensure each value in ATTRIBUTE_DATACONTEXT matches the target attribute type exactly.


SetObjectInstant

The SetObjectInstant block creates or updates an object in the specified Object Group immediately during workflow execution, without waiting for the workflow to complete. This is useful for real-time operations where immediate data persistence is required, such as in alert handling, transactional logging, or when the saved object is required in consecutive steps of the workflow.

Functionality

Input: A new or existing Unique Object ID (GUID), Object Group name, and a dictionary of attributes (including primary key).

Process:

  • If the specified OBJECT_ID already exists in the group, the object is updated.
  • If the ID is new, a new object is created using the given attributes.

Output: No result is returned, but the object is committed instantly to the Object Group.

Return:

  • true → if the object is successfully created or updated.
  • false → if the operation fails due to schema mismatch or missing keys.

⚙ Parameters

NameModeTypeDescription
OBJECT_IDStatic/DynamicGuidThe unique identifier for the object. Required for both creation and update operations.
GROUPStatic/DynamicStringOptional group name or label to categorize the object.
OBJECT_GROUP_NAMEDynamic/StaticStringThe internal name of the Object Group where the object belongs.
ATTRIBUTE_DATACONTEXTStatic/DynamicDictionary<String, Object>Key-value dictionary of attributes and their values. Must include values for all mandatory fields, including the primary key(s).
tip

This block is ideal for pushing live updates into a database-like structure. Be sure to match attribute names exactly as defined in the Object Group schema.


SetJobStatus (V1)

The SetJobStatus action sets the logical job status of the current workflow job. It can optionally assign an error identifier for structured error tracking.

This action is typically used to explicitly mark workflow state transitions such as success, failure, or intermediate states.

Functionality

Input:

  • A status value (STATUS)
  • Optional error identifier (ERROR_IDENTIFIER)

Process:

  • Assigns the provided STATUS to the current workflow job.
  • If defined, associates the ERROR_IDENTIFIER with the workflow job.

Output:

  • Updates the workflow’s logical process status.
  • The workflow continues execution unless controlled by additional logic.

⚙ Parameters

NameModeTypeDescription
STATUSStaticStringLogical status to assign to the workflow job (e.g., Started, Processing, Completed, Failed).
ERROR_IDENTIFIERStaticStringOptional identifier used to categorize or track specific error conditions.
info
  • Use this action to reflect meaningful lifecycle transitions in long-running or business-critical workflows.
  • ERROR_IDENTIFIER should be standardized across workflows to support monitoring and reporting.
  • This action sets metadata only, it does not stop or alter workflow execution by itself.
  • Process Status and Error Codes will be listed in workflow job listing page.
warning

Setting a failure-related status does not automatically terminate the workflow.

Ensure status values follow a consistent naming convention across projects to avoid ambiguity in monitoring systems.


SetStorageLocation(V1)

  • Assigns or updates the storage location details for a specified object.
  • All storage parameters (Number, Location, Area, or Bin) must be provided and selected from a preconfigured list.

⚙️ Parameters

ParameterModeTypeDescription
OBJECT_IDStatic/DynamicGuidUnique identifier of the object to update
STORAGE_NUMBERStaticStringHigh-level storage identifier (e.g., warehouse or zone)
STORAGE_LOCATIONStaticStringSpecific location within the storage number
STORAGE_AREAStaticStringDefined area within the location (e.g., aisle, section)
STORAGE_BINStaticStringThe actual bin or compartment where the object is stored

SetStorageLocation(V2)

  • Assigns or updates the storage location details for a specified object.
  • At least one of the storage parameters (Number, Location, Area, or Bin) must be provided.
  • Unlike version 1, this version allows you to set custom values for parameters.
  • If any parent hierarchy value is omitted, it will be automatically resolved from available context.

⚙️ Parameters

ParameterModeTypeDescription
OBJECT_IDStatic/DynamicGuidUnique identifier of the object to update
STORAGE_NUMBERStaticString(Optional) High-level storage identifier
STORAGE_LOCATIONStaticString(Optional) Specific location within the storage number
STORAGE_AREAStaticString(Optional) Defined area within the location
STORAGE_BINStaticString(Optional) The actual bin or compartment
info

When fewer parameters are provided, the system auto-detects missing parent levels based on existing mappings or default rules.


SetStorageLocationByID

The SetStorageLocationByID block is designed to configure storage details for an object by directly specifying its ID and associated storage hierarchy parameters.

Functionality

  • Input: An object identifier (OBJECT_ID) and at least one storage parameter (NumberID, LocationID, AreaID, or BinID).
  • Process: Updates the object’s storage details. If parent values are not provided, they are automatically detected from the context.
  • Output: The object’s storage location is updated accordingly.

Return:

  • true → if the update was successful.
  • false → if the update failed (e.g., invalid IDs or context mismatch).

Parameters

NameModeTypeDescription
OBJECT_IDStatic/DynamicGuidUnique identifier of the object whose storage location will be updated.
STORAGE_NUMBER_IDStatic/DynamicStringHigh-level storage number ID (e.g., warehouse ID).
STORAGE_LOCATION_IDStatic/DynamicStringLocation ID within the storage number.
STORAGE_AREA_IDStatic/DynamicStringArea ID inside the location (e.g., aisle, section).
STORAGE_BIN_IDStatic/DynamicStringBin ID or compartment where the object is stored.
note
  • Mandatory Input: At least one of STORAGE_NUMBER_ID, STORAGE_LOCATION_ID, STORAGE_AREA_ID, or STORAGE_BIN_ID must be provided.
  • Auto-Detection: If certain parent IDs are not provided, they will be resolved automatically from available context or configuration.
  • Error Handling: Always confirm that the OBJECT_ID exists before attempting to set the storage location.

SetVar

  • Assigns values to one or more variables.
  • You can specify up to five variable-value pairs at once.
  • Use commas (,) to separate multiple variable names in the input fields.

⚙️ Parameters

ParameterModeTypeDescription
RESULT_VAR1StaticStringName of the first variable to assign
VALUE1Static/DynamicStringValue to assign to the first variable
RESULT_VAR2StaticStringName of the second variable
VALUE2Static/DynamicStringValue for the second variable
RESULT_VAR3StaticStringName of the third variable
VALUE3Static/DynamicStringValue for the third variable
RESULT_VAR4StaticStringName of the fourth variable
VALUE4Static/DynamicStringValue for the fourth variable
RESULT_VAR5StaticStringName of the fifth variable
VALUE5Static/DynamicStringValue for the fifth variable
info

Use this block to set multiple workflow variables quickly and efficiently in a single step.


Sleep (V1)

The Sleep block pauses workflow execution for a defined amount of time (in milliseconds). This is useful in workflows where you need to introduce delays—for example, to wait before retrying an action, throttle execution, or align with external timing requirements.

Functionality

Input: Duration to sleep, in milliseconds.

Process: Suspends the workflow for the specified time.

Output: None. Execution resumes automatically after the delay.

⚙ Parameters

NameModeTypeDescription
SLEEP_TIMEStatic/DynamicIntTime to pause workflow execution (in milliseconds).
info

⏱️ Example: A value of 5000 will pause the workflow for 5 seconds before continuing.


SplitString

Splits the input string (SOURCE_VAR) into a list of strings (TARGET_VAR) using the specified separator (SEPARATOR).
Options allow removing empty entries and trimming whitespace from each split element.
Returns false if the source string or separator is null or empty.

⚙️ Parameters

ParameterModeTypeDescription
SOURCE_VARStatic/DynamicStringThe input string to be split
SEPARATORStatic/DynamicStringThe delimiter string used to split the input
REMOVE_EMPTY_ENTRIESStatic/DynamicBoolIf true, empty entries after splitting are removed
TRIM_ENTRIESStatic/DynamicBoolIf true, trims whitespace from each split string
TARGET_VARStaticStringThe variable name to store the resulting list of strings
info

Use this block to convert delimited strings into lists for iteration or further processing.

StartTimer

Initiates a timer with a specified duration. Once the timer completes, the OnTimer event is triggered.
Use this to delay execution or schedule logic to run after a set period.

⚙️ Parameters

NameModeTypeDescription
TIMER_NAMEStatic/DynamicStringA unique name to identify the timer
DURATIONStatic/DynamicIntTime duration in milliseconds for the timer
GLOBAL_TIMERStatic/DynamicBoolIf true, the timer is global and not scoped to a specific workflow job

UpdateGlobalVar

Updates the value of a global variable. If a group is specified, the variable will be updated within that group; otherwise, it is updated at the client (global) level.

  • Returns false if VAR_NAME is missing or invalid.

⚙️ Parameters

NameModeTypeDescription
VAR_NAMEStatic/DynamicStringThe name of the variable to update
GROUPStatic/DynamicString(Optional) Group name to update the variable within
VALUEStatic/DynamicAnyThe new value to assign to the global variable

ValidateDecimalLimits (V1)

The ValidateDecimalLimits action validates whether a decimal VALUE fits within the configured precision and scale for a target attribute.

It checks metadata from OBJECT_GROUP_NAME and COLUMN_NAME, and returns false if the value would be rounded or truncated during database storage.

Functionality

Input:

  • Object group name (OBJECT_GROUP_NAME)
  • Column name (COLUMN_NAME)
  • Decimal value (VALUE)

Process:

  • Reads the target column's decimal precision and scale metadata.
  • Verifies whether VALUE can be stored without loss.

Output:

  • Returns true if value is valid for the configured limits.
  • Returns false if value exceeds allowed precision/scale.

⚙ Parameters

NameModeTypeDescription
OBJECT_GROUP_NAMEStatic/DynamicStringName of the object group containing the target column.
COLUMN_NAMEStaticStringName of the decimal column to validate against.
VALUEStatic/DynamicDecimalDecimal value to validate.
warning

Use this action before persistence to prevent silent rounding or truncation.


WebRequest

  • Sends an HTTP/HTTPS request to the specified REQUEST_URL using the defined method and headers.
  • You can include optional content, manage cookies, handle SSL bypass, and capture the response.
  • Execution pauses until the response is received if AWAIT_RESPONSE is enabled.

⚙️ Parameters

NameModeTypeDescription
REQUEST_URLStatic/DynamicStringThe full URL to send the request to
BYPASS_SSLStatic/DynamicBoolSkip SSL certificate verification
REQUEST_METHODStatic/DynamicStringHTTP method (GET, POST, PUT, DELETE, etc.)
REQUEST_HEADERStatic/DynamicDictionary<String, String>Custom headers to include in the request
COOKIE_STOREStatic/DynamicDictionary<String, String>Optional cookie values to send
REQUEST_CONTENT_TYPEStatic/DynamicStringContent-Type of the request payload (e.g., application/json)
DATA_TO_SENDStatic/DynamicStringPayload data to send (used for POST, PUT, etc.)
AWAIT_RESPONSEStatic/DynamicBoolWait for a response before proceeding
READ_RESPONSE_MESSAGEStatic/DynamicBoolRead the response body into a variable
TIMEOUT_MILLISStatic/DynamicIntTimeout in milliseconds for the request
RANGE_OK_RESPONSESStatic/DynamicStringComma-separated range of HTTP codes considered successful
COUNT_RETRIESStatic/DynamicIntNumber of retry attempts on failure
RETRY_WAIT_MILLISStatic/DynamicIntDelay between retries in milliseconds
RESULT_VARStaticStringVariable name to store the response body
RESPONSE_HEADERStaticStringVariable name to store the response headers
info

Automatic User-Agent Header:

All outgoing HTTP requests from the WebRequest action automatically include a User-Agent header. By default, this value is set by the system, but you can override it by setting the environment variable WORKFLOWPROCESSOR__WEBREQUESTUSERAGENT.


WebRequest3

warning

Deprecated: The WebRequest3 action is deprecated and may be removed in a future release. Use the standard WebRequest action for all new workflows and migrate existing usage where possible.

  • Sends a synchronous HTTP request to the specified REQUEST_URL using a defined method.
  • Supports custom headers, optional cookies, and payload data.
  • Lightweight version of the standard HTTP request, ideal for simpler integrations.

⚙️ Parameters

NameModeTypeDescription
REQUEST_URLStatic/DynamicStringFull endpoint to send the request to
REQUEST_METHODStatic/DynamicStringHTTP method (GET, POST, PUT, DELETE, etc.)
COOKIEStatic/DynamicStringOptional cookie string
HEADER_ITEMSStatic/DynamicDictionary<String, String>Dictionary of headers to add dynamically
HEADER_NAME1Static/DynamicStringStatic header key #1
HEADER_VALUE1Static/DynamicStringStatic header value #1
HEADER_NAME2Static/DynamicStringStatic header key #2
HEADER_VALUE2Static/DynamicStringStatic header value #2
HEADER_NAME3Static/DynamicStringStatic header key #3
HEADER_VALUE3Static/DynamicStringStatic header value #3
REQUEST_CONTENT_TYPEStatic/DynamicStringContent-Type of the request (e.g., application/json)
DATA_TO_SENDStatic/DynamicStringPayload body to send in the request
AWAIT_RESPONSEStatic/DynamicBoolWait for the response before continuing
READ_RESPONSE_MESSAGEStatic/DynamicBoolStore the response body in a variable
TIMEOUT_MILLISStatic/DynamicIntTimeout in milliseconds
RANGE_OK_RESPONSESStatic/DynamicStringComma-separated HTTP status code ranges to treat as successful
RESULT_VARStaticStringVariable to store the response message
RESPONSE_HEADERStaticStringVariable to store the response headers

While

Continuously executes its child steps as long as the provided boolean expression evaluates to true.
The condition is checked before each iteration.

⚙️ Parameters

NameModeTypeDescription
EXPRESSIONDynamicBoolA boolean expression to evaluate before each loop

XPath

Executes an XPath query on an XML string stored in a variable and stores the result in the specified output variable.

⚙️ Parameters

NameModeTypeDescription
XPATHDynamicStringThe XPath expression to apply on the XML data
SOURCE_VARDynamicStringVariable containing the XML string to query
RESULT_VARStaticStringVariable where the query result will be stored
info
  • Supports standard XPath syntax for navigating and extracting XML content.
  • If the XPath expression matches multiple nodes, the result will contain them all as a single string (concatenated or list-like depending on implementation).
  • If no match is found, the result may be an empty string or null depending on the environment.