flowable/flowable-engine · error · FlowableException

Error while sending signal for " + eventSubscription + ": no

Error message

Error while sending signal for " + eventSubscription + ": no activity associated with event subscription

What it means

Thrown by AbstractEventHandler.handleEvent when an event subscription (signal/message) points to an execution whose currentFlowElement is null. The engine cannot deliver the signal or payload because it doesn't know which BPMN activity the subscription is bound to - i.e. the execution's persisted activity state is inconsistent with the subscription.

Source

Thrown at modules/flowable-engine/src/main/java/org/flowable/engine/impl/event/AbstractEventHandler.java:36

import org.flowable.common.engine.impl.interceptor.CommandContext;
import org.flowable.engine.impl.persistence.entity.ExecutionEntity;
import org.flowable.engine.impl.util.CommandContextUtil;
import org.flowable.engine.impl.util.EventSubscriptionUtil;
import org.flowable.eventsubscription.service.impl.persistence.entity.EventSubscriptionEntity;

/**
 * @author Tijs Rademakers
 */
public abstract class AbstractEventHandler implements EventHandler {
    
    @Override
    public void handleEvent(EventSubscriptionEntity eventSubscription, Object payload, CommandContext commandContext) {
        String executionId = eventSubscription.getExecutionId();
        ExecutionEntity execution = CommandContextUtil.getExecutionEntityManager(commandContext).findById(executionId);
        FlowNode currentFlowElement = (FlowNode) execution.getCurrentFlowElement();

        if (currentFlowElement == null) {
            throw new FlowableException("Error while sending signal for " + eventSubscription + ": no activity associated with event subscription");
        }

        EventSubscriptionUtil.processPayloadMap(payload, execution, currentFlowElement, commandContext);

        CommandContextUtil.getAgenda().planTriggerExecutionOperation(execution);
    }

}

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Check whether the execution already consumed the event; don't signal twice (guard with a process variable or idempotent correlation).
  2. Verify runtime data consistency: inspect ACT_RU_EVENT_SUBSCR and ACT_RU_EXECUTION for the executionId; if stale, delete the process instance (deleteProcessInstance) and restart.
  3. Restore from a consistent backup or re-deploy the process definition if runtime tables are corrupted.
  4. If reproducible after an upgrade, check for known Flowable upgrade bugs and run the appropriate upgrade scripts.
Defensive patterns

Strategy: try-catch

Validate before calling

EventSubscription sub = runtimeService.createEventSubscriptionQuery().executionId(executionId).singleResult();
if (sub == null) {
    throw new IllegalStateException("no active subscription to signal");
}

Try / catch

try {
    runtimeService.signal(executionId, payload);
} catch (FlowableException e) {
    if (e.getMessage().contains("no activity associated with event subscription")) {
        // treat as already-delivered / stale subscription; log and skip
    }
}

Prevention

When it happens

Trigger: runtimeService.signal(eventSubscriptionId/eventName/payload) or message correlation hitting an EventSubscriptionEntity whose execution has no current flow element - e.g. execution already moved past the boundary/catch event, corrupted or manually-modified ACT_RU_EXECUTION rows, or signaling a subscription for an execution in a state where the flow element is not (re)loaded.

Common situations: Double signal delivery racing with execution continuing; DB state tampered with or restored from inconsistent backups; engine version upgrade leaving stale runtime rows; signaling a process instance that already passed the catch event.

Understand the failure class

Background: "Invalid state transition" errors: "status must be X, actually Y", "already rejected/charging/uninstalled", "cannot ... while running" — what they mean when a library rejects your call — this error's family across 31 libraries.

Related errors


AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11). Data as JSON: /api/errors/0b1da941602c7020. Report an issue: GitHub.