Appearance
Troubleshooting Workflows
Last updated
Debugging approach
- Open the workflow's History and click the latest run. A red box shows the error; the Step Log shows which node types ran and which one has ✗.
- The Step Log shows a Log node's message and a short summary of other nodes' outputs, but not variable values on their own. Add a Log node such as
Value is {{yourVariable}}to see one. - Each History row and the run's Trigger: line show what started the run (Run now, Tag change, Schedule and so on).
Symptoms and fixes
| Symptom | Cause | Fix |
|---|---|---|
| Nothing happens when the tag changes | The workflow is Disabled (new workflows are) | Turn on the toolbar toggle so it reads Enabled |
| Nothing happens, workflow enabled | Changes not saved; the trigger has no Tag Path; the tag's device is offline; the value is inside the deadband | Save; pick the tag with the browse button; check the tag's live value on the Tags page |
| Run fails: No trigger node found in workflow | The workflow has no trigger node | Add a Manual or Called by Workflow trigger |
| Run fails: Workflow is empty | No nodes saved | Add nodes and Save |
| Clicking or dragging from the palette does nothing visible | New nodes appear at the same spot near the top-left, often under earlier ones | Click once, then drag the new node away |
| A wire from Value/Result into the next node doesn't pass the value | The source node didn't run earlier in the same path (a sibling branch, or not reached yet) | Wire from a node upstream on the same path, or use its Output variable and {{name}} |
| Nodes after Connected/Disconnected of Network Event don't run on Run Now | Run Now has no network state, so neither branch is taken | Test by making the Check URL reachable or unreachable |
| Branch 3 of a Fork never runs | Number of branches is 2 | Set it to 3 |
Email or tag shows a literal {{temp}} | No variable or trigger key with that name at that point in the run, or a dotted name | Check spelling and case; make sure the node that sets it runs first; avoid {{a.b}} |
| Email body arrives with quotes around it, or an Expression returns nothing | Text or code typed inside double quotes, the old JSON-box form, e.g. "return vars.x;" | Remove the outer double quotes |
| Expression error: … | A JavaScript error in the code | Fix the code; test with fixed values |
| Headers are not valid JSON / Headers must be a JSON object | Headers (JSON) isn't a JSON object (the box shows Not valid JSON) | Type an object such as {"X-Api-Key": "abc"} |
| Neither SMTP nor Resend API is configured | No SMTP host, and no relay credentials on this appliance | Configure SMTP Email |
| Relay timeout | No SMTP host, and the Scada.Ink relay could not be reached | Configure SMTP Email, or give the appliance internet access |
| SMTP timeout | Server unreachable or not answering, or the wrong port | Check host, port and firewall; try Send test email in Settings |
… rejected by SMTP server: <code> <reason> | The server refused the login, sender, recipient or message | Fix what the reason names; see Email (SMTP) Settings |
| Write access not enabled for device 7 | Set Tag to a device without write access | Turn on Tag Write Access for the device |
| Source tag 3:Line1/Count has no value to copy | The source tag has no value yet | Check the source device is connected |
| Write not enabled for MQTT device 4 / MQTT device 4 not found | MQTT device without write access, or not an MQTT device | Enable write, or pick the MQTT device |
| No column values to insert / …update | Write DB's Column values list is empty | Add a name and value for each column to write |
| Unknown column in table "…": … | A Column values name doesn't match the table | Copy the exact column name from the Data Tables page |
| Table not found: … | Table name doesn't match the Data Tables page | Copy the exact name |
| Invalid JSON: … | Decode JSON got text that isn't JSON | Check the source variable |
| TCP timeout / connect ECONNREFUSED | Host or port wrong, device not listening | Check address and port; test with the device's own tool |
| Maximum workflow nesting depth reached (5) | Workflows or scripts calling each other in a cycle | Break the cycle |
| Cannot call self recursively | Run Workflow points at its own workflow | Use a Loop, or a separate workflow |
| No script ID configured / No workflow ID configured / No ladder task configured | Picker left empty | Choose the target |
| Workflow execution limit reached (>1000 steps) | Almost always a wire looped back to an earlier node; occasionally a genuinely very large workflow | Find and remove the loop; if the workflow really is that large, split it into called workflows |
| Hundreds of runs a minute | Tag Value on a changing tag (level-based), or Tag Change on a noisy analog | Trigger on a one-shot bit; see How Workflows Run |
| A disabled workflow still runs | An editor or administrator used Run Now, in the editor or from a button | Expected — Run Now can test a disabled workflow |
| Workflow "…" is disabled | A schedule, script, pipeline, Run Workflow node or operator's button started a disabled workflow | Enable the workflow |
| Workflow "…" is already running | It was started again before its last run finished; the new run was skipped | Shorten the run, or trigger less often. See How Workflows Run |
| Jump To: no node is labeled "…" | No node's Node Label matches, or two nodes share it | Set a unique Node Label on the target |
| Shutdown trigger didn't finish its work | Shutdown runs get about 2 s before the service stops | Keep Shutdown workflows short |
| A run shows failed with Interrupted: the appliance restarted during this run | The service restarted while it was running | Run it again if it matters |
| Reformat Date/Time: "…" is not a date | The value isn't a date the node can read | Pass an ISO date or a Unix time |
| Retentive Timer reaches Done far too early | It measures time between runs, not time the condition was true | Use an RTO in ladder logic |
| Count Up (not retentive) never reaches the preset | The count resets every run | Tick Retentive (persist across runs) |