Skip to main content

Payroll Domain Model

Summary

The current Payroll domain is represented by mutable entities and persisted calculation records, with lifecycle behavior implemented primarily in application services.

Audience

Backend and frontend developers, QA and DevOps engineers, support and security engineers, and solution architects.

Overview

The current Payroll domain is represented by mutable entities and persisted calculation records, with lifecycle behavior implemented primarily in application services.

Technical Detail

Model groups

Core records include periods, runs, employee run details, calculation snapshots, payslips, adjustments, salary components, statutory settings, advance summaries and transactions, overtime entries, audit/timeline records, workforce projections, input projections, processed-event markers, and outbox records.

Aggregate and event behavior

PayrollRun is treated as the lifecycle center, but it is a data entity rather than a behavior-rich aggregate root. Calculation, freeze, unfreeze, invariant checks, audit creation, and integration-event creation occur in application services. Contract events are persisted through the outbox.

Value objects and enums

No Payroll-specific value-object types or C# enums are confirmed. Statuses and categories are stored as strings. This makes vocabulary governance a current technical concern.

Persistence boundary

Mappings, numeric precision, unique indexes, JSON breakdowns, and tenant filters are infrastructure concerns and are intentionally not reproduced as database documentation.

Source References

  • microservices/src/payroll-service/Domain/PayrollEntities.cs
  • microservices/src/payroll-service/Application/PayrollCalculationService.cs
  • microservices/src/payroll-service/Infrastructure/PayrollDbContext.cs

See Also

Keywords

  • Payroll Service
  • Payroll Domain Model
  • Technical architecture

Revision Information

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