Automation Rules Blueprint
Event-driven automation engine that triggers actions based on record lifecycle events, field changes, time-based schedules, incoming messages, and external webhooks with condition filtering.
| Feature | automation-rules |
| Category | Workflow |
| Version | 1.0.0 |
| Tags | automation, triggers, event-driven, scheduled-actions, webhooks, workflow-engine |
| YAML Source | View on GitHub |
| JSON API | automation-rules.json |
Actors
| ID | Name | Type | Description |
|---|---|---|---|
automation_admin | Automation Admin | human | Creates and manages automation rules, conditions, and actions |
system | Automation Engine | system | Monitors events, evaluates conditions, executes actions |
Fields
| Name | Type | Required | Label | Description |
|---|---|---|---|---|
rule_name | text | Yes | Rule Name | |
target_model | text | Yes | Target Record Type | |
trigger_type | select | Yes | Trigger Type | |
trigger_fields | json | No | Watched Fields | |
trigger_field_value | text | No | Trigger Value | |
filter_condition | json | No | Filter Condition | |
pre_filter_condition | json | No | Before-Update Filter | |
time_delay | number | No | Time Delay | |
time_delay_unit | select | No | Delay Unit | |
time_date_field | text | No | Date Field | |
actions | json | Yes | Actions | |
action_type | select | Yes | Action Type | |
webhook_uuid | text | No | Webhook Endpoint ID | |
rule_active | boolean | Yes | Active |
Rules
- message_triggers_require_mail_model:
- description: Message-received and message-sent triggers are only valid on record types that support messaging/threading.
- on_change_only_code_actions:
- description: The on_change trigger (UI field change) can only execute code-type actions, not emails, SMS, or record creation.
- trigger_field_tracking:
- description: When specific trigger fields are set, the rule only fires if at least one of those fields actually changed in the update operation.
- before_after_domain_transition:
- description: Pre-filter and post-filter conditions together define a state transition: record must have matched the before-filter and must now match the after-filter for the rule to fire.
- webhook_uuid_immutable:
- description: Webhook endpoint identifiers cannot be changed after creation to ensure external integrations remain stable.
- time_trigger_cron_scheduling:
- description: Time-based rules are evaluated via periodic scheduled jobs. The delay is calculated from the specified date field on each record.
- no_recursive_automation:
- description: Actions executed by an automation rule do not trigger other automation rules to prevent infinite loops (guard flag set).
Outcomes
Rule_triggered_on_create (Priority: 1) — Error: AUTOMATION_CODE_EXECUTION_ERROR
Given:
- a new record is created matching the target model
- trigger type is on_create or on_create_or_write
- the new record matches the filter condition (if set)
Then:
- call_service target:
action_executor— Execute configured actions (email, field update, code, etc.) - emit_event event:
automation.rule.fired
Result: Actions executed automatically on the new record
Rule_triggered_on_field_change (Priority: 2)
Given:
- an existing record is updated
- one of the watched trigger fields changed
- record matched the before-filter BEFORE the change
- record matches the after-filter AFTER the change
Then:
- call_service target:
action_executor— Execute configured actions on the changed record - emit_event event:
automation.rule.fired
Result: Actions executed based on the specific field transition
Rule_triggered_on_stage_set (Priority: 3)
Given:
- record’s stage/state/priority/tag/user field is set to the trigger value
Then:
- call_service target:
action_executor— Execute configured actions
Result: Actions fire when the specific value is reached
Rule_triggered_on_time (Priority: 4)
Given:
- the scheduled job runs
- records exist where the date field + delay has passed
- those records match the filter condition
Then:
- call_service target:
action_executor— Execute actions on all matching records in batch - emit_event event:
automation.rule.scheduled_batch
Result: Time-delayed actions execute on all qualifying records
Rule_triggered_by_webhook (Priority: 5)
Given:
- external system sends HTTP request to the webhook endpoint
- webhook UUID matches an active rule
Then:
-
call_service target:
action_executor— Parse webhook payload and execute code action with payload available as context variable -
emit_event event:
automation.webhook.received
Result: External event triggers internal automation
Rule_triggered_on_message (Priority: 6) — Error: AUTOMATION_MESSAGE_TRIGGER_INVALID
Given:
- a message is received on (or sent from) a record
- the record type supports messaging
- trigger type is on_message_received or on_message_sent
Then:
- call_service target:
action_executor— Execute actions with message content available in context
Result: Incoming/outgoing message triggers automated response
Action_sends_email (Priority: 7)
Given:
- rule fires and action type is send_email
Then:
- notify — Email sent using configured template with record data merged
Result: Automated email sent to the record’s contacts
Action_updates_field (Priority: 8)
Given:
- rule fires and action type is set_field
Then:
- set_field target:
configured_field— Field value set to configured static or computed value
Result: Record field updated automatically
Rule_condition_not_met (Priority: 10)
Given:
- trigger event occurs but record does not match filter conditions
Result: Rule skipped, no actions executed
Errors
| Code | Status | Message | Retry |
|---|---|---|---|
AUTOMATION_INVALID_MODEL | 400 | The target record type does not exist or is not accessible. | No |
AUTOMATION_MESSAGE_TRIGGER_INVALID | 400 | Message triggers are only available for record types that support messaging. | No |
AUTOMATION_CODE_EXECUTION_ERROR | 500 | An error occurred while executing the automation code action. | No |
AUTOMATION_WEBHOOK_NOT_FOUND | 404 | No active automation rule found for this webhook endpoint. | No |
Events
| Event | Description | Payload |
|---|---|---|
automation.rule.fired | An automation rule was triggered and its actions executed | rule_id, trigger_type, record_id, actions_executed |
automation.rule.scheduled_batch | Time-based rule executed on a batch of records | rule_id, record_count |
automation.webhook.received | External webhook triggered an automation rule | rule_id, webhook_uuid, source_ip |
Related Blueprints
| Feature | Relationship | Reason |
|---|---|---|
| quotation-order-management | optional | Automate actions on sales orders (e.g., auto-assign team on creation) |
| odoo-expense-approval | optional | Automate expense workflow steps (e.g., auto-approve under threshold) |
AGI Readiness
Goals
Reliable Automation
Execute automation rules reliably with predictable outcomes and minimal false triggers
Success Metrics:
| Metric | Target | Measurement |
|---|---|---|
| rule_execution_success_rate | >= 99% | Successful executions divided by total trigger events |
| false_trigger_rate | < 0.1% | Rules that fire when conditions are not actually met |
| execution_latency | < 2s for synchronous actions | Time from trigger event to action completion |
Constraints:
- performance (non-negotiable): Rule evaluation must not block the main application thread
- security (non-negotiable): Rules cannot execute actions beyond the creator’s permission scope
Autonomy
Level: semi_autonomous
Human Checkpoints:
- before disabling production rules with active triggers
- before enabling rules that modify financial records
- before bulk-executing rules across more than 1000 records
Escalation Triggers:
rule_failure_count > 10execution_queue_depth > 500
Safety
| Action | Permission | Cooldown | Max Auto |
|---|---|---|---|
| execute_rule | autonomous | 5s | - |
| create_rule | supervised | - | - |
| delete_rule | human_required | - | - |
| enable_rule | supervised | - | - |
| disable_rule | supervised | - | - |
| bulk_execute | human_required | - | - |
Learning
Signals:
| Metric | Window | Baseline |
|---|---|---|
| rule_execution_time | 1h | 500ms |
| rule_failure_rate | 24h | 1% |
| trigger_volume | 1h | 100 |
Adaptations:
| When | Experiment | Rollback If | Approval |
|---|---|---|---|
rule_failure_rate > 5 | disable rules with highest failure rate and notify admin | dependent_workflow_failures > 0 | Required |
trigger_volume > 1000 | batch trigger evaluations in groups of 50 | execution_latency > 5000 | Auto |
rule_execution_time > 2000 | cache frequently evaluated conditions for 60 seconds | false_trigger_rate > 1 | Auto |