Skip to main content

Expense Approval Events

Summary

Approval and rejection each have a domain event, one-to-one integration mapping, and the same outbox delivery path. Manual decisions and accepted workflow callbacks reach the same aggregate methods.

Confirmed mappings

TransitionDomain eventIntegration contractConsumers
Pending to ApprovedExpenseApprovedDomainEventExpenseApprovedEventPayroll, Notification
Pending to RejectedExpenseRejectedDomainEventExpenseRejectedEventPayroll, Notification

A duplicate workflow callback for an already-terminal claim is acknowledged without reapplying the decision and therefore does not re-emit the terminal event. Direct duplicate approval or an invalid transition returns a conflict before another event can be raised.

No separate workflow-approved integration contract exists.

Requires confirmation

Approval-event replay policy, correction events, and consumer reconciliation after an incorrect decision require confirmation.

Source References

  • microservices/src/expense-service/Domain/Expense/ExpenseClaim.cs
  • microservices/src/expense-service/Domain/Expense/ExpenseDomainEvents.cs
  • microservices/src/expense-service/Infrastructure/ExpenseDbContext.cs
  • microservices/src/contracts/Events/ExpenseLifecycleEvents.cs

See Also

Keywords

  • Expense events
  • Approval Events
  • Integration contracts

Revision Information

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