Lesotho CMS — pilot feature analysis

Pilot project campus for Raisd (Working Group, 3 Oct 2026). Reverse-engineered from Faid’s newer Admin / Student CMS screenshots (WhatsApp Working Group CMS 2026). No DB dump yet — this page is a capability / flow analysis, not a physical ERD. Old CMS family tree ≈ Botswana / Cyberjaya (Vara).

M4 pilot acceptance Screenshot SoT NMDS + LGCSE 369 tables invent. limkokwing.ac.ls
Why Lesotho (Read.ai, 3 Oct 2026). Sponsor wants Lesotho-first (not Cyberjaya-first) plus weekly % progress; Lesotho is the revenue / adoption priority; Raisd must meet government requirements and match the campus’s newer CMS; framed as a pilot project with other campuses in parallel (Eswatini may follow). Full rationale: lesotho-pilot.md · overview highlight: overview.md.
WG briefing (5 Oct 2026) — analysis results. Old CMS campus2_lesotho measured (369 / 351 / 51 / 6). CAP-53 R1 read mapping ready; Portal API code needs private MySQL. NMDS ≠ DTEF. Share pack: Lesotho CMS analysis briefing (HTML/PDF + WhatsApp paste) · detail §12 Schema × FE × flows · lesotho-db-gap.md.
Standup (8–9 Oct 2026) — CMS vs Applicant + fee/payment SPs. See also fee-payment-sps.html (Applicant merge · QR · SP currency/cases) · campus-finance-profile.html (Faid C1–C10) · cap53-online-enrolment.html (CAP-53 W1 path). Full flow comparison + Applicant backlog: cms-vs-applicant.html · Markdown lesotho-cms-vs-applicant-portal.md. Top gaps: Staff Offer release, LGCSE/Sesotho extract, Faid Accept on finance YAML, real catalogue.
PII boundary. Screenshots contain live student / applicant data. They are not committed to the repo. Inventory text only: old-cms-lesotho.md.

1. Why Lesotho is the pilot

Source: Read.ai summary of the Working Group weekly meeting (email, Sat 3 Oct 2026) + WhatsApp follow-up the same day.

flowchart TB
  SP[Sponsor directive
Lesotho-first + weekly %] RV[Revenue / adoption
priority campus] GOV[Government requirements
NMDS · LGCSE · fees] BEN[Newer CMS = feature
benchmark / parity bar] MIG[Migration SoT =
Raisd schema + Lesotho materials] PILOT[M4 Lesotho pilot
acceptance] SP --> PILOT RV --> PILOT GOV --> PILOT BEN --> PILOT MIG --> PILOT PILOT --> M5[M5 expansion
Cyberjaya · Eswatini · BW · SL]
DriverImplication for Raisd
Sponsor Lesotho-firstAcceptance gate moves from Cyberjaya to Lesotho (M4)
Revenue / adoptionDemonstrate government-ready journeys before multi-campus push
Parity with newer CMSScreenshot checklist seeds staff + applicant + student scope
No shareable new schemaReverse-engineer UX/capabilities; wait for old dump + sanitised blueprint
Parallel campusesDo not freeze Cyberjaya / BW / SL inventory work — they stay M5

2. Two Lesotho systems

Campus already runs a newer Admin + Student CMS while extracting data from the older LUCT-family CMS.

flowchart LR
  OLD[Older LUCT CMS
campus2_lesotho
369 tables · ≈ BW] NEW[Newer Lesotho CMS
Admin + Student
screenshots only] RAISD[Raisd portals
via Portal API] SCHEMA[Raisd Schema v3
+ Lesotho materials] OLD -->|data extract| NEW NEW -->|feature benchmark| RAISD OLD -.->|adapter when dump lands| RAISD SCHEMA --> RAISD

3. Feature map (newer CMS)

Surfaces observed in the 3 Oct screenshot pack — not a claim of Raisd Live.

mindmap
  root((Lesotho newer CMS))
    Registry
      Students ~22k
      Registration
      Graduations
      Clearance queue
      Remark requests
      Referrals
      Curriculum schools
    Admissions
      Review 3-step
      Applicants
      Document review
      Payments Loti
      Intake settings
      Pricing
    Faculty
      Modules
      Attendance
      Assessment types
      Timetable / venues
      FiveDays LMS link
    Admin
      Users
      Positions RBAC
      Calendars
      Notifications
      Activity tracker
    Student portal
      Registration
      Curriculum
      Finance
      Assessments
      Timetable
      Results
          

4. Admissions flow

January 2026 intake sample: rank + score, LGCSE document extract (incl. Sesotho), Academic → QA → Registrar recommendations, payment verified in M (Loti).

