Skills and Learning Paths
1. Overview
Skills-cloud surface of an LMS: employee skill profiles, competency tracking, and skills-driven learning-path recommendation. Masters skill_profiles and learning_paths. Realizes SKILLS-MGMT and LEARNING-PATH. Distinct from LMS-COURSE-DELIVERY because learning paths here are assigned to close skill gaps rather than sequenced as course curricula. Heavy contributors: TALENT-MGMT (talent reviews), ATS (internal mobility), SWP (workforce planning).
2. Entity summary
Name Description Learning Paths Curated sequence of courses targeting a role, skill, or certification. Drives ordered enrolment and progress tracking across multiple courses. Skill Profiles Per-worker collection of skills with self-assessed and validated proficiency levels, derived from completed courses, certifications, performance signals, and inferred peer-comparison. The central artifact of HCM-side skills-cloud and talent-intelligence offerings. Certifications Issued credential against a worker (internal certification, vendor cert, regulatory cert) with issue date, expiry, issuing body, and renewal rules. Drives recertification campaigns. Course Enrollments Per-learner per-course state record: assigned date, due date, attempts, status (not_started, in_progress, completed, expired), score. The operational unit of learning tracking. Employees Canonical 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. Job Profiles Canonical role definition in the job catalog: title, family, level, responsibilities, required skills and competencies, pay range, FLSA classification. Distinct from positions (which are slots referencing a profile). Many positions share a single job profile. Org Units Node 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). Positions Approved 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. Performance Goals Individual goal or OKR with owner, period, metric, weight, status, alignment to organisational objectives. Reviewed within performance_reviews cycles. Skills Gap Analyses Comparison of current-state skills inventory vs future-state demand by role, level, and geography. Drives build/buy/borrow strategy: which gaps to close via training (LMS), external hires (ATS), or contingent workforce. Outputs feed both SWP scenarios and LMS curriculum decisions.
flowchart TD
classDef master fill:#d4f4dd,stroke:#27ae60,color:#0b3d20;
classDef embedded_master fill:#fff4cc,stroke:#c79100,color:#5b4500;
classDef consumer fill:#e8def8,stroke:#7b1fa2,color:#3a155d;
classDef platform_builtin fill:#e0e0e0,stroke:#424242,color:#1a1a1a;
skill_profiles["Skill Profiles"]
learning_paths["Learning Paths"]
employees["Employees"]
hcm_positions["Positions"]
org_units["Org Units"]
course_enrollments["Course Enrollments"]
learner_certifications["Certifications"]
job_profiles["Job Profiles"]
skills_gap_analyses["Skills Gap Analyses"]
performance_goals["Performance Goals"]
users["Users"]
org_units -->|"groups"| employees
org_units -->|"contains"| hcm_positions
hcm_positions -->|"is_filled_by (opt)"| employees
job_profiles -->|"defines"| hcm_positions
employees -->|"holds (opt)"| skill_profiles
job_profiles -->|"maps_to (opt)"| skill_profiles
employees -->|"enrolls_in (opt)"| course_enrollments
skill_profiles -->|"updated by (opt)"| learner_certifications
skill_profiles -->|"updated by (opt)"| course_enrollments
job_profiles -->|"requires (opt)"| learning_paths
job_profiles -->|"expects (opt)"| skill_profiles
employees -->|"fills (opt)"| hcm_positions
employees -->|"learns_via"| course_enrollments
org_units -->|"rolls_up_to (opt)"| org_units
skills_gap_analyses -->|"prescribes (opt)"| learning_paths
users -->|"curates (opt)"| learning_paths
employees -->|"is_linked_to (opt)"| users
users -->|"manages (opt)"| hcm_positions
users -->|"leads (opt)"| org_units
users -->|"owns (opt)"| job_profiles
users -->|"enrolls in"| course_enrollments
users -->|"assigns (opt)"| course_enrollments
users -->|"holds"| learner_certifications
users -->|"holds"| skill_profiles
users -->|"owns"| performance_goals
org_units -->|"has members (opt)"| users
users -->|"prepares (opt)"| skills_gap_analyses
class skill_profiles master;
class learning_paths master;
class employees embedded_master;
class hcm_positions embedded_master;
class org_units embedded_master;
class course_enrollments embedded_master;
class learner_certifications embedded_master;
class job_profiles embedded_master;
class skills_gap_analyses consumer;
class performance_goals consumer;
class users platform_builtin;
style hcm_positions stroke-dasharray:5 5;
style org_units stroke-dasharray:5 5;
style job_profiles stroke-dasharray:5 5;
3. Entities catalog
# data_object role mastered in necessity pattern flags notes 1 learning_paths (Learning Paths)master - required - - 2 skill_profiles (Skill Profiles)master - required personal_content - 3 learner_certifications (Certifications)embedded_master lms-compliance-trainingrequired personal_content - 4 course_enrollments (Course Enrollments)embedded_master lms-course-deliveryrequired personal_content - 5 employees (Employees)embedded_master hcm-core-workerrequired personal_content - 6 job_profiles (Job Profiles)embedded_master hcm-org-positionsoptional single_approver - 7 org_units (Org Units)embedded_master hcm-org-positionsoptional - - 8 hcm_positions (Positions)embedded_master hcm-org-positionsoptional single_approver - 9 performance_goals (Performance Goals)consumer talent-performance-mgmtrequired personal_content - 10 skills_gap_analyses (Skills Gap Analyses)consumer swp-demand-forecastrequired - -
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
from verb to cardinality kind necessity owner_side notes org_unitsgroups employeesone_to_many reference required source - org_unitscontains hcm_positionsone_to_many reference required source - hcm_positionsis_filled_by employeesone_to_one reference optional target - job_profilesdefines hcm_positionsone_to_many reference required source - employeesholds skill_profilesone_to_one reference optional source - job_profilesmaps_to skill_profilesmany_to_many association optional source - employeesenrolls_in course_enrollmentsone_to_many reference optional source - skill_profilesupdated by learner_certificationsone_to_many reference optional source - skill_profilesupdated by course_enrollmentsone_to_many reference optional source - job_profilesrequires learning_pathsmany_to_many association optional source - job_profilesexpects skill_profilesmany_to_many association optional source - employeesfills hcm_positionsone_to_one reference optional source - employeeslearns_via course_enrollmentsone_to_many reference required source - org_unitsrolls_up_to org_unitsone_to_many reference optional source - skills_gap_analysesprescribes learning_pathsone_to_many reference optional source -
from verb to cardinality necessity owner_side notes userscurates learning_pathsone_to_many optional source - employeesis_linked_to usersone_to_one optional target - usersmanages hcm_positionsone_to_many optional source - usersleads org_unitsone_to_many optional source - usersowns job_profilesone_to_many optional source - usersenrolls in course_enrollmentsone_to_many required source - usersassigns course_enrollmentsone_to_many optional source - usersholds learner_certificationsone_to_many required source - usersholds skill_profilesone_to_many required source - usersowns performance_goalsone_to_many required target - org_unitshas members usersone_to_many optional target - usersprepares skills_gap_analysesone_to_many optional source -
5.3 Cross-scope edges
from verb to cardinality necessity notes employeestriggers iga_provisioning_eventsone_to_many optional - employeesfinalized by onboarding_document_collectionsone_to_many optional - pre_employeespromotes to employeesone_to_one required - legal_holdsidentifies_custodians_from employeesmany_to_many optional - legal_advice_recordsreferences employeesmany_to_many optional - employeesis host for host_assignmentsone_to_many required - employeessigns employment_contractsone_to_many required - employeesgenerates employment_eventsone_to_many required - cost_centersfunds org_unitsone_to_many required - employeestriggers asset_lifecycle_eventsone_to_many optional - employeesrequests absence_requestsone_to_many optional - org_unitsengages contingent_workersone_to_many optional - org_unitsis_scored_by engagement_driversone_to_many optional - org_unitsis_measured_by people_kpisone_to_many optional - employeestriggers service_requestsone_to_many optional - org_unitstriggers iga_entitlement_definitionsone_to_many optional - employeestriggers pay_runsone_to_many optional - hcm_positionsspawns job_requisitionsone_to_many optional - job_profilesfeeds job_postingsone_to_many optional - job_profilesmaps_to coursesmany_to_many optional - employeesbecomes career_aspirationsone_to_one optional - employeesbecomes work_shiftsone_to_many optional - employeesbecomes compensation_statementsone_to_one optional - salary_bandsanchors hcm_positionsone_to_many optional - salary_bandsbands job_profilesone_to_many optional - employeestriggers benefit_enrollmentsone_to_many optional - org_unitsmaps_to cost_centersone_to_one optional - employeestriggers corporate_cardsone_to_many optional - employeesspawns onboarding_journeysone_to_one optional - employeesspawns hr_casesone_to_many optional - employeesfeeds headcount_plansone_to_many optional - employeesfeeds agency_time_entriesone_to_many optional - employeesonboarded by onboarding_journeysone_to_many required - onboarding_tasksspawns course_enrollmentsone_to_many optional - coursessequenced_into learning_pathsmany_to_many optional - coursesenrolled_via course_enrollmentsone_to_many required - course_enrollmentsproduces learning_recordsone_to_many required - coursesgrants learner_certificationsone_to_many optional - hcm_positionsrequires compliance_assignmentsone_to_many optional - org_unitssponsors compliance_assignmentsone_to_many optional - cost_centersfunds course_enrollmentsone_to_many optional - employeesreflects learning_recordsone_to_many optional - employeesreflected on compliance_assignmentsone_to_many optional - skill_profilesfeeds candidatesone_to_many optional - skill_profilesfeeds career_aspirationsone_to_many optional - course_enrollmentsupdates career_aspirationsone_to_many optional - employeesdeclares life_eventsone_to_many optional - org_unitssponsors benefit_plansmany_to_many optional - employeesupdated by life_eventsone_to_many optional - survey_campaignstargets org_unitsmany_to_many optional - org_unitsowns action_plansone_to_many optional - employeessubmits survey_responsesone_to_many optional - employeesflagged on engagement_driversone_to_many optional - employeesreflected on engagement_driversone_to_many optional - employeesraises hr_casesone_to_many required - employeesupdated by hr_casesone_to_many optional - case_categoriesdrives employeesone_to_many optional - contingent_workersreviewed_against employeesone_to_one optional - candidatesbecomes employeesone_to_one required - employeesenrolls_in benefit_enrollmentsone_to_many required - survey_campaignstargets employeesmany_to_many optional - performance_reviewsevaluates performance_goalsone_to_many optional - performance_goalsaligns_to okr_objectivesmany_to_many optional - position_demand_forecastsgrounds skills_gap_analysesone_to_many optional - workforce_scenariosdrives hcm_positionsone_to_many required - org_designsproposes hcm_positionsone_to_many required -
6. Cross-domain context
6.1 Master consumers (other modules / domains that embed this scope’s masters)
data_object other module / domain role necessity notes skill_profilesATS-CANDIDATE-CRM (Candidate CRM) - ATS contributor required - skill_profilesHCM-LIFECYCLE-WORKFLOWS (Employee Lifecycle Workflows) - HCM consumer optional - skill_profilesTALENT-PERFORMANCE-MGMT (Performance and Goal Management) - TALENT-MGMT contributor required -
6.2 Outbound handoffs (events this scope publishes)
source module target domain target module trigger_event payload integration friction description LMS-SKILLS ATS ATS-CANDIDATE-CRM skill_profile.updatedskill_profilesevent_stream medium Internal-candidate skill data flows into ATS for internal mobility sourcing. LMS-SKILLS LMS LMS-COURSE-DELIVERY learning_path.assignedlearning_pathslifecycle_progression low - LMS-SKILLS TALENT-MGMT TALENT-PERFORMANCE-MGMT skill_profile.updatedskill_profilesevent_stream medium Skill-profile refresh drives internal mobility, succession, and dev-plan suggestions.
6.3 Inbound handoffs (events this scope reacts to)
target module source domain source module trigger_event payload integration friction description LMS-SKILLS SWP SWP-DEMAND-FORECAST skills_gap_analysis.completedskills_gap_analysesevent_stream medium Identified gaps drive LMS curriculum updates and assignment campaigns. LMS-SKILLS TALENT-MGMT TALENT-PERFORMANCE-MGMT performance_goal.setperformance_goalsevent_stream low Goal setting drives learning-path suggestions for capability gaps. LMS-SKILLS LMS LMS-COURSE-DELIVERY course_enrollment.completedcourse_enrollmentslifecycle_progression low - LMS-SKILLS LMS LMS-COMPLIANCE-TRAINING learner_certification.earnedlearner_certificationslifecycle_progression low - LMS-SKILLS HCM HCM-ORG-POSITIONS job_profile.publishedjob_profilesevent_stream low Job profile competencies drive LMS skill-profile expectations and required-training assignments.
6.4 Master providers (modules / domains that own masters this scope embeds)
data_object role here necessity canonical owner(s) slice notes course_enrollmentsembedded_master required LMS-COURSE-DELIVERY (LMS) - employeesembedded_master required HCM-CORE-WORKER (HCM), PAYROLL (Payroll Management), IGA (Identity Governance and Administration), MDM (Master Data Management) - hcm_positionsembedded_master optional HCM-ORG-POSITIONS (HCM) - job_profilesembedded_master optional HCM-ORG-POSITIONS (HCM) - learner_certificationsembedded_master required LMS-COMPLIANCE-TRAINING (LMS) - org_unitsembedded_master optional HCM-ORG-POSITIONS (HCM) - performance_goalsconsumer required TALENT-PERFORMANCE-MGMT (TALENT-MGMT) - skills_gap_analysesconsumer required SWP-DEMAND-FORECAST (SWP) -
7. Lifecycle states (per touched entity)
course_enrollments (Course Enrollment)
This scope holds course_enrollments as embedded_master ; the canonical state machine is owned by LMS-COURSE-DELIVERY.
order state_name initial? terminal? requires_permission? derived gate description 1 enrolled✓ - - - Learner enrolled in the course but has not started. 2 in_progress- - - - Learner has begun the course content or activities. 3 completed- ✓ ✓ lms-course-delivery:completeLearner met all completion criteria with a passing score. 4 failed- ✓ ✓ lms-course-delivery:failLearner did not meet the passing criteria within allowed attempts. 5 expired- ✓ ✓ lms-course-delivery:expireEnrollment closed unmet at the due date or content expiry. 6 withdrawn- ✓ ✓ lms-course-delivery:withdrawLearner withdrew or was unenrolled before completion.
employees (Employee)
This scope holds employees as embedded_master ; the canonical state machine is owned by HCM-CORE-WORKER.
order state_name initial? terminal? requires_permission? derived gate description 1 draft✓ - - - Pre-hire stub created during requisition or onboarding handoff; not yet a worker of record. 2 active- - ✓ hcm-core-worker:active_employeeWorker is currently employed and appears in headcount, payroll eligibility, and directory feeds. 3 on_leave- - ✓ hcm-core-worker:on_leave_employeeEmployee is on approved leave (parental, medical, sabbatical); active record but suppressed from some downstream feeds. 4 suspended- - ✓ hcm-core-worker:suspended_employeeEmployment temporarily halted (investigation, disciplinary); pay and access may be paused. 5 terminated- ✓ ✓ 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.
order state_name initial? terminal? requires_permission? derived gate description 1 proposed✓ - - - Position has been designed but not yet approved against the headcount plan. 2 approved- - ✓ hcm-org-positions:approved_positionCleared by headcount/finance owner; eligible to spawn a requisition. 3 open- - ✓ hcm-org-positions:open_positionApproved and actively being recruited against; not yet filled. 4 filled- - ✓ hcm-org-positions:filled_positionAn employee occupies the position. 5 frozen- - ✓ hcm-org-positions:frozen_positionTemporarily not fillable (hiring freeze, budget hold); retains the slot. 6 eliminated- ✓ ✓ hcm-org-positions:eliminated_positionRemoved from the org structure permanently.
job_profiles (Job Profile)
This scope holds job_profiles as embedded_master ; the canonical state machine is owned by HCM-ORG-POSITIONS.
order state_name initial? terminal? requires_permission? derived gate description 1 draft✓ - - - Profile is being authored or revised; not yet available for position assignment. 2 approved- - ✓ hcm-org-positions:approved_job_profileCleared by the catalog owner; ready to be referenced by positions and postings. 3 active- - ✓ hcm-org-positions:active_job_profileIn production use; positions and postings can reference it. 4 retired- ✓ ✓ hcm-org-positions:retired_job_profileNo longer assignable to new positions; historical references preserved.
learner_certifications (Certification)
This scope holds learner_certifications as embedded_master ; the canonical state machine is owned by LMS-COMPLIANCE-TRAINING.
order state_name initial? terminal? requires_permission? derived gate description 1 issued✓ - ✓ lms-compliance-training:issueCredential awarded to the learner with issue and expiry dates. 2 active- - - - Credential in force and valid for compliance or role requirements. 3 renewing- - - - Recertification campaign engaged before expiry. 4 renewed- - ✓ lms-compliance-training:renewCredential renewed with a fresh validity window. 5 expired- ✓ - - Credential past its expiry date and no longer valid. 6 revoked- ✓ ✓ lms-compliance-training:revokeCredential withdrawn by the issuing body or L&D for cause.
learning_paths (Learning Path)
order state_name initial? terminal? requires_permission? derived gate description 1 draft✓ - - - Path being curated by L&D with course sequencing. 2 published- - ✓ lms-skills:publishPath released and assignable to roles, skills, or audiences. 3 retired- ✓ ✓ lms-skills:retirePath removed from new assignments and kept for historical reference.
org_units (Org Unit)
This scope holds org_units as embedded_master ; the canonical state machine is owned by HCM-ORG-POSITIONS.
order state_name initial? terminal? requires_permission? derived gate description 1 draft✓ - - - Org unit defined as part of a future structure; not yet operational. 2 active- - ✓ hcm-org-positions:active_org_unitOperational unit; carries headcount, cost-center linkage, and reporting lines. 3 reorganized- ✓ ✓ hcm-org-positions:reorganized_org_unitUnit folded into or replaced by a new structure; references remain for history. 4 closed- ✓ ✓ hcm-org-positions:closed_org_unitUnit dissolved; no employees or positions reside in it.
This scope holds performance_goals as consumer ; the canonical state machine is owned by TALENT-PERFORMANCE-MGMT.
order state_name initial? terminal? requires_permission? derived gate description 1 drafted✓ - - - Goal authored by employee or manager. 2 approved- - ✓ talent-performance-mgmt:approve_performance_goalManager approves the goal; it becomes part of the cycle. 3 in_progress- - - - Goal is being worked. 4 completed- - ✓ talent-performance-mgmt:complete_performance_goalOutcome recorded; counts toward review rating. 5 cancelled- ✓ ✓ talent-performance-mgmt:cancel_performance_goalGoal abandoned (role change, priority shift, etc.).
skill_profiles (Skill Profile)
order state_name initial? terminal? requires_permission? derived gate description 1 initialized✓ - - - Profile seeded for the worker from role and prior signals. 2 self_assessed- - - - Worker has captured self-assessed proficiency levels. 3 validated- - ✓ lms-skills:validateManager or skills owner validated proficiency entries. 4 inactive- ✓ ✓ lms-skills:deactivateProfile retired (worker exit or role-change reset).
skills_gap_analyses (Skills Gap Analysis)
This scope holds skills_gap_analyses as consumer ; the canonical state machine is owned by SWP-DEMAND-FORECAST.
order state_name initial? terminal? requires_permission? derived gate description 10 draft✓ - - - Analysis under construction. 20 published- - ✓ swp-demand-forecast:publish_skills_gap_analysisAnalysis published; LMS curricula refresh, ATS sourcing prioritization shifts. 90 archived- ✓ - - Analysis superseded by a later cycle.
8. Permissions and business rules (derived)
8.1 Permissions
permission tier description included in :admin? lms-skills:readbaseline-read Read access to every entity in the module ✓ lms-skills:managebaseline-manage Edit operational records ✓ lms-skills:adminbaseline-admin Edit reference data and inherit every workflow gate below - lms-skills:publishworkflow-gate (lifecycle) Transition learning_paths into state published ✓ lms-skills:retireworkflow-gate (lifecycle) Transition learning_paths into state retired ✓ lms-skills:validateworkflow-gate (lifecycle) Transition skill_profiles into state validated ✓ lms-skills:deactivateworkflow-gate (lifecycle) Transition skill_profiles into state inactive ✓ lms-skills:view_all_skill_profilesoverride (personal_content) View all skill_profiles rows beyond row-scope ✓ lms-skills:manage_all_skill_profilesoverride (personal_content) Manage all skill_profiles rows beyond row-scope ✓
8.2 Business rules
rule_name data_object source flag intent skill_profile_edit_scopeskill_profileshas_personal_content Row-scope by default; override via lms-skills:view_all_skill_profiles / lms-skills:manage_all_skill_profiles