conductor-oss/conductor · error · UnsupportedOperationException
Action not supported %s for event %s
Error message
Action not supported %s for event %s
What it means
SimpleActionProcessor.execute switches on action.getAction() and throws UnsupportedOperationException for any value that is not start_workflow, complete_task, fail_task, or start_agent. It signals a malformed or version-mismatched EventHandler.Action configuration: the action field on disk does not match any case the running build knows about.
Source
Thrown at core/src/main/java/com/netflix/conductor/core/events/SimpleActionProcessor.java:100
jsonObject,
action.getComplete_task(),
TaskModel.Status.COMPLETED,
event,
messageId);
case fail_task:
return completeTask(
action,
jsonObject,
action.getFail_task(),
TaskModel.Status.FAILED,
event,
messageId);
case start_agent:
return startAgent(action, jsonObject, event, messageId);
default:
break;
}
throw new UnsupportedOperationException(
"Action not supported " + action.getAction() + " for event " + event);
}
private Map<String, Object> completeTask(
Action action,
Object payload,
TaskDetails taskDetails,
TaskModel.Status status,
String event,
String messageId) {
Map<String, Object> input = new HashMap<>();
input.put("workflowId", taskDetails.getWorkflowId());
input.put("taskId", taskDetails.getTaskId());
input.put("taskRefName", taskDetails.getTaskRefName());
input.put("reasonForIncompletion", taskDetails.getReasonForIncompletion());
input.putAll(taskDetails.getOutput());
View on GitHub (pinned to cf7c3e4a8a)
Solutions
- Inspect the stored EventHandler definition for the event named in the message and check the `action` field.
- Set the action to one of the supported values: start_workflow, complete_task, fail_task, start_agent.
- After upgrading Conductor, re-register event handlers using the current schema/API.
- If you need a custom action, subclass/extend SimpleActionProcessor rather than sending an unknown enum.
Example fix
// before (event handler JSON)
{ "action": "start_wf" }
// after
{ "action": "start_workflow" } Defensive patterns
Strategy: validation
Validate before calling
Set<Action.ActionType> supported = EnumSet.of(
Action.ActionType.start_workflow,
Action.ActionType.complete_task,
Action.ActionType.fail_task,
Action.ActionType.start_agent);
if (!supported.contains(action.getAction())) {
throw new IllegalArgumentException("Unsupported action: " + action.getAction());
} Try / catch
try {
actionProcessor.execute(action, payload, event, messageId);
} catch (UnsupportedOperationException e) {
LOGGER.error("Rejected event handler with unsupported action: {}", action.getAction());
// do not re-queue; fix the definition
} Prevention
- Validate event-handler definitions against the supported action enum before persisting.
- Re-register event handlers from the current SDK after a Conductor upgrade.
- Reject unknown action values at the API/registration boundary.
When it happens
Trigger: An EventHandler is registered with an Action whose `action` enum is null or an unrecognized value (e.g. a new action type introduced in a newer Conductor version, or a typo/corruption in the stored JSON).
Common situations: Upgrading Conductor and reading an event-handler definition written by a different version; manually editing event-handler JSON and misspelling the action; a client SDK serializes an action constant the server does not recognize.
Related errors
- env-backed environment variables are read-only
- environment variables are disabled
- There is no queue for handling %s status
- No tasks found to be executed
- Skill registry is not available
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/0a2994afba2e5a62.
Report an issue: GitHub.