Semantius Logo

Course Delivery

1. Overview

The core LMS workflow: course authoring, content delivery, enrollment, completion tracking, and transcript posting. Masters courses, course_enrollments, learning_records. Realizes COURSE-AUTHOR and CONTENT-DELIVERY capabilities. The backbone module every LMS deployment installs first; the other LMS modules embedded_master courses to reference content.

2. Entity summary

NameDescription
Course EnrollmentsPer-learner per-course state record: assigned date, due date, attempts, status (not_started, in_progress, completed, expired), score. The operational unit of learning tracking.
CoursesAtomic learning unit: e-learning module, video, live session, blended programme, external content. Carries content reference, duration, format, language, prerequisites, certification award.
Learning RecordsGranular completion event for a course or activity, often xAPI / SCORM / cmi5 statement: actor, verb, object, result, timestamp. Feeds skill_profiles and certifications.
Cost CentersOrganisational unit for cost allocation: name, code, manager, hierarchy, currency. Drives variance reporting and project / departmental P&L. A near-universal foreign key in finance and payroll.
EmployeesCanonical record of a person currently or formerly employed by the organization. Carries identity (legal name, contact, IDs), employment metadata (start date, end date, employment type, country), and pointers to position, job profile, org unit, manager, and life-event history. The most multi-mastered data object in the catalog: HCM masters the core HR slice, Payroll masters the comp/withholding slice, and IGA masters the identity/access slice. Onboarding, PA, and Talent Management consume or contribute.
Org UnitsNode in the organizational hierarchy: division, business unit, department, team. Carries manager, cost center alignment, geographic scope, and parent/child relationships. HCM masters the operational hierarchy; EPM contributes the cost-center mapping (which would be Finance-mastered once a Finance/GL domain is loaded).
PositionsApproved slot in the org - a ‘chair’ with role definition, cost center, reporting line, location, and FTE allocation. Distinct from job_profiles (the catalog definition) and from employees (the person filling the slot). A position can be open, filled, or eliminated. SWP designs future positions via org_designs; HCM operationalizes them once approved.
flowchart TD
  classDef master fill:#d4f4dd,stroke:#27ae60,color:#0b3d20;
  classDef embedded_master fill:#fff4cc,stroke:#c79100,color:#5b4500;
  classDef platform_builtin fill:#e0e0e0,stroke:#424242,color:#1a1a1a;
  org_units["Org Units"]
  courses["Courses"]
  course_enrollments["Course Enrollments"]
  learning_records["Learning Records"]
  employees["Employees"]
  hcm_positions["Positions"]
  cost_centers["Cost Centers"]
  users["Users"]
  org_units -->|"groups"| employees
  org_units -->|"contains"| hcm_positions
  hcm_positions -->|"is_filled_by (opt)"| employees
  cost_centers -->|"funds"| org_units
  employees -->|"enrolls_in (opt)"| course_enrollments
  org_units -->|"maps_to (opt)"| cost_centers
  courses -->|"enrolled_via"| course_enrollments
  course_enrollments -->|"produces"| learning_records
  cost_centers -->|"funds (opt)"| course_enrollments
  employees -->|"reflects (opt)"| learning_records
  employees -->|"fills (opt)"| hcm_positions
  employees -->|"learns_via"| course_enrollments
  org_units -->|"rolls_up_to (opt)"| org_units
  users -->|"owns (opt)"| courses
  employees -->|"is_linked_to (opt)"| users
  users -->|"manages (opt)"| hcm_positions
  users -->|"leads (opt)"| org_units
  users -->|"owns (opt)"| cost_centers
  users -->|"authors (opt)"| courses
  users -->|"enrolls in"| course_enrollments
  users -->|"assigns (opt)"| course_enrollments
  users -->|"earns"| learning_records
  org_units -->|"has members (opt)"| users
  class org_units embedded_master;
  class courses master;
  class course_enrollments master;
  class learning_records master;
  class employees embedded_master;
  class hcm_positions embedded_master;
  class cost_centers embedded_master;
  class users platform_builtin;
  style org_units stroke-dasharray:5 5;
  style hcm_positions stroke-dasharray:5 5;
  style cost_centers stroke-dasharray:5 5;

3. Entities catalog

#data_objectrolemastered innecessitypattern flagsnotes
1course_enrollments (Course Enrollments)master-requiredpersonal_content-
2courses (Courses)master-required--
3learning_records (Learning Records)master-requiredpersonal_content-
4cost_centers (Cost Centers)embedded_masterERP-FIN (domain-level, not modularized)optional--
5employees (Employees)embedded_masterhcm-core-workerrequiredpersonal_content-
6org_units (Org Units)embedded_masterhcm-org-positionsoptional--
7hcm_positions (Positions)embedded_masterhcm-org-positionsoptionalsingle_approver-

