Skip to main content

Attendance Events

Summary

Attendance Service raises five lifecycle domain events and maps each to a version-1 shared integration contract through its transactional outbox.

Audience

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

Overview

Scope and categories

This section covers domain-event creation, shared integration contracts, transactional publishing, confirmed consumers, eventual consistency, idempotency, failure handling, and safe testing. Detailed HTTP contracts and database columns remain in the API and Database sections.

Attendance Service is the producer for punch, submission, approval, rejection, and reopen lifecycle events. Payroll directly consumes submitted and approved events for a read model. Integration Service consumes submitted, approved, and rejected events for routed orchestration. No other direct Attendance consumer is confirmed.

Delivery model

Aggregate changes and mapped outbox rows commit together. A hosted relay later publishes pending work to the shared broker. Consumers process independently, so downstream state is eventually consistent. Persisted or broker-published status does not prove consumer completion.

Current maturity is Transitional: five producer contracts and two consumer services are implemented, but there is no formal contract registry, global ordering guarantee, or Attendance-specific dead-letter/replay workflow.

Documentation map

Related scopes: Business, Technical, API, and Database.

Source References

  • microservices/src/attendance-service/Domain/Attendance/AttendanceDomainEvents.cs
  • microservices/src/contracts/Events/AttendanceLifecycleEvents.cs
  • microservices/src/attendance-service/Infrastructure/AttendanceDbContext.cs
  • microservices/src/attendance-service/Infrastructure/OutboxRelayHostedService.cs

See Also

Keywords

  • Attendance events
  • Integration contracts
  • Eventual consistency

Revision Information

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