Skip to main content

LMS Lifecycle-to-Contract Mapping

Summary

Source-backed lifecycle-to-contract mapping; no domain-event mapping layer exists.

Audience

Engineering, integration, QA, architecture, security, and contract reviewers.

Reference Content

Audit measureTotal
Domain-to-contract mappings0
Lifecycle-to-contract mappings8
Unmapped domain events0
Uninvoked contracts1

The assessment mapping is conditional; the other seven invoked mappings are one lifecycle trigger to one contract. Helpers create identity/time/version directly, validate required data categories, and stage the contract in the outbox. No separate mapper type exists.

Correlation and causation are not copied from HTTP context by the producer helpers. Event identity is newly generated per invocation. Every invoked mapping participates in the endpoint's subsequent SaveChanges boundary.

Lifecycle sourceIntegration contractMapping behaviorIdentity / correlation / versionOutbox and invocation evidence
AssignmentTrainingAssignedEventDirect, one-to-one helper branchNew identity; correlation unset; v1Staged; helper is invoked by assignment
Enrollment startTrainingStartedEventDirect, one-to-one helper branchNew identity; correlation unset; v1Staged; helper is invoked by start
Enrollment completionTrainingCompletedEventDirect, one-to-one helper branchNew identity; correlation unset; v1Staged; helper is invoked by completion
Assessment submissionAssessmentPassedEventConditional on the persisted outcome comparisonNew identity; correlation unset; v1Staged on the passed branch; submission invokes helper
Assessment submissionAssessmentFailedEventConditional on the persisted outcome comparisonNew identity; correlation unset; v1Staged on the failed branch; submission invokes helper
Certificate issueCertificateIssuedEventDirect, one-to-one helperNew identity; correlation unset; v1Staged; issue invokes helper
Session creationTrainingSessionScheduledEventDirect session-helper branchNew identity; correlation unset; v1Staged; create invokes helper
Session rescheduleTrainingSessionRescheduledEventDirect session-helper branchNew identity; correlation unset; v1Staged; reschedule invokes helper

CertificateExpiringSoonEvent has no lifecycle-to-contract mapping because no Training invocation was found. There is no domain-event mapper to inventory.

Source References

  • microservices/src/training-service/Api/TrainingEndpoints.cs
  • microservices/src/training-service/Infrastructure/TrainingDbContext.cs
  • microservices/src/contracts/Events/TrainingLifecycleEvents.cs

See Also

Keywords

  • LMS events
  • Training contracts
  • Source-backed integration

Revision Information

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