Skip to content

Trigger Name: OrderItemSummaryTrigger

Last Updated: 2025-10-22 (Created: 2025-01-22) Source Code: https://github.com/AANP-IT/I2C.Salesforce.Metadata/blob/STAGING/force-app/main/default/triggers/OrderItemSummaryTrigger.trigger

API Name: OrderItemSummaryTrigger Object: OrderItemSummaryChangeEvent (Change Data Capture Event) Pattern: Framework Pattern (TriggerHandler)

Business Purpose

This trigger monitors OrderItemSummary change events to automatically process order cancellations. Since OrderItemSummary does not support direct triggers, this implementation uses Salesforce Change Data Capture to detect status changes and route them to the CanceledOrderLogic class for processing. It handles the business logic for canceling order-related data when order items are canceled.

Trigger Events

This trigger fires on the following events: - ☐ Before Insert - ☐ Before Update - ☐ Before Delete - ☑️ After Insert (Change Events only support after insert) - ☐ After Update - ☐ After Delete - ☐ After Undelete

Trigger Handler

Handler Class: OrderItemSummaryTriggerHandler.cls Pattern: Framework Pattern - Extends TriggerHandler base class Entry Point: Handler instantiation with execute() method

trigger OrderItemSummaryTrigger on OrderItemSummaryChangeEvent (after insert){
    new OrderItemSummaryTriggerHandler().execute();
}

Process Flow by Event

After Insert

Purpose: Process OrderItemSummary change events to handle canceled order logic

Business Logic: 1. Change event captured when OrderItemSummary records are modified 2. Handler routes to CanceledOrderLogic.run() method 3. CanceledOrderLogic processes cancellation business rules 4. Likely updates related records (Order, Account, Subscription, etc.)

Methods Called: - OrderItemSummaryTriggerHandler.afterInsert(Map<Id, SObject> newRecordsMap) (inherited from TriggerHandler) - CanceledOrderLogic.run(Map<Id, OrderItemSummaryChangeEvent> newRecordsMap)

Related Records Processed: - OrderItemSummary (via change events) - Order records (parent relationship) - Related business objects based on cancellation logic


Key Business Rules

Validation Rules

  • Change events processed for OrderItemSummary modifications
  • Cancellation logic applies business-specific rules

Field Updates

  • Depends on CanceledOrderLogic implementation
  • Likely updates order status, quantities, amounts
  • Order records may be updated
  • Downstream impacts based on cancellation logic (inventory, accounting, etc.)

Bulkification & Governor Limits

Bulkified: Yes (Change Data Capture) Max Records Handled: Change events can batch multiple records SOQL Queries: Depends on CanceledOrderLogic implementation DML Operations: Depends on CanceledOrderLogic implementation

Bulkification Strategy

  • Change Data Capture inherently supports batching
  • All change events in batch passed to CanceledOrderLogic
  • Processing logic handles multiple events efficiently

Governor Limit Considerations

  • Change Event Limits: Subject to CDC limits (varies by edition)
  • SOQL: Queries in CanceledOrderLogic class
  • DML: DML in CanceledOrderLogic class
  • Async Processing: May use async methods for complex processing

Recursion Prevention

Strategy: Change Data Capture events cannot trigger themselves

Implementation: - CDC events fire after committed transactions - Events do not re-trigger on subsequent DML - Natural protection from recursion due to CDC architecture

Scenarios: - No recursion risk with CDC events - Event processing is one-way (change -> event -> processing)

Execution Order & Dependencies

Order of Execution Impact

  • CDC events fire after the modifying transaction commits
  • Processing happens asynchronously after event delivery
  • Event triggers run in separate transaction from source transaction

Dependent Triggers

  • OrderTrigger: May fire during OrderItemSummary modifications
  • Risk: Minimal - CDC processing is decoupled

Dependent Processes

  • CanceledOrderLogic: Core cancellation processing
  • Order management automation
  • Inventory management integration

Error Handling

Strategy: CDC error handling with built-in retry

User Experience: - Success: Change event processed, cancellation logic executed - Event Delivery Failure: Salesforce automatically retries - Processing Error: Error in CanceledOrderLogic, event acknowledged