4. Aliases and industry synonyms

(no industry-scoped aliases or non-synonym alias types loaded for this scope; generic synonyms are omitted as common knowledge.)

5. Relationships

5.1 Intra-scope edges

fromverbtocardinalitykindnecessityowner_sidenotes
org_unitsgroupsemployeesone_to_manyreferencerequiredsource-
org_unitscontainshcm_positionsone_to_manyreferencerequiredsource-
hcm_positionsis_filled_byemployeesone_to_onereferenceoptionaltarget-
cost_centersfundsorg_unitsone_to_manyreferencerequiredsource-
employeesenrolls_incourse_enrollmentsone_to_manyreferenceoptionalsource-
org_unitsmaps_tocost_centersone_to_onereferenceoptionalsource-
coursesenrolled_viacourse_enrollmentsone_to_manyreferencerequiredsource-
course_enrollmentsproduceslearning_recordsone_to_manycompositionrequiredsource-
cost_centersfundscourse_enrollmentsone_to_manyreferenceoptionalsource-
employeesreflectslearning_recordsone_to_manyreferenceoptionalsource-
employeesfillshcm_positionsone_to_onereferenceoptionalsource-
employeeslearns_viacourse_enrollmentsone_to_manyreferencerequiredsource-
org_unitsrolls_up_toorg_unitsone_to_manyreferenceoptionalsource-

5.2 Built-in edges (users and other platform built-ins)

fromverbtocardinalitynecessityowner_sidenotes
usersownscoursesone_to_manyoptionalsource-
employeesis_linked_tousersone_to_oneoptionaltarget-
usersmanageshcm_positionsone_to_manyoptionalsource-
usersleadsorg_unitsone_to_manyoptionalsource-
usersownscost_centersone_to_manyoptionalsource-
usersauthorscoursesone_to_manyoptionalsource-
usersenrolls incourse_enrollmentsone_to_manyrequiredsource-
usersassignscourse_enrollmentsone_to_manyoptionalsource-
usersearnslearning_recordsone_to_manyrequiredsource-
org_unitshas membersusersone_to_manyoptionaltarget-

5.3 Cross-scope edges

fromverbtocardinalitynecessitynotes
employeestriggersiga_provisioning_eventsone_to_manyoptional-
employeesfinalized byonboarding_document_collectionsone_to_manyoptional-
pre_employeespromotes toemployeesone_to_onerequired-
legal_holdsidentifies_custodians_fromemployeesmany_to_manyoptional-
legal_advice_recordsreferencesemployeesmany_to_manyoptional-
employeesis host forhost_assignmentsone_to_manyrequired-
job_profilesdefineshcm_positionsone_to_manyrequired-
employeessignsemployment_contractsone_to_manyrequired-
employeesgeneratesemployment_eventsone_to_manyrequired-
employeestriggersasset_lifecycle_eventsone_to_manyoptional-
employeesrequestsabsence_requestsone_to_manyoptional-
employeesholdsskill_profilesone_to_oneoptional-
org_unitsengagescontingent_workersone_to_manyoptional-
org_unitsis_scored_byengagement_driversone_to_manyoptional-
org_unitsis_measured_bypeople_kpisone_to_manyoptional-
employeestriggersservice_requestsone_to_manyoptional-
org_unitstriggersiga_entitlement_definitionsone_to_manyoptional-
employeestriggerspay_runsone_to_manyoptional-
hcm_positionsspawnsjob_requisitionsone_to_manyoptional-
job_profilesmaps_tocoursesmany_to_manyoptional-
employeesbecomescareer_aspirationsone_to_oneoptional-
employeesbecomeswork_shiftsone_to_manyoptional-
employeesbecomescompensation_statementsone_to_oneoptional-
salary_bandsanchorshcm_positionsone_to_manyoptional-
employeestriggersbenefit_enrollmentsone_to_manyoptional-
employeestriggerscorporate_cardsone_to_manyoptional-
employeesspawnsonboarding_journeysone_to_oneoptional-
employeesspawnshr_casesone_to_manyoptional-
employeesfeedsheadcount_plansone_to_manyoptional-
employeesfeedsagency_time_entriesone_to_manyoptional-
employeesonboarded byonboarding_journeysone_to_manyrequired-
onboarding_tasksspawnscourse_enrollmentsone_to_manyoptional-
coursessequenced_intolearning_pathsmany_to_manyoptional-
coursesfulfillscompliance_assignmentsone_to_manyoptional-
coursesgrantslearner_certificationsone_to_manyoptional-
skill_profilesupdated bycourse_enrollmentsone_to_manyoptional-
hcm_positionsrequirescompliance_assignmentsone_to_manyoptional-
org_unitssponsorscompliance_assignmentsone_to_manyoptional-
employeesreflected oncompliance_assignmentsone_to_manyoptional-
course_enrollmentsupdatescareer_aspirationsone_to_manyoptional-
learning_recordsfeedspeople_kpisone_to_manyoptional-
employeesdeclareslife_eventsone_to_manyoptional-
org_unitssponsorsbenefit_plansmany_to_manyoptional-
employeesupdated bylife_eventsone_to_manyoptional-
survey_campaignstargetsorg_unitsmany_to_manyoptional-
org_unitsownsaction_plansone_to_manyoptional-
employeessubmitssurvey_responsesone_to_manyoptional-
employeesflagged onengagement_driversone_to_manyoptional-
employeesreflected onengagement_driversone_to_manyoptional-
employeesraiseshr_casesone_to_manyrequired-
employeesupdated byhr_casesone_to_manyoptional-
case_categoriesdrivesemployeesone_to_manyoptional-
contingent_workersreviewed_againstemployeesone_to_oneoptional-
candidatesbecomesemployeesone_to_onerequired-
employeesenrolls_inbenefit_enrollmentsone_to_manyrequired-
survey_campaignstargetsemployeesmany_to_manyoptional-
workforce_scenariosdriveshcm_positionsone_to_manyrequired-
org_designsproposeshcm_positionsone_to_manyrequired-

