Skip to main content

Helpdesk Event Idempotency

Producer side

Each event construction assigns a new EventId. The Helpdesk outbox mapping enforces unique event identity at persistence level. No endpoint idempotency key, deterministic event ID or duplicate-command suppression was found. Repeating a successful lifecycle request can therefore create a different event ID if the business operation itself permits repetition.

The Helpdesk schema contains ProcessedIntegrationEvent, but no Helpdesk event consumer or writer using that set was found; it does not provide producer deduplication.

Notification consumer side

Notification Dispatcher queries its own processed-event table by EventId before work and records the outcome after processing. A unique EventId index supports duplicate suppression. This is consumer-side idempotency, not exactly-once transport.

There remains a concurrency window between the initial existence check and final insert; the unique constraint is the final guard, and an unexpected conflict would flow through consumer failure/requeue handling.

Source References

  • microservices/src/helpdesk-service/Infrastructure/Persistence.cs
  • microservices/src/helpdesk-service/Infrastructure/HelpdeskDbContext.cs
  • microservices/src/notification-service/Application/NotificationDispatcher.cs
  • microservices/src/notification-service/Infrastructure/NotificationDbContext.cs

Revision Information

Draft source-backed documentation reviewed on 2026-07-20; next quarterly review is 2026-10-20.