New: the AI firewall watches every module and explains each incident in plain words. See how it works

Versions, testing and rollback

Drafts and versions, the test runner, recording and tracing runs, rolling back, restoring deleted flows, the audit trail, and importing and exporting flows.

A flow has one shared draft and a history of deployed versions. You test the draft before you deploy it, compare versions, and roll back when a deploy went wrong. This page covers that cycle.

Drafts and versions

DraftVersion
What it isThe flow as it is being editedThe flow as it was deployed
How it is madeSaved automatically as anyone editsEach Deploy makes the next version (v1, v2 …)
RunsNeverThe deployed version runs while the flow is switched on
SharedYes: one draft per flow for everyoneRead-only

The editor shows “Draft differs from vn” while the draft has changes. Discard draft throws the draft away: “Discard the draft? The deployed version comes back.”

A draft of a deployed flow that nobody touched for 30 days is cleared by the daily cleanup. A flow that was never deployed keeps its draft.

The version list

Select Versions in the editor (“Versions of name“):

ColumnShows
Versionv1, v2 …; the running one is marked deployed
DeployedWhen
ByThe person, or System / Template setup for automatic deploys
NoteThe deploy note, or a generated one such as “Rolled back to version 3”
ContentA short fingerprint of the flow’s content

Compare with now shows what going to that version would change: blocks added, removed and changed, and wires connected and disconnected, with Show on the canvas.

Roll back

  1. In Versions, open the row’s actions and select Roll back to this.
  2. Confirm: “This deploys vn again as a new version. A draft you have saved stays.”

A rollback is a deploy: it makes a new version with the old content, needs the same permissions and confirmations, and is audited. A version that no longer compiles (for example it uses a block that is no longer available) cannot be rolled back to: “That version no longer compiles here”.

How long versions are kept

Under Automation > Automation settings:

SettingDefaultRange
Keep unsaved drafts (days)307 to 3,650
Versions always kept per flow100100 to 10,000
Keep versions younger than (days)9090 to 3,650

An older version is removed only when it is outside both, and never the deployed, the newest or the newest approved version.

Test a flow

Test runs the saved draft once with a message you give. “Runs the saved draft once with your message. Nothing is written and nothing is sent.”

  1. Select Test (“Test this flow”).
  2. Run: The whole flow or Only one node (then pick the Node).
  3. Enter through: the trigger the message enters at.
  4. Fill the message: Message type, Originator type, Originator id and Payload (JSON). The form is filled with a sample of the block or of the message type, or with the newest real input recorded for the node.
  5. Optionally tick Start from the live state and context: a read-only copy of what the deployed flow holds now (counters, last values). Needs the debug permission.
  6. Select Run test.

The result lists every step (“n steps in m ms”), what each block received (In:) and sent (Sent on:), errors, and under It would: what action blocks would have done (the HTTP call, the mail, the command, the saved values). No data is stored, no message, call or command leaves the platform, and no live memory changes. Waits up to 10 minutes are simulated and end at once.

Tests are rate limited: “Too many tests. Try again in n seconds.”

Test from real messages

  • On a block’s Messages tab, Test with this input starts a test with a message that passed that block.
  • On an error in the Activity panel, Test with this input reruns the failing input.
  • The Script block has its own Test the script, which runs the code on the real sandbox. See The script block.

Watch a deployed flow

The Activity panel shows what the running flow does:

TabShows
DebugMessages that reach Debug blocks
RunsRecorded runs: every step with its input and output (see the recording level below)
TraceOne message followed step by step
ErrorsError counters per block and the newest errors
BusiestBlocks by messages, errors and time
DataThe flow’s and the organisation’s context values, and how full the stores are
BlockThe selected block’s figures
HelpThe selected block’s help

Record sets what is kept: Nothing (counters only), Runs that fail, or Every run, for 5 minutes (then it goes back). Trace the next message records the next message through a trigger in full; an armed trace lapses after 5 minutes. Run records are kept 24 hours. Message contents are shown only to people who may debug.

See Troubleshooting flows.

The audit trail

Every create, change, deploy, rollback, delete, restore, import, export, test and root change is written to the audit log. A flow’s Details has an Audit tab (Change, Who, When), and the editor’s events view lists the last 50 audit entries of the flow. See Audit log.

Delete and restore

  • Delete a flow from its row menu: “Delete name? It can be restored later.” A flow that something still uses (a root binding, another flow’s Run flow or Link out) cannot be deleted until that use is removed; Details > Used by lists them.
  • The Deleted (last 7 days) filter lists deleted flows with Restore. A restored flow is switched off (“Restored. It is switched off.”). After 7 days it cannot be restored.
  • Restoring counts against your plan’s flows and script blocks again.

Export and import

  • Export (row menu) downloads the flow as a JSON file. Secrets are never in the file. A draft that would not pass the deploy checks is left out.
  • Import (flow list) takes a file exported from Hermetry, or from a licensed router. Choose Import to the host, then for each flow that already exists: Replace it, Import as a copy or Skip it. The preview shows what replacing would change.
  • Imported flows arrive switched off and not approved. Enter the secrets of their connections again (“Secrets are never in a file. Enter them again after the import”).
  • Blocks that do not exist on the host arrive as placeholders that keep their wires but do nothing.
  • Undo last import is offered while the page is open; a flow deployed or edited since the import is left as it is.