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
Related Record Operations¶
- 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 TriggerHandlerTriggerHandler: Base framework classCanceledOrderLogic: Cancellation business logic
Salesforce Objects¶
OrderItemSummaryChangeEvent: CDC event objectOrderItemSummary: Standard Commerce objectOrder: 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:
-
Add custom metadata check:
-
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)