6. Cross-domain context

6.1 Master consumers (other modules / domains that embed this scope’s masters)

data_objectother module / domainrolenecessitynotes
course_enrollmentsLMS-SKILLS (Skills and Learning Paths) - LMSembedded_masterrequired-
course_enrollmentsPA-PREDICTIVE-MODELS (Predictive Models) - PAconsumeroptional-
course_enrollmentsTALENT-SUCCESSION-CAREER (Succession and Career Planning) - TALENT-MGMTconsumeroptional-
coursesLMS-COMPLIANCE-TRAINING (Compliance Training) - LMSembedded_masterrequired-
learning_recordsPA-PREDICTIVE-MODELS (Predictive Models) - PAderivedrequired-

6.2 Outbound handoffs (events this scope publishes)

source moduletarget domaintarget moduletrigger_eventpayloadintegrationfrictiondescription
LMS-COURSE-DELIVERYHCM(domain-level)learning_record.postedlearning_recordsevent_streamlowAuthoritative learning transcript visible in HCM employee record.
LMS-COURSE-DELIVERYLMSLMS-SKILLScourse_enrollment.completedcourse_enrollmentslifecycle_progressionlow-
LMS-COURSE-DELIVERYLMSLMS-COMPLIANCE-TRAININGcourse.publishedcourseslifecycle_progressionlow-
LMS-COURSE-DELIVERYTALENT-MGMTTALENT-SUCCESSION-CAREERcourse_enrollment.completedcourse_enrollmentsevent_streamlowCourse completion updates skill-profile; TALENT-MGMT reflects in dev-plans and succession.

6.3 Inbound handoffs (events this scope reacts to)

target modulesource domainsource moduletrigger_eventpayloadintegrationfrictiondescription
LMS-COURSE-DELIVERYHCMHCM-CORE-WORKERemployee.createdemployeesevent_streamlowNew-hire creation provisions required-training assignments (compliance, role-based). Drives day-one and 30-day learning workflows.

6.4 Master providers (modules / domains that own masters this scope embeds)

data_objectrole herenecessitycanonical owner(s)slice notes
cost_centersembedded_masteroptionalERP-FIN (Core ERP Financial Management)-
employeesembedded_masterrequiredHCM-CORE-WORKER (HCM), PAYROLL (Payroll Management), IGA (Identity Governance and Administration), MDM (Master Data Management)-
hcm_positionsembedded_masteroptionalHCM-ORG-POSITIONS (HCM)-
org_unitsembedded_masteroptionalHCM-ORG-POSITIONS (HCM)-

7. Lifecycle states (per touched entity)

course_enrollments (Course Enrollment)

orderstate_nameinitial?terminal?requires_permission?derived gatedescription
1enrolled---Learner enrolled in the course but has not started.
2in_progress----Learner has begun the course content or activities.
3completed-lms-course-delivery:completeLearner met all completion criteria with a passing score.
4failed-lms-course-delivery:failLearner did not meet the passing criteria within allowed attempts.
5expired-lms-course-delivery:expireEnrollment closed unmet at the due date or content expiry.
6withdrawn-lms-course-delivery:withdrawLearner withdrew or was unenrolled before completion.

courses (Course)

