Skip to main content

Expense Notification Events

Summary

Notification subscribes to ExpenseApproved, ExpenseRejected, and ExpensePaid. Each supported event can resolve to a notification intent; delivery is then owned by Notification rather than Expense.

Confirmed separation

The resolver reads the shared contract and prepares lifecycle-specific template variables. The recipient is derived from the claimant reference. Email delivery is available only when an address is present; the Expense mapper currently leaves that optional contract field empty, so source does not establish email delivery for ordinary broker-published Expense events.

The dispatcher checks its processed-event ledger before creating messages. Duplicate identities are skipped. Stale-event behavior and channel delivery retries are Notification policies, separate from Expense outbox retry.

Not implemented

  • Direct notification sending by Expense
  • Notification delivery acknowledgement back to Expense
  • Expense-owned notification retry or delivery ledger
  • Guaranteed email delivery for Expense events

Requires confirmation

Recipient enrichment, channel guarantees, notification template ownership, delivery objectives, and failure escalation require confirmation.

Source References

  • microservices/src/notification-service/Messaging/NotificationEventConsumer.cs
  • microservices/src/notification-service/Application/EventNotificationResolver.cs
  • microservices/src/notification-service/Application/NotificationDispatcher.cs
  • microservices/src/notification-service/Infrastructure/NotificationDbContext.cs
  • microservices/scripts/smoke-expense.ps1

See Also

Keywords

  • Expense events
  • Notification Events
  • Integration contracts

Revision Information

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