Salesforce Decode
Salesforcedecode
Back to questions
ApexAdvancedplatform-eventstransactionsdml

Publish Platform Events after DML commit without losing events on rollback

Real World Scenario

Trigger publishes Order_Created__e before save. Validation rule failure rolls back Order but warehouse receives event and ships phantom order.

Expected Answer

• Publish in after trigger only—DML already committed for current record batch • EventBus.publish in after insert/update not before trigger • Transactional Platform Events publish only after successful transaction commit • Subscriber idempotent: verify Order exists before warehouse action • Never publish from before trigger or validation that may fail • CDC alternative when transactional guarantee with field changes required • Test rollback scenario: assert no event delivered on validation failure

Follow-Up Questions & Answers

Click to expand — each follow-up includes a direct, interview-ready answer

Main difference: use case and scale. Publish in after trigger only—DML already committed for current record batch. EventBus.publish in after insert/update not before trigger. Pick based on your integration pattern and team capability. Phantom events from before-save publish are integration nightmares—after commit or transactional events only. Optimize for scale and operational observability.

Architect Perspective

Phantom events from before-save publish are integration nightmares—after commit or transactional events only.