Skip to main content

Recruitment Candidate Storage

Summary​

Candidate is an aggregate root with an owned name and four cascade-owned child collections.

Audience​

Developers, QA and support engineers, data reviewers, implementation partners, solution architects, and security reviewers.

Overview​

Candidate name is an owned value stored with the candidate rather than as a separate persisted object. Status-like values are converted to strings. Candidate has a primary key and three explicit indexes: unique compatibility identity, tenant/stage, and tenant/email.

Application, stage-history, note, and document-reference children each use a Candidate foreign key with cascade delete. The model does not configure unique email or unique application constraints. Personal values and compensation fields are intentionally omitted.

Requires confirmation​

Production migration governance, rollback ownership, reconciliation, retention, privacy, performance, query optimization, concurrency, and operational ownership require confirmation.

Source References​

  • microservices/src/recruitment-service/Infrastructure/RecruitmentDbContext.cs
  • microservices/src/recruitment-service/Domain/Recruitment/Candidate.cs
  • microservices/src/recruitment-service/Domain/Common/ValueObjects.cs

See Also​

Keywords​

  • Recruitment database
  • Candidate Storage

Revision Information​

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