Skip to main content
This guide is for building custom FTT workflows after you understand how library tests score equipment. You design the conceptual test, classify inputs and outputs, build logic in the workflow builder, construct report text, and validate with the debugger. If you are new to FTT, start with What is Functional Testing? and What is Functional Testing?. Most sites deploy library workflows first. Use this guide when a library workflow does not match your sequence of operations.
Before you create a custom workflow, review Workflow logic blocks for available block types.

When to build a custom workflow

Use the library when a standard VAV, FCU, AHU, or heat pump workflow already matches the component you need to score. Build a custom workflow when you need a different command path, sensor set, or success criteria. Common situations that lead to custom work:
  • Continuous commissioning at scale for terminal units across heating and cooling seasons
  • Retail or multi-site validation before and after a service visit
  • New construction prioritization so agents re-test failed units instead of spot-checking a small sample

Workflow architecture

Every workflow in the KODE standard architecture contains the following components:

Time control parameters

KODE standard architecture uses three time control parameters in every workflow. These are user-adjustable and applied consistently to each sequence.

Sequence architecture

Sequences are the core building blocks of a workflow. Each sequence tests one mechanical component by issuing a command, monitoring the sensor response, and scoring the result. Sequences are isolated to the smallest individual component of the device that you want to test and score.

Components of a sequence

Sequence string builders

Each sequence generates six messages in the test report:
Close Damper sequence output showing message 1 Sequence Description explaining the command and success criteria, messages 2 and 3 Override Command Successful with feedback check after 10 seconds, message 4 Sensor Reading showing Discharge Airflow values approaching the threshold, message 5 Operation Successful with stabilization wait, and message 6 Damper Commanded closed and Flow was not detected

A test result showing the six output messages generated per sequence, numbered 1 through 6

Step 1: conceptual design

Define each sequence, write command, and success criteria before opening the logic builder. This section uses VAV Damper Operation as a working example.
1

Define pre-condition checks

Identify the states the equipment must be in for a valid test. Ask: what conditions ensure the test produces a meaningful mechanical result?
2

Define each sequence

For each mechanical component to test, specify the write command, sensor input, threshold calculation, and comparison type.
3

Classify all inputs

Organize every point and value into four categories. This determines which logic block type to use in the builder.

Step 2: build the workflow

1

Set up the main folder

Create the workflow and populate the main folder with sub-folders for device types, required states, and parameters. Add read blocks, parameter blocks, and write commands to their respective folders. The write commands are used later inside specific sequences.
Logic builder showing the main folder with VAV device block containing Occ Mode, Damper Position, Discharge Airflow, and Max Occ Cooling Flow outputs, AHU device block with Occ Mode and DAP, Required States block with AHU Occupied and VAV Occupied, and Parameters block with Max Sequence Duration, Min Sequence Duration, Stabilization Time, AHU Pressure Min Threshold, Close Damper Command, Lower Bound Airflow, Open Damper Command, and Upper Bound Airflow

Step 1: Main folder populated with VAV, AHU, Required States, and Parameters sub-folders

2

Build the high-level structure

Create folders for initial conditions, pre-condition checks, and each control sequence. Connect the main inputs and outputs to form the overall workflow structure.
Logic builder showing Step 2 Workflow Structure with AHU and VAV device blocks, Required States, and Parameters connected to an Initial Conditions folder with print outputs, a Pre-Conditions Check folder with trigger and check result, and two Sequence folders each with Trigger, Primary Point, Base Threshold, Calc Point, Write Cmd, Min Duration, Max Duration, and Stabilization Time inputs

Step 2: High-level workflow structure with initial conditions, pre-condition check, and sequence folders

3

Connect points to folders

Connect your sensor inputs, required states, parameters, and write commands into the appropriate folders. This completes the high-level wiring of the workflow.
Logic builder showing Step 3 Connected Workflows with all VAV, AHU, Required States, and Parameters blocks fully wired into Initial Conditions, Pre-Conditions Check, Sequence 1 and Sequence 2 folders with connection lines visible between all inputs and outputs

Step 3: All points connected from the main folder into the workflow structure

4

Build each sequence

Open each sequence folder and configure the logic blocks. For each control sequence, ask:
  • Am I writing the correct point field?
  • Am I doing the proper calculation on my base threshold (multiplication, addition, subtraction)?
  • Am I doing the proper comparison (less than, greater than, equal to)?
Logic builder showing Step 4 Sequence Logic inside Sequence 1 with Input blocks for Trigger, Write Cmd, Primary Point, Base Threshold, and Calc Point connected through Product calculation and comparison logic to Number Switch and String Switch outputs, with timing blocks for Min Duration, Max Duration, and Stabilization Time, and String Builder blocks for sequence description, sensor reading, and result messages

Step 4: Inside Sequence 1 showing the complete logic with write command, threshold calculation, comparison, timing, and string builders

Step 3: build text output

Use string builder blocks to combine static text with variable inputs from the logic. The command success/failure, minimum duration, and stabilization messages are standard and generally do not require modification. Focus on customizing the three messages below.
In the templates below, italic text represents static text you should customize for your test. Backtick text represents dynamic values populated by drawing lines from logic blocks into the string builder.

Sequence description message

This message describes the command being issued, the maximum time duration, the success criteria, and how the thresholds were calculated. Template:
  1. This sequence will command the VAV Damper Cmd to
  2. Command Value
  3. %. The equipment has a maximum of
  4. Max Duration
  5. seconds to achieve the success criteria.
  6. In order to succeed the
  7. VAV Airflow must be less than
  8. Calculated Threshold
  9. . The threshold of
  10. Calculated Threshold
  11. was calculated by taking:
  12. Parameter Calc
  13. % of the Max Occ Cooling Flow.
