Skip to main content

LMS Course Aggregate Boundary

Summary

Course is the operational root for creation, publish/archive, modules, lessons, and materials, but no aggregate-root marker or behavior methods exist. EF config cascades Course to modules/materials and Module to lessons.

Identity and tenant fields come from TenantEntity. Code/title value records validate and normalize; duration clamps. Tenant+code uniqueness is database-enforced. Category is free text. Publish/archive set state directly with no strict transition invariant. Materials are stored through Document Service, then referenced locally. No course repository, domain event, concurrency token, trainer ownership, prerequisite, or capacity invariant is confirmed.

Requires confirmation

Fine-grained authorization, production ownership, operational governance, and future architectural boundaries require confirmation where not implemented.

Source References

  • microservices/src/training-service/Domain/TrainingEntities.cs
  • microservices/src/training-service/Api/TrainingEndpoints.cs
  • microservices/src/training-service/Infrastructure/TrainingDbContext.cs
  • microservices/src/training-service/Application/DocumentServiceClient.cs

See Also

Keywords

  • LMS technical architecture
  • Source-backed implementation

Revision Information

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