LMS Idempotency and Duplicate Handling
Summary
Business guards, persistence uniqueness, and Notification deduplication are separate protections; exactly-once delivery is not proven.
Audience
Engineering, integration, QA, architecture, security, product, and support reviewers.
Reference Content
| Layer | Verified behavior | Boundary |
|---|---|---|
| Producer business state | Lifecycle and terminal-state checks reject invalid repeats. | Does not deduplicate arbitrary repeated requests across all operations. |
| Persistence | Relevant business uniqueness and unique outbox event identity are enforced. | Each accepted producer invocation creates a new identity. |
| Consumer | Notification stores processed event identities and skips a duplicate identity. | Applies to the same event identity, not semantically equivalent new events. |
| Training inbound processing | A processed-integration-event model exists. | No Training inbound consumer uses it. |
| HTTP and gateway | No event deduplication applies. | Retry/idempotency guarantees were not verified at these boundaries. |
Replay and outbox cleanup behavior are not implemented in the reviewed path. Duplicate terminal callbacks were not present. Exactly-once processing or delivery must not be inferred.
Source References
microservices/src/training-service/Api/TrainingEndpoints.csmicroservices/src/training-service/Infrastructure/TrainingDbContext.csmicroservices/src/training-service/Infrastructure/Persistence.csmicroservices/src/notification-service/Infrastructure/NotificationDbContext.csmicroservices/src/notification-service/Application/NotificationDispatcher.cs
Related Articles
See Also
Keywords
- Consumer deduplication
- Business idempotency
- Persistence uniqueness
Revision Information
- Status: Draft
- Last reviewed: 2026-07-17
- Review cycle: Quarterly