String Builder block showing alternating rows of static text like This sequence will command and variable input slots like 2nd Word, 4th Word, 7th Word, 9th Word, and 11th Word that receive values from logic block connections

A String Builder block configured for the sequence description with alternating static text and variable inputs from logic blocks

Sensor reading message

This message outputs repeatedly during the sequence each time a new point value is received. It displays the measured value and the required threshold. Template:
  1. Discharge Airflow:
  2. Primary Sensor Input
  3. Threshold 1:
  4. Calculated Threshold 1

Sequence success/failure message

This message outputs at the end of the sequence to confirm the result. Modify the text directly to match your test.
  • Success: “Damper successfully closed.”
  • Failure: “Damper failed to close.”

Initial conditions string builder

The initial conditions section prints the overall workflow description and the starting values of each point per device. Workflow description template: This workflow will test a VAV box for its damper operation. First, we display the initial conditions of the equipment, then we perform pre-condition checks to ensure the equipment is ready to be tested, next we will close the damper and then open the damper measuring airflow to validate the operation. Device initial conditions template:
  1. Device Type:
  2. Point Name 1 -
  3. Point Value 1
  4. Point Name 2 -
  5. Point Value 2

Pre-conditions check string builder

Pre-condition checks come in two forms, each requiring a success and failure message. State check: Success:
  1. Device Type
  2. is
  3. Required State
  4. and passes the pre-condition check.
Failure:
  1. Device Type
  2. is not
  3. Required State
  4. and fails the pre-condition check.
Threshold check: Success:
  1. Device Type
  2. Airflow/Pressure/Temperature does meet the maximum threshold.
  3. Sensor:
  4. Point Value
  5. . Min/Max Threshold:
  6. Parameter
Failure:
  1. Device Type
  2. Airflow/Pressure/Temperature does not meet the minimum threshold.
  3. Sensor:
  4. Point Value
  5. . Min/Max Threshold:
  6. Parameter

Step 4: quality assurance

Use the debugger to validate each section of the workflow. Open the Debugger tab, review and adjust parameter values, then select Start Simulation.
Debugger tab showing PARAMS panel with FCU Fan Cmd percent Low Limit, Loop Differential Pressure Low Limit, Max Sequence Duration, Min Sequence Duration, Stabilization Time, Chilled Water Valve Close Cmd, and Stop Cooling DAT Threshold parameters

The debugger PARAMS panel where you set parameter values before running a simulation

Initial conditions

For each device type, verify:
  1. The correct device type prints
  2. The correct point names print
  3. The correct point values print

Pre-condition checks

For each check, test both the success and failure case. Update INPUT values in the debugger to simulate different equipment conditions.
Debugger showing INPUTS panel with Differential Pressure, Occ Mode, Fan percent Cmd, Chilled Water Valve Cmd, and DAT fields with status dropdowns set to ok, while the simulator shows Pre-Condition Check sequence initialized

The INPUTS panel during simulation where you send sensor values to test workflow responses

Using the VAV Damper Operation example with three pre-condition checks:

Control sequences

For each sequence, verify:
  1. The threshold calculation is correct
  2. The sequence passes when the sensor reaches the threshold
  3. The sequence fails when values approach but do not reach the threshold
  4. The string builders produce consistent description and sensor reading messages
Compare the debugger output with what a real test result looks like. The sequence names, descriptions, and pass/fail messages should match.
V2 FCU Heating test result showing Starting step with workflow description and initial conditions, Pre-Condition Check PASSED with FCU Occupancy Confirmed and Fan percent Cmd threshold check

A real test result showing the output format your workflow should produce

Delay times run in real time during simulation. Temporarily change time units to seconds on timer blocks to speed up testing. Return to the correct units before deploying.

Scaling to complex use cases

The standard architecture extends to handle advanced scenarios. These patterns can be combined within a single sequence as needed.

Multiple write commands in a single sequence

Issue commands to multiple points within a single sequence, such as commanding both a damper and a fan. Connect both write commands through an AND block before proceeding to the comparison logic.

Calculated command values

Derive the command value from sensor data or parameters rather than using a fixed value. Add a Calculation Logic block between the command parameter and the write command.

Multiple success criteria

Evaluate two or more conditions that must both pass for the sequence to succeed. Add a second comparison path with its own sensor, threshold, and calculation, then connect both comparisons through an OR block. String builder template for multiple success criteria:
  1. This sequence will command the VAV setpoint to
  2. Calc Value
  3. The equipment has a maximum of
  4. Max Duration
  5. seconds to achieve the success criteria.
  6. In order to succeed the VAV DAT must be less than
  7. Calculated Threshold 1
  8. or less than
  9. Calculated Threshold 2
  10. . The threshold of
  11. Calculated Threshold 1
  12. assumes that when heating is stopped the VAV discharge air temp will approach the VAV zone temp with a buffer of
  13. Calc Param 1
  14. . The threshold of
  15. Calculated Threshold 2
  16. assumes that when heating is stopped the VAV discharge air temp will approach the AHU discharge air temperature with a buffer of
  17. Calc Param 2
Start with the standard architecture and expand as needed. The logic for multiple write commands, calculated values, and multiple criteria can be combined within a single sequence.

Definitions

Next steps

Workflow logic blocks

Reference guide for all available block types.

Workflows

Manage and test workflows in the logic builder.

FTT projects

Assign workflows to devices and schedule testing.

Deployment guide

Roll out library workflows before you invest in custom logic.
Last modified on August 18, 2026