---
title: "Rule Actions Reference"
slug: rule-actions-reference
section: Rules & Compliance
status: stable
description: "Complete reference for all rule action types, their triggers, and how they surface to applicants and staff"
last-updated: 2026-10-07
---

# Rule Actions Reference

Complete reference for all rule action types, their triggers, and how they surface to applicants and staff

## Overview

The Globus Rules Engine Phase 3 uses a declarative side-effect model. When a rule evaluates, it produces a RuleDecision envelope containing requiredActions. The actionOrchestrator.ts processes this envelope and dispatches actions to pluggable handlers. For the architecture that produces these decisions, see Rules Engine Architecture .

Each dispatched action is recorded in `rule_action_dispatches`, unique on `idempotency_key` and `action_index` (the action's position in `requiredActions`), so repeating a decision with the same idempotency key does not dispatch its actions twice. Columns: `action_type`, `evaluation_record_id` (deleted with its evaluation record), `status` (`open`, `succeeded`, `failed` or `skipped`; default `succeeded`), `payload`, `result` (for example a created queue item, case or notification id), `error` and `dispatched_at`.

## Action Types

*Status: the table below describes the Phase 3 orchestrator vocabulary, and parts of it are out of date. `actionOrchestrator.ts` knows notify, queue_review, hold_documents, block_phase, open_exception, lock_parameter and sevis_ds2019_amendment, where block_phase and lock_parameter are informational only. Rule authoring uses the closed set BLOCK, WARNING, REVIEW_QUEUE, AUTO_APPROVE, AUTO_REJECT, REQUIRE_DOCUMENT, CREATE_TASK and APPLY_TAG (`shared/ruleOutcome.ts`), dispatched by `ruleActionDispatcher.ts`. `warn` and `auto_request` are not action types; the closest equivalents are WARNING and REQUIRE_DOCUMENT.*

An action type outside the closed authoring set is rejected with 422 `INVALID_RULE_ACTION` on the rule action create route (`POST /api/rules-engine/versions/:id/actions`); the message lists BLOCK, WARNING, REVIEW_QUEUE, AUTO_APPROVE, AUTO_REJECT, REQUIRE_DOCUMENT, CREATE_TASK and APPLY_TAG. An unknown severity value is rejected with 422 `INVALID_RULE_SEVERITY`; the allowed values are `blocking`, `warning`, `review` and `informational`. Both errors carry `details.path`, `details.received` and `details.allowed`.

| Action Type | Trigger Condition | System Function |
| --- | --- | --- |
| block_phase | Rule evaluates to fail without a permitted override | Prevents transition to the next lifecycle phase. Enforced synchronously by lifecyclePhaseGate.ts |
| warn | Rule evaluates to fail_open_with_warning | Flags an issue but allows the phase transition to proceed |
| auto_reject | A critical eligibility rule fails (e.g., applicant under absolute minimum age) | Automatically terminates the application and moves it to a terminal state |
| queue_review | Rule evaluates to hold_for_review or carries a permitted_override_fail marker | Pushes the application into compliance_review_queue_items for manual intervention |
| auto_request | Rule detects missing or expired information (e.g., passport expiring within 6 months) | Automatically generates a request for information or document upload |
| hold_documents | Rule determines document processing should pause (e.g., awaiting payment clearance) | Sets a documents_on_hold flag downstream in the document service |
| open_exception | A complex compliance violation requiring formal investigation | Opens a formal case in compliance_cases with SLA timers |
| lock_parameter | A milestone is reached requiring data immutability (e.g., SEVIS pool entry) | Instructs downstream services to lock specific sections or fields. See Section Locking |
| notify | Any rule evaluation can append a notify action based on configuration | Emits an event to the notification service for email, SMS, or portal alert |

## Visibility and User Experience

| Action Type | Applicant Visibility | Staff Visibility |
| --- | --- | --- |
| block_phase | "Blocked" or "Action Required" status with the applicantFailureMessage | Readiness state shown as blocked with internalFailureMessage |
| warn | Typically invisible unless configured to show a non-blocking alert | Warning banner on applicant profile; readiness state unchanged |
| auto_reject | Application status changes to "Rejected". Automated email notification sent. | Application moves to terminal state; reason logged in audit history |
| queue_review | Application shows as "Under Review". Progression temporarily paused. | Application appears in Compliance Review Queue for manual intervention |
| auto_request | Email and portal notification prompting specific information upload | Request logged in applicant's communication history |
| hold_documents | Upload sections may be locked or documents show as "Pending Review" indefinitely | Document review queues indicate hold status |
| open_exception | "Under Investigation" status depending on severity | Case appears in Compliance Cases dashboard with SLA timers |
| lock_parameter | Target sections become read-only with padlock indicator | Fields locked in Command Center; unlock requires journey.lock.unlock permission |
| notify | Email, SMS, or portal alert based on payload | Notification logged in applicant communication history |