Logging: - CDC provides built-in event monitoring - Application logging in CanceledOrderLogic class - Event Monitor available in Setup

Rollback Behavior: - Source transaction separate from processing transaction - Processing errors don't rollback source changes - Failed processing should be logged for manual review

Dependencies

Apex Classes

  • OrderItemSummaryTriggerHandler: Handler extending TriggerHandler
  • TriggerHandler: Base framework class
  • CanceledOrderLogic: Cancellation business logic

Salesforce Objects

  • OrderItemSummaryChangeEvent: CDC event object
  • OrderItemSummary: Standard Commerce object
  • Order: Standard object (parent)

Custom Settings/Metadata

  • Change Data Capture entity settings (Salesforce managed)

External Systems

  • None directly (may be downstream in CanceledOrderLogic)

Testing

Test Class: Not specified in trigger comments Coverage: Unknown

Test Scenarios: - Single OrderItemSummary change - Bulk OrderItemSummary changes - Various field changes triggering events - Cancellation logic execution - CDC event delivery testing - Test with OrderItemSummaryChangeEvent in test context

Performance Considerations

Average Execution Time: Fast (trigger routes to handler) Max Records Processed: Depends on CDC batching Async Processing: Yes - CDC events are inherently async

Optimization Opportunities: - Already optimized with CDC architecture - Ensure CanceledOrderLogic handles bulk efficiently - Monitor CDC event delivery metrics - Consider selective field tracking in CDC to reduce event volume

Changes & History

  • 2025-01-22: Created by Ryan O'Sullivan
  • Pattern: Modern CDC architecture with TriggerHandler framework
  • Rationale: OrderItemSummary doesn't support direct triggers, CDC required

Pre-Go-Live Concerns

CRITICAL - Fix Before Go-Live

  • No Test Class Specified: Trigger comment indicates no test class specified - must verify test coverage exists
  • CDC Configuration: Verify OrderItemSummary CDC is properly enabled in production
  • Event Fields: Confirm all necessary fields are selected for CDC tracking

HIGH - Address Soon After Go-Live

  • No Error Handling in Trigger: Add try-catch wrapper around handler execution
  • Event Monitoring: Implement monitoring for CDC event processing success/failure
  • CanceledOrderLogic Documentation: Ensure cancellation logic is well-documented
  • Event Replay Strategy: Document CDC event replay procedures

MEDIUM - Future Enhancement

  • Event Field Optimization: Only track fields that trigger cancellation logic
  • Batch Processing: Consider batching if high event volumes
  • Event Archiving: Strategy for long-term CDC event audit
  • Performance Monitoring: Track processing latency

LOW - Monitor

  • CDC Limits: Monitor org-wide CDC limits and allocations
  • Event Delivery Latency: Track time between change and event processing
  • Event Volume: Monitor event volume trends

Maintenance Notes

Complexity: Low-Medium Recommended Review Schedule: Quarterly

Key Maintainer Notes: - This trigger uses CDC for OrderItemSummary which doesn't support direct triggers - CDC events are asynchronous - changes committed before event fires - Testing CDC requires special test methods for change events - CDC has separate limits and allocations from standard Apex - Event delivery guaranteed but may be delayed under high load - CDC events support field-level tracking - review selected fields regularly - Use Change Data Capture Event Monitor to troubleshoot

Deactivation Instructions: CDC triggers are challenging to disable in production. Options:

  1. Add custom metadata check:

    trigger OrderItemSummaryTrigger on OrderItemSummaryChangeEvent (after insert){
        if (TriggerSettings__mdt.getInstance('OrderItemSummary')?.Disabled__c == true) {
            return;
        }
        new OrderItemSummaryTriggerHandler().execute();
    }
    

  2. Disable CDC entity in Setup (impacts all CDC subscribers)

CDC Specific Considerations: - OrderItemSummary CDC must be enabled in Setup > Change Data Capture - Select only necessary fields for CDC to reduce event volume - CDC events have 3-day retention for event replay - Test CDC scenarios thoroughly in sandbox - Monitor CDC allocations and limits (varies by edition)