{"record":{"id":"ca77c8309f340824","repo":"nocobase/nocobase","slug":"workflow-on-your-action-failed-please-contact-the","errorCode":null,"errorMessage":"Workflow on your action failed, please contact the administrator","messagePattern":"Workflow on your action failed, please contact the administrator","errorType":"http","errorClass":null,"httpStatus":500,"severity":"error","filePath":"packages/plugins/@nocobase/plugin-workflow-request-interceptor/src/server/RequestInterceptionTrigger.ts","lineNumber":203,"sourceCode":"        context.logger.debug('[Workflow pre-action]: sync workflow finished successfully', {\n          ...syncLogMeta,\n          ...getWorkflowExecutionLogMeta(workflow, processor),\n        });\n        continue;\n      }\n      // NOTE: intercept\n      if (processor.execution.status < EXECUTION_STATUS.STARTED) {\n        if (lastNode?.type !== 'end') {\n          context.logger.error('[Workflow pre-action]: sync workflow failed', {\n            ...syncLogMeta,\n            ...getWorkflowExecutionLogMeta(workflow, processor),\n          });\n          return context.throw(500, 'Workflow on your action failed, please contact the administrator');\n        }\n\n        context.logger.warn('[Workflow pre-action]: sync workflow intercepted request on end node', {\n          ...syncLogMeta,\n          ...getWorkflowExecutionLogMeta(workflow, processor),\n        });\n        const err = new RequestInterceptionError('Request is intercepted by workflow');\n        err.status = 400;\n        err.messages = context.state.messages;\n        return context.throw(err.status, err);\n      }\n      // NOTE: should not be pending\n      context.logger.error('[Workflow pre-action]: sync workflow is still pending after trigger', {\n        ...syncLogMeta,\n        ...getWorkflowExecutionLogMeta(workflow, processor),\n      });\n      return context.throw(500, 'Workflow on your action hangs, please contact the administrator');\n    }\n\n    await next();\n  };\n\n  constructor(workflow) {","sourceCodeStart":185,"sourceCodeEnd":221,"githubUrl":"https://github.com/nocobase/nocobase/blob/fa42722fefe44265490dff2c27d79e2882bce4fa/packages/plugins/@nocobase/plugin-workflow-request-interceptor/src/server/RequestInterceptionTrigger.ts#L185-L221","documentation":"When a pre-action (sync) workflow executing on an HTTP request fails internally, the RequestInterceptionTrigger aborts the request with a 500 and this user-facing message, telling the caller the workflow behind their action errored and administrator attention is required.","triggerScenarios":"A bound 'pre-action' sync workflow triggered by the request throws an unexpected error during execution; the trigger's error path calls context.throw(500, 'Workflow on your action failed, please contact the administrator').","commonSituations":"Workflow node misconfiguration (bad variable references, invalid request bindings); database or external API failures inside workflow nodes; workflow execution timeout; NocoBase version change breaking a node handler.","solutions":["Check server logs for the underlying workflow execution error and its node","Open the bound workflow in the workflow UI and fix the failing node configuration","Test the workflow manually with sample input to reproduce the failure","Roll back recent workflow changes or plugin upgrades that introduced the failure"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// before firing the action, verify the bound pre-action workflow is valid and enabled\nconst wf = await workflowRepo.findOne({ filter: { type: 'request-interceptor', enabled: true } });\nif (!wf) throw new Error('no interceptor workflow bound');","typeGuard":null,"tryCatchPattern":"try {\n  await request(action, payload);\n} catch (e) {\n  if (e.status === 500 && /Workflow on your action failed/.test(e.message)) {\n    // inspect server/workflow execution logs; surface admin guidance to user\n    notifyAdmin({ workflowKey: e.workflowKey, cause: e.cause });\n  }\n}","preventionTips":["Test pre-action workflows with realistic payloads before enabling them","Watch workflow execution logs for node-level failures","Avoid variable references that may be undefined at runtime","Roll back workflow/plugin changes when 500s start appearing"],"tags":["workflow","http-500","request-interception","server-error"],"backgroundTag":"workflow-execution-failed","analyzedSha":"fa42722fefe44265490dff2c27d79e2882bce4fa","analyzedAt":"2026-09-01T00:54:31.202Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T05:18:18.240Z"}