**Source URL:** https://limited.veevavault.dev/medical/vault-sdk/entry-points/workflow-bulk-action-event-handler

# Workflow Bulk Action Event Handler

`WorkflowBulkActionEventHandler` is an SDK entry point that receives the results of asynchronous bulk workflow actions. Developers implement it as a Java class, annotate it with `@WorkflowBulkActionEventHandlerInfo`, and deploy it to Vault.

The bulk participant methods on `WorkflowInstanceService` (`bulkRemoveParticipants`, `bulkReplaceParticipants`, `bulkRemoveParticipantIdentity`, and `bulkReplaceParticipantIdentity`) run asynchronously. Each call returns right away with a job ID and performs the actual work in a background job, so the results are not available when you make the call. This handler is how your custom code receives those results after the job finishes. Implement one when you want to act on the outcome of a bulk participant job, for example, to log the per workflow failures, start additional processing, or notify users.

Event handlers of this type are Vault-wide and have no object or document type scoping element, which lets the job initiator receive all of a job's results in one completion callback even when a single bulk job spans many objects.

```java
@WorkflowBulkActionEventHandlerInfo
public class BulkParticipantResults implements WorkflowBulkActionEventHandler {

    @Override
    public void onParticipantsUpdateComplete(WorkflowBulkParticipantEventCompletionContext context) {
        String jobId = context.getJobId();
        WorkflowBulkParticipantActionType actionType = context.getActionType(); // REMOVE_PARTICIPANTS or REPLACE_PARTICIPANTS

        for (WorkflowParticipantGroupResult groupResult : context.getGroupResults()) {
            String workflowId = groupResult.getWorkflowId();
            String groupName  = groupResult.getParticipantGroupName();
            // groupResult.getMemberResults() gives each member's outcome: ADDED, REMOVED, or SKIPPED
        }
    }
}
```

Learn more about the request, result, and context interfaces in the [Javadocs](https://repo.veevavault.com/javadoc/vault-sdk-api/26.2.3/docs/api/com/veeva/vault/sdk/api/workflow/package-summary.html). For help with launching these jobs, see [Workflow Services](/medical/vault-sdk/services/workflow-services).

---

**Previous:** [Message Processors](/medical/vault-sdk/entry-points/message-processor)  
**Next:** [Record Merges](/medical/vault-sdk/entry-points/record-merge)