Reference guide for all logic block types available in the FTT workflow builder, including read, write, parameter, arithmetic, conditional, timing, and testing blocks.
Logic blocks are the building components of FTT workflows. Each block performs a specific operation. You connect blocks on the canvas to create the testing logic for your equipment.This page is a block-type reference. For how a finished workflow decides pass or fail, see What is Functional Testing?. For end-to-end custom authoring, see the Workflow creator guide. Most sites start with the workflow library before they edit blocks.
Write blocks issue commands (overrides) to device points. Each write block activates as soon as data flows into its trigger input. The trigger accepts number, boolean, or string data observations. Use write blocks to command equipment during test sequences, such as closing a damper or turning on a fan.
Cloud BMS uses a BACnet-inspired priority model for writable points. The same command dialog appears for BACnet and non-BACnet integrations, such as REST API thermostats. How each action maps on the device depends on the connector.BACnet points that accept commands have 16 priority levels (1 is highest, 16 is lowest). When every level is empty (null), the point uses a fallback / default value (Relinquish_Default in BACnet). That fallback is not a 17th BACnet priority. Some interfaces label it as level 17 for display only.Override and Set turn different knobs under the hood, even when the visible value looks the same.
Action
What it writes*
Description
Override
Priority 8*
Temporary exception in the priority array. Takes precedence over lower-priority automation.
Set
Fallback / default*
Changes the fallback or default value.
Auto
—
Clears an Override
Release
—
Clears a Set
*Typical for most BACnet and Niagara deployments. Connectors and site standards can differ.Override, Auto, and Set borrow Niagara-style action names. Release is a Cloud BMS action that clears a Set.In Niagara-style control, Set keeps a non-null fallback so sequences and logic keep a reliable baseline. Use the priority array (including Override) for programmed automation and temporary exceptions.To make Set write to priority 16 instead of the fallback or default, enable Set in Slot16 (Niagara) on the point. Configure that option from device details, device templates, or points batch update.
Read blocks bring point data from connected devices into the workflow. Each read block provides two outputs: Status (the point’s connection status) and Value (the current reading from the point).Every read block has the following fields:
Designates whether this block is the main reference point or a supporting point. Every workflow must have one and only one Main point. When an event is generated, the main point serves as the reference to other modules within Cloud BMS. All other read blocks are set to Secondary.
Select inside the Field input to open a dialog where you can browse and choose the target point. Available points are scoped based on the entities defined in the workflow. If you do not see a point you need, verify that the selected entities contain that field.
Use Read Array blocks when a device has two or more distinct fields with the same name. Within a device, it is possible to have two distinct points that share the same name, appended with an identifying number. The system identifies their array potential and allows you to select that type.For example, if a device has two compressor stages, determining whether a compressor is running requires checking both points. With a Read Array block, you bring in a single block instead of two separate read blocks. This simplifies the workflow and eliminates the need to cover all variations of multi-stage compressors within a single routine.Each Read Array block has the following fields:
Parameter blocks provide a way to customize values for projects that use the workflow, without editing the workflow itself. The values you set in parameter blocks become available when configuring a job that uses the workflow. Users can override defaults during project setup.Every parameter block has the following fields:
A human-readable label for the parameter. Use a descriptive name that can be understood by anyone, such as “Pressure Min Threshold” or “Cooling - Delta.” Clear naming minimizes confusion when accessed later to troubleshoot or understand the intent.
A string input that appears when the information icon is hovered over during parameter configuration. Use as many words as necessary to communicate the intent of the parameter, its expected range, and any constraints.
The default value for the parameter. When you edit parameters during job setup, you alter this input to the algorithm. Users can override this value when setting up an FTT project.
The block outputs the value specified in the Value field (or the user’s override) for use by downstream blocks.
Arithmetical blocks perform mathematical operations on number inputs. Use these blocks to calculate thresholds, derive values, and process sensor data.Multi-input blocks (Difference, Max, Mean, Min) accept two or more inputs. Click the + button on the block to add additional input fields. Each input accepts a linked number output from another block or a static value set directly in the field. The block outputs a single Result value.Single-input blocks (Absolute) accept one input and output a single Result value.
Difference
Max
Mean
Min
Absolute
Sum
Product
Quotient
Modulo
Calculates the difference between input values. Outputs the post-calculated value. Use the + button to add more operands.
Difference block with multiple inputs, add operands button, and result output
Returns the largest value from all inputs. Use the + button to add more inputs.
Max block with multiple inputs, add inputs button, and result output
Returns the average of all input values. Use the + button to add more inputs.
Mean block with multiple inputs, add inputs button, and result output
Returns the smallest value from all inputs. Use the + button to add more inputs.
Min block with multiple inputs, add inputs button, and result output
Returns the non-negative value of the input. Accepts a single number input or a static value.
Absolute block with single input and result output
Adds all input values together. Use the + button to add more operands.
Sum block with multiple inputs, add operands button, and result output
Multiplies all input values together. Use the + button to add more operands.
Product block with multiple inputs, add operands button, and result output
Divides the first input by the second. Use the + button to add more operands for chained division.
Quotient block with multiple inputs, add operands button, and result output
Returns the remainder from dividing the first input by the second.
Array operation blocks process a list of values collected from Read Array blocks or Buffer blocks. Each block accepts a list input and outputs a single result value. Use these blocks to analyze trends and compute statistics.
Delta
Max Array
Length
Mean Array
Min Array
Sort Array
Std Deviation
Sum Array
Variance
Returns the difference between the minimum and maximum values in the list.
Delta block with list input and result output
Returns the largest number in the list.
Max Array block with list input and result output
Returns the count of items in the provided list. Accepts lists of numbers, booleans, or strings.
Length block with list input and result output
Returns the mean of the numbers in the list. Choose between a weighted mean or a simple average.
Mean Array block with weighted/simple toggle, list input, and result output
Returns the smallest number in the list.
Min Array block with list input and result output
Returns the input list sorted in ascending or descending order.
Sort Array block with ascending/descending toggle, list input, and sorted list output
Returns the standard deviation of the numbers in the list. Choose between a weighted or simple standard deviation.
Std Deviation block with weighted/simple toggle, list input, and result output
Returns the sum of all numbers in the list.
Sum Array block with list input and result output
Returns the variance of the numbers in the list. Choose between a weighted or simple variance.
Variance block with weighted/simple toggle, list input, and result output
Difference between highest and lowest values over five minutes:Read Number > Buffer Time (5 min) > Array Sort (Ascending) > Array Delta15-minute rolling average:Read Number > Buffer Time (15 min) > Array Mean
The If block evaluates a true or false condition and routes data to one of two outputs. Link a block that outputs a boolean to the input. The block routes to Do when the condition evaluates to true and to Else when it evaluates to false.
Switch blocks evaluate a boolean conditional input and return a value based on the result. The top return value outputs when the condition is true, and the bottom return value outputs when the condition is false. You can use block inputs or static values.
String Switch
Numeric Switch
Boolean Switch
Outputs the corresponding string associated to the evaluated true or false condition.
String Switch block with conditional input, two return values, and string result output
Outputs the corresponding number associated to the evaluated true or false condition.
Numeric Switch block with conditional input, two return values, and number result output
Outputs the boolean associated to the evaluated true or false condition.
Boolean Switch block with conditional input, two return values, and boolean result output
Gate blocks control the flow of data through the workflow by acting as barriers that open or close based on a trigger.
Skip Until
Take Until
Prevents data from passing through until a data observation arrives at the trigger. The trigger accepts number, boolean, or string data. When an input is linked, an output of the same data type appears on the right.
Skip Until block with trigger and input/output
Passes data through until a data observation arrives via the trigger, then stops. The trigger accepts number, boolean, or string data. When an input is linked, an output of the same data type appears on the right.
The Merge block combines multiple inputs of the same data type (number, boolean, or string) into a single output. As a data observation is received from any of the inputs, it is sent to the output regardless of order. Use the + button to add more inputs.
Merge block with multiple inputs and single output of matching type
Waits for a specified amount of time and outputs the last value received from the input. Configure the wait time unit (seconds, minutes, or hours) and the count of time units to wait.
Audit block with wait time configuration, count input, data input, and output
Waits for a specified amount of time and outputs a value only if that value has been unchanged during that period. Configure the wait time unit (seconds, minutes, or hours) and the count of time units to wait.
Debounce block with wait time configuration, count input, data input, and output
Buffer blocks collect values from an input into a list. The list is returned when the configured condition (time or count) is met.
Buffer Time
Buffer Count
Collects values from the input into a list that is returned after the specified amount of time. Configure the time unit (seconds, minutes, or hours) and the duration.
Buffer Time block with time settings, count input, data input, and list output
Collects values from the input into a list that is returned when the count is satisfied. Specify the number of values to collect.
Buffer Count block with count setting, data input, and list output
FTT-specific blocks manage the testing sequence lifecycle. These blocks handle sequence scoring, pass/fail evaluation, stabilization periods, and the release of equipment overrides at test completion.
Sequence
Logger
Archive
Interrupt
Release
Activates as soon as a data observation goes into its trigger. Outputs a true/false value indicating whether the sequence was successful. Configure the sequence name and count.
Sequence block with trigger, name, sequence count, input, and pass/fail output
Sends a string value to the workflow logger for debugging and reporting. Link a string output or enter a static string value.
Logger block with string input
Initiates when a data observation goes into its trigger. The trigger accepts number, boolean, or string data. Use this block to archive data at specific points in the test sequence.
Archive block with trigger input
Initiates when a data observation goes into its trigger. The trigger accepts number, boolean, or string data. Use this block to interrupt the test sequence.
Interrupt block with trigger input
Initiates when a data observation goes into its trigger. The trigger accepts number, boolean, or string data. When the Release block executes, the test ends and all commands issued to the equipment during the test are released.
Release block with trigger input
Every FTT workflow must end with a Release block. When the Release block executes, the test ends and all commands issued to the equipment during the test are released.