flowchart TB
  APP[Applicant record
program · score · rank] DOC[Document Review
LGCSE scan + extract] REV[Admissions Review] AC[Academic recommend] QA[QA recommend] REG[Registrar recommend] PAY[Admissions payment
VERIFIED · Loti] ACC[Accepted / enrolled] APP --> DOC APP --> REV DOC --> REV REV --> AC --> QA --> REG PAY --> ACC REG --> ACC

5. Registry, academics, card, NMDS

flowchart LR
  LIST[Student master list]
  PROF[Profile · Student tab]
  ACAD[Academics
GPA / CGPA / modules] PRINT[Statement of Results
signature · stamp · QR] CARD[Student Card
photo · LUCT LESOTHO] NMDS[Sponsors · NMDS
borrower · terms] LIST --> PROF LIST --> ACAD ACAD --> PRINT LIST --> CARD LIST --> NMDS

6. Graduation clearance

Large clearance queue; multi-department gates before ceremony.

flowchart TB
  Q[Graduation Clearance queue]
  W[Wizard step e.g. Ceremony]
  A[Academic clearance]
  F[Finance clearance]
  DEC{Staff Approve / Reject}
  MSG[Message e.g. gown / fee]
  Q --> W
  W --> A
  W --> F
  A --> DEC
  F --> DEC
  DEC --> MSG
          

7. Student portal

Dark card-grid home; registration history by term (Aug 2023 → Feb 2026 sample).

flowchart TB
  HOME[Home
program · year · CGPA · modules] HOME --> REG[Registration] HOME --> CUR[Curriculum] HOME --> FIN[Finance] HOME --> ASM[Assessments] HOME --> TT[Timetable] HOME --> RES[Results]

8. Positions / RBAC

~23 positions (Library HOD, Registrar, Registry HOD, Faculty Manager, Program Leader, Marketing Staff, …). Permissions are module-scoped with Read / Create / Update / Delete (e.g. Registry Students Read-only vs Student Notes full CRUD).

9. CAP seed for pilot parity

Full table in old-cms-lesotho.md. Highlight for M2–M4:

Lesotho newer CMSRaisd CAP focusPilot bar
Admissions + LGCSE + Loti payCAP-02–05 · CAP-45/46Applicant/staff Not started
Term registrationCAP-10Student Demo → Live
Timetable / attendance / results / SoRCAP-11–15Student Demo; staff Not started
Graduation clearanceCAP-15Multi-dept + fee gate
Fees / proof / online payCAP-45–47Demo / Placeholder
NMDS sponsorsCAP-48assist nmds + AssistStdAcc
Remark / referralsCAP-51Student Demo; staff Not started
CMS adapter / SoR pathCAP-53portal_* + api_*; writes TBC

10. Campus comparison (role)

