Skip to main content

Attendance Outbox Storage

Summary

Attendance converts selected aggregate domain events into integration-event outbox rows before committing business changes.

Audience

  • Backend developers, integration engineers, QA engineers, and support engineers

Reference Content

Transaction boundary

The operational row contains message identity, unique event identity, event type, occurrence time, serialized payload, processing status, processed time, retry count, error text, correlation context, tenant context, source service, and version as defined by the shared outbox type. Exact payloads are outside this epic.

A unique event-identity index prevents duplicate stored event identities; status/time supports ordered polling. The outbox has no global tenant query filter because relay operations span pending work. Its tenant field is operational context, not a substitute for filter enforcement.

Atomic storage proves only that business changes and their outbox rows share an EF save. It does not prove broker delivery; relay status and retry state describe subsequent attempts.

Source References

  • microservices/src/attendance-service/Infrastructure/AttendanceDbContext.cs
  • microservices/src/attendance-service/Infrastructure/Persistence.cs
  • microservices/src/attendance-service/Infrastructure/OutboxRelayHostedService.cs

See Also

Keywords

  • Attendance persistence
  • EF Core
  • PostgreSQL

Revision Information

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