Skip to main content

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

LayerVerified behaviorBoundary
Producer business stateLifecycle and terminal-state checks reject invalid repeats.Does not deduplicate arbitrary repeated requests across all operations.
PersistenceRelevant business uniqueness and unique outbox event identity are enforced.Each accepted producer invocation creates a new identity.
ConsumerNotification stores processed event identities and skips a duplicate identity.Applies to the same event identity, not semantically equivalent new events.
Training inbound processingA processed-integration-event model exists.No Training inbound consumer uses it.
HTTP and gatewayNo 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.cs
  • microservices/src/training-service/Infrastructure/TrainingDbContext.cs
  • microservices/src/training-service/Infrastructure/Persistence.cs
  • microservices/src/notification-service/Infrastructure/NotificationDbContext.cs
  • microservices/src/notification-service/Application/NotificationDispatcher.cs

See Also

Keywords

  • Consumer deduplication
  • Business idempotency
  • Persistence uniqueness

Revision Information

  • Status: Draft
  • Last reviewed: 2026-07-17
  • Review cycle: Quarterly