Troubleshooting Flows
Diagnose and resolve Celigo flow failures -- total failures, partial errors, stuck jobs, empty runs, and performance issues. Use when a flow is failing, producing errors, returning no data, or running slowly.
- Skill ID
- celigo/ai/troubleshooting-flows
- Publisher
- celigo
- Repository
- ai
- Installs
- 0
- Files
- 1
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
celigo/ai/troubleshooting-flowsInstalls these files- SKILL.md
What this skill tells the agent
<!-- TIER:1 -->
Troubleshooting Flows
A flow is broken when it fails to move data correctly. This skill covers systematic diagnosis: identifying the problem type, isolating the failing step, inspecting errors, and resolving them.
Troubleshooting concerns:
- Job status -- understanding what
completed,failed,canceled, andretryingmean for the flow - Error analysis -- grouping errors by pattern to find root causes instead of reading them one-by-one
- Request/response inspection -- seeing exactly what was sent and returned at each step
- Execution logs -- record-level tracing through every stage of the pipeline
- Retry and resolution -- fixing error data and retrying vs bulk resolving
- Delta/state issues --
lastExportDateTimedrift, stuck deltas, re-processing windows
Problem Categories
Total Failure
Job status is failed with 0 successful records. The entire run collapsed before processing any data. Typically numPagesGenerated: 0 (export-level failure) or pages generated but numPagesProcessed: 0 (import-level failure on the first page).
Common causes: connection failure (credentials expired, endpoint down), export query error (invalid SQL, bad saved search ID), missing/deleted resource, permission denied.
Partial Failure
Job status is completed but numError > 0 alongside successful records. Some records failed while others processed normally. Real-world data shows wide variance -- from 2 errors in 8000 successes to 500+ errors in 8000 successes.
Common causes: validation errors on the destination (required fields missing, type mismatches), duplicate key violations, record-level lookup failures, rate limiting on specific batches, data-dependent issues (specific records have bad data).
Empty Run
Job completes successfully with 0 errors AND 0 records processed.
Common causes: wrong resourcePath on the export (extracts from wrong JSON path), delta export with no changes since last run (legitimate), output filter too restrictive (all records filtered out), source query returns no results, webhook export with no inbound events.
Stuck or Long-Running
Job stays in running or retrying status longer than expected.
Common causes: large dataset with no pagination limits, destination system slow to respond, script hook with long-running logic, on-premise agent connectivity issues, rate limiting causing backoff.
Intermittent Failures
Flow sometimes succeeds and sometimes fails with the same configuration.
Common causes: token/session expiry mid-run (long-running flows), rate limiting (varies with concurrent flows), transient network errors, source system maintenance windows.
Error Diagnosis Framework
Classification
When an error occurs, classify it into one of three categories to determine the right action:
| Category | HTTP status codes | Meaning | Action |
|---|---|---|---|
| Needs investigation | 400, 401, 403, 404, 405, 409, 422 | Missing info, wrong IDs, permission denied, validation errors | Stop and investigate -- check resource config, connection status, permissions |
| Transient | 408, 429, 500, 502, 503, 504 | Timeouts, rate limits, server errors | Retry once. If it fails again, escalate -- the external system may be down |
| Configuration error | varies | Preconditions not met but fixable | Follow the error message guidance to fix the config, then retry |
A 5xx error not in the transient list (e.g., 501) is still likely transient. A 4xx error not in the investigation list warrants manual review.
Root Cause: Configuration vs Data
Every flow error has one of two root causes:
- Static configuration -- a hardcoded value in the step config is wrong (mapping expression, filter rule, hardcoded field, URI, query, SQL statement). Fix: change the resource configuration via
celigo <type> set - Dynamic data -- the upstream source sent unexpected data (missing required field, wrong type, null where a value is expected, unexpected array/object shape). Fix: add input filtering or validation upstream, or fix the source system
To distinguish: check if the error reproduces with different input records. If the same error occurs for every record, it's configuration. If only some records fail, it's data.
# Check if all records fail (configuration) or only some (data)
celigo flows error-summary <flowId> # Compare error count vs total records
celigo flows errors <flowId> <stepId> # Sample specific errors to compareWhich Step Failed?
Error location determines which resource and skill to investigate:
| Error location | Resource to check | Skill |
|---|---|---|
| Export / page generator | Export config (connection, query, resourcePath) | configuring-exports |
| Import / page processor | Import config (mapping, destination fields, operation) | configuring-imports |
| Script hook | Script code (preSavePage, preMap, postMap, postSubmit) | writing-scripts |
| Mapping | Mapping expression (field paths, lookups, hardcoded values) | writing-mappings |
| Filter | Filter expression (s-expression syntax, field references) | configuring-filters |
| Connection | Connection config (auth, URL, credentials) | configuring-connections |
Quick Reference
Symptom --> First Command
| Symptom | Run first | Then |
|---|---|---|
| Flow totally failed | celigo jobs list --flow <flowId> --limit 1 | Check numPagesGenerated -- if 0, export failed; check connection and query |
| Partial errors | celigo flows error-summary <flowId> | celigo flows error-analysis <flowId> <stepId> to find root cause pattern |
| Empty run (0 records) | celigo jobs list --flow <flowId> --limit 1 | Check export config (resourcePath, delta state, output filter) |
| Stuck / long-running | celigo jobs current --flow <flowId> | Check job status; if retrying, inspect rate limiting or connection issues |
| Intermittent failures | celigo jobs run-stats --flow <flowId> | Compare failing vs passing runs; check token expiry and rate limits |
| Silent logic bug (no errors, wrong output) | celigo flows test-run <flowId> --export <genId> | If test-run can't reach it, enable execution logging (§6) and run for real |
| Production incident (real traffic matters) | celigo flows enable-execution-logs <flowId> then run | Read per-record I/O with query-execution-logs / execution-log-detail; the failing stage names the problem |
Key Diagnostic Commands
# Job status
celigo jobs list --flow <flowId> --limit 1 # Most recent job
celigo jobs current --flow <flowId> # Currently running job
celigo jobs diagnostics <jobId> # Full diagnostic bundle
# Error investigation
celigo flows error-summary <flowId> # Per-step error counts
celigo flows error-analysis <flowId> <id> # Group errors by pattern
celigo flows errors <flowId> <id> # List individual errors (each has an errorId)
celigo flows error <flowId> <id> <errorId> --request-detail # Raw HTTP request/response for one error
# Safe iteration first
celigo flows test-run <flowId> --export <genId> # safe, fast, try this first
# End-to-end execution logging (real run, full per-record I/O)
celigo flows enable-execution-logs <flowId> # arm debug logging, then run the flow
celigo flows execution-logs <flowId> <jobId> # list captured per-record logs
celigo flows debug-requests <flowId> <id> # per-bubble HTTP request/responseRelated Skills
- building-flows > Quick Reference -- flow structure, topologies, and configuration
- configuring-exports > Quick Reference -- export configuration and adaptor types
- configuring-imports > Quick Reference -- import configuration and adaptor types
More from celigo
Use this skill in a project
Open any RiverX project, search the Skills panel for celigo/ai/troubleshooting-flows, and install it in one click.
