Expense Claim Storage
Summary
ExpenseClaim is stored as the aggregate root with a stable native identifier and a unique compatibility identifier. Claimant, Money, and ExpenseCategory are owned values stored with the aggregate. Lifecycle status is persisted as text. Workflow and actor references are logical identifiers, not database relationships.
Audience
Backend developers, database reviewers, QA, architects, DevOps, support, and implementation teams.
Confirmed persistence
ExpenseClaim is stored as the aggregate root with a stable native identifier and a unique compatibility identifier. Claimant, Money, and ExpenseCategory are owned values stored with the aggregate. Lifecycle status is persisted as text. Workflow and actor references are logical identifiers, not database relationships.
Indexes cover unique compatibility identity, tenant/status queries, and workflow lookup. No soft-delete marker or concurrency token is configured. Pending deletion is a hard aggregate delete; receipt children cascade. Audit/timeline rows have no configured claim foreign key and therefore are not cascade children.
Requires confirmation
Production migration governance, retention, archival, masking, performance targets, concurrency roadmap, operational-store access, and rollback ownership remain unconfirmed unless narrowed above.
Source References
microservices/src/expense-service/Infrastructure/ExpenseDbContext.csmicroservices/src/expense-service/Domain/Expense/ExpenseClaim.cs
Related Articles
See Also
Keywords
- Expense database
- Expense Claim Storage
Revision Information
- Status: Draft
- Last reviewed: 2026-07-16
- Review cycle: Quarterly