flowchart LR
  LS["Lesotho
M4 pilot · screenshot SoT
NMDS · LGCSE"] CY["Cyberjaya
richest dump · M5
cmscbj"] BW["Botswana
M5 · DTEF/TEF
≈ old Lesotho family"] SL["Sierra Leone
M5 · EMS pattern"] LS -->|acceptance first| RAISD[Raisd Portals] CY -.-> RAISD BW -.->|family tree hint| LS SL -.-> RAISD

11. Database difference / gap

Old CMS structure dump received (Vara, 5 Oct 2026): schema campus2_lesotho — 369 tables · 351 views · 51 procs · 6 functions (dump stays local, never in git). Newer CMS schema still unavailable (live student data). Compare to Botswana (713) / Cyberjaya (~1,942) / Raisd Schema v3 (~95 collections). Full write-up: lesotho-db-gap.md · CAP-53 R1 reads: lesotho-cap53-read-adapter.md (mapping ready; portal-api code blocked on private MySQL access).

369 tables 351 views 51 procs CAP-53 R1 mapped nmds assist portal-api MySQL TBC
Evidence boundary. Newer CMS schema is unavailable (live student data). Old CMS campus2_lesotho structure measured (369 tables). Logical ERD names below are newer-CMS UI concepts — physical CAP-53 / NMDS names are in lesotho-db-gap.md.
flowchart LR
  A["A Newer Lesotho CMS
screenshot SoT · no DB"] B["B Older Lesotho CMS
campus2_lesotho · 369"] C["C Raisd Schema v3
Postgres Demo · 95 cols"] A -->|UX / CAP seed| GAP[Gap matrix] B -->|CAP-53 portal_* · nmds assist| GAP C -->|pilot write path| GAP BW["cmsbotswana
713 · DTEF"] -.->|~83% name overlap| B CY["cmscbj
~1942"] -.->|richest LUCT| B GAP --> BLOCK["Blockers
SoR path · NMDS API?"]

Probed logical shape (newer CMS)

erDiagram
  STUDENT_PROFILE ||--o{ PROGRAMME_ENROLMENT : has
  PROGRAMME_ENROLMENT ||--o{ STUDY_PERIOD : spans
  STUDY_PERIOD ||--o{ MODULE_REGISTRATION : contains
  PROGRAMME_ENROLMENT ||--o{ FUNDING_AWARD : sponsored
  FUNDING_AWARD ||--o{ FUNDING_TERM : covers
  PROGRAMME_ENROLMENT ||--o{ GRADUATION_REQUEST : may
  GRADUATION_REQUEST ||--o{ CLEARANCE_GATE : needs
  APPLICANT ||--o{ APPLICATION : submits
  APPLICATION ||--o{ QUALIFICATION : shows
  QUALIFICATION ||--o{ SUBJECT_GRADE : lists
  APPLICATION ||--o{ REVIEW_DECISION : advances
  APPLICATION ||--o{ APPLICATION_PAYMENT : pays
  STAFF_USER ||--o{ POSITION : holds
  POSITION ||--o{ POSITION_PERMISSION : grants
          
SignalCyberjayaBotswanaLesotho (probed)
Tables~1,942713369 (campus2_lesotho)
Gov sponsorshipAssist onlyDTEF → tef.gov.bwNMDS = assist nmds + AssistStdAcc (no TEF POST)
School leavingCDU / EMGS pathLocal docsLGCSE + Sesotho + certificate #
CurrencyMYRBWPLSL / M (provider BillCurrency still RM/USD leftover)
Admissions workflowapp_* desksapp_* (21)app_* (13) + newer UI rank/score · Academic→QA→Registrar
Portal hooksportal_*_cyberjayaportal_*_botswana (6)portal_student_*_lesotho (5) + api_student_* SPs
Immigration / EMGSHeavy w_*Welfare / visaNot in pack — out of M4 default

Gaps vs Raisd Schema v3 Demo (today)

  1. NMDS ≠ DTEF — map nmds / AssistStdAcc / term bills; no TEF client.
  2. LGCSE extract — subject/grade rows + Sesotho + Examinations Council metadata.
  3. 3-step admissions + rank/score — richer than thin applicant Demo.
  4. Graduation clearance — multi-dept gates + gown/grad fee precondition.
  5. LSL finance + SoR print/QR — campus currency + staff deliverable.
  6. CAP-53 write path — reads mapped; Live SoR (old CMS vs Schema) still WG.

12. Schema × frontend × flows (M4)

Cross-cut of newer CMS UX, old campus2_lesotho schema, Raisd Schema v3, and SDD-11 FE status. Full matrices: lesotho-db-gap.md § M4 gap analysis. Live = 0 everywhere.

Applicant Not started Staff portal Not started Student Demo deepest CAP-53 R1 mapping ready portal-api MySQL TBC Old schema hooks present
flowchart TB
  subgraph B["B Old schema"]
    APP["app_* · Faculty/AQA/Registry"]
    REG["r_std* · online_enrollment"]
    NMDS["nmds assist · AssistStdAcc"]
    PORT["portal_*_lesotho · api_*"]
  end
  subgraph C["C Raisd"]
    SCH["Schema v3"]
    API["Portal API Demo · CMS stub"]
    FE["Student Demo · App/Staff NS"]
  end
  APP -->|CAP-02–05| FE
  REG -->|CAP-10| FE
  NMDS -->|CAP-48| FE
  PORT -->|CAP-53 reads| API
  API --> SCH
  FE -.->|Live gap| BLOCK["Blockers: SoR path · staff/applicant FE · NMDS API?"]
          
FlowOld schemaRaisd FESeverity
Admissions apply + 3-stepapp_* + Faculty/AQA/Registry statusesNot startedB
Rank / scoreNot in old app cols (newer UI)Not startedH
LGCSE extractFlat education subjects + docfileNot startedH
Term registrationonline_enrollment + confirm SPStudent DemoB
NMDSnmds + billing (no TEF)Student DemoB
Finance LSLb_payment* · RM leftover on assistDemo / PlaceholderH
Graduation wizardgown/clearance cols; UI richerStudent DemoH
CAP-53 writesSoR desks / Schema TBDPartial FEB

Suggested M4 cut order

  1. CAP-53 reads (portal + api_*) · campus LESOTHO — mapping ready; catalogs in CATALOG.md
  2. Applicant CAP-02/03 + LSL fee + LGCSE model
  3. Staff admissions Faculty → AQA → Registry
  4. CAP-10 registration writes + side effects
  5. CAP-48 NMDS seed · CAP-15 clearance · CAP-45–47 finance
  6. Staff portal shell + positions RBAC