orderstate_nameinitial?terminal?requires_permission?derived gatedescription
1draft---Course being authored by an instructional designer or SME.
2in_review----Content under review by L&D or compliance reviewers.
3published--lms-course-delivery:publishCourse released to the catalog and available for enrollment.
4retired-lms-course-delivery:retireCourse removed from the catalog and kept for historical transcripts.

employees (Employee)

This scope holds employees as embedded_master; the canonical state machine is owned by HCM-CORE-WORKER.

orderstate_nameinitial?terminal?requires_permission?derived gatedescription
1draft---Pre-hire stub created during requisition or onboarding handoff; not yet a worker of record.
2active--hcm-core-worker:active_employeeWorker is currently employed and appears in headcount, payroll eligibility, and directory feeds.
3on_leave--hcm-core-worker:on_leave_employeeEmployee is on approved leave (parental, medical, sabbatical); active record but suppressed from some downstream feeds.
4suspended--hcm-core-worker:suspended_employeeEmployment temporarily halted (investigation, disciplinary); pay and access may be paused.
5terminated-hcm-core-worker:terminated_employeeEmployment ended (voluntary or involuntary); final pay processed, access deprovisioned.

hcm_positions (Position)

This scope holds hcm_positions as embedded_master; the canonical state machine is owned by HCM-ORG-POSITIONS.

orderstate_nameinitial?terminal?requires_permission?derived gatedescription
1proposed---Position has been designed but not yet approved against the headcount plan.
2approved--hcm-org-positions:approved_positionCleared by headcount/finance owner; eligible to spawn a requisition.
3open--hcm-org-positions:open_positionApproved and actively being recruited against; not yet filled.
4filled--hcm-org-positions:filled_positionAn employee occupies the position.
5frozen--hcm-org-positions:frozen_positionTemporarily not fillable (hiring freeze, budget hold); retains the slot.
6eliminated-hcm-org-positions:eliminated_positionRemoved from the org structure permanently.

learning_records (Learning Record)

orderstate_nameinitial?terminal?requires_permission?derived gatedescription
1recorded---Statement captured from the content runtime or external source.
2validated-lms-course-delivery:validateRecord validated against schema and posted to the learner transcript.
3voided-lms-course-delivery:voidRecord voided due to data error, duplicate, or content reset.

org_units (Org Unit)

This scope holds org_units as embedded_master; the canonical state machine is owned by HCM-ORG-POSITIONS.

orderstate_nameinitial?terminal?requires_permission?derived gatedescription
1draft---Org unit defined as part of a future structure; not yet operational.
2active--hcm-org-positions:active_org_unitOperational unit; carries headcount, cost-center linkage, and reporting lines.
3reorganized-hcm-org-positions:reorganized_org_unitUnit folded into or replaced by a new structure; references remain for history.
4closed-hcm-org-positions:closed_org_unitUnit dissolved; no employees or positions reside in it.

8. Permissions and business rules (derived)

8.1 Permissions

permissiontierdescriptionincluded in :admin?
lms-course-delivery:readbaseline-readRead access to every entity in the module
lms-course-delivery:managebaseline-manageEdit operational records
lms-course-delivery:adminbaseline-adminEdit reference data and inherit every workflow gate below-
lms-course-delivery:publishworkflow-gate (lifecycle)Transition courses into state published
lms-course-delivery:retireworkflow-gate (lifecycle)Transition courses into state retired
lms-course-delivery:completeworkflow-gate (lifecycle)Transition course_enrollments into state completed
lms-course-delivery:failworkflow-gate (lifecycle)Transition course_enrollments into state failed
lms-course-delivery:expireworkflow-gate (lifecycle)Transition course_enrollments into state expired
lms-course-delivery:withdrawworkflow-gate (lifecycle)Transition course_enrollments into state withdrawn
lms-course-delivery:validateworkflow-gate (lifecycle)Transition learning_records into state validated
lms-course-delivery:voidworkflow-gate (lifecycle)Transition learning_records into state voided
lms-course-delivery:view_all_course_enrollmentsoverride (personal_content)View all course_enrollments rows beyond row-scope
lms-course-delivery:manage_all_course_enrollmentsoverride (personal_content)Manage all course_enrollments rows beyond row-scope
lms-course-delivery:view_all_learning_recordsoverride (personal_content)View all learning_records rows beyond row-scope
lms-course-delivery:manage_all_learning_recordsoverride (personal_content)Manage all learning_records rows beyond row-scope

8.2 Business rules

rule_namedata_objectsource flagintent
course_enrollment_edit_scopecourse_enrollmentshas_personal_contentRow-scope by default; override via lms-course-delivery:view_all_course_enrollments / lms-course-delivery:manage_all_course_enrollments
learning_record_edit_scopelearning_recordshas_personal_contentRow-scope by default; override via lms-course-delivery:view_all_learning_records / lms-course-delivery:manage_all_learning_records