Cyberjaya CMS — end-to-end functional flow

Full campus lifecycle for LUCT Cyberjaya (MYS-CYB, DB cmscbj) — the ADR-1 launch system of record. Package CMS_Cyberjaya_Source_Codes_&_DB_Structure_23_09_2026. Campus UI brand [MYS-CYB]. Raisd portals sit in front via Portal API → CAP-53 ACL; staff desks stay on CMS MySQL. Longer-term unified CMS sits under M5+ — not Admissions launch rewrite. PHPMaker core plus Laravel payment/ and icupdpa/.

DB cmscbj ~1942 tables 318 SPs 38 functions 239 triggers 655 views ~20 desks ADR-1 SoR Dump 23 Sep 2026
This phase — ADR-1 (confirmed Aslam, 23 Sep 2026). Use the existing Cyberjaya CMS as system of record. Build modern portal experiences via the Portal API → CAP-53 anti-corruption layer → existing MySQL. Do not duplicate operational staff functions the old CMS already runs. Also seen in dumps: campus2_cyberjaya, portalcyberjaya.
Longer-term target. Still aim for a unified, one-stop CMS, delivered progressively on verified gaps with an explicit migration strategy (ownership, cutover, rollback, training). That consolidation sits under M5+ / remaining-CMS work — not Admissions launch rewrite. See SDD-03 and campus comparison.
Technology shape. PHPMaker core under cyberjaya/campus/<desk>/, plus Laravel sub-apps payment/ and icupdpa/. Live classes use Adobe Connect tables and classroom.limkokwing.net streaming. Batch ops live in cyberbatch/ and CYBERJAYA-SCRIPT/. No TEF / DTEF government scholarship API (that pattern is Botswana-only).
Scope. Structure and behaviour only. PHP tree, credentials, and live student data are not committed. Canonical notes: old-cms-cyberjaya.md, cms-feature-comparison.md. Legacy URLs (comparison, fsd, erd, flows, database) redirect into this hub.

1. End-to-end campus lifecycle

One shared MySQL SoR. Staff desks own writes; thin student/lecturer PHPMaker UIs, api_student_* / portal_r_*_cyberjaya hooks, Laravel payment/ICU, and cyberbatch sit beside them. No government TEF sync.

Student journey across desks

Marketing → Registry/admit → Enrol → Faculty/Lecturer study → Bursary → Services/EMGS → Accommodation → Reporting/cyberbatch.

flowchart LR
  subgraph Recruit["1 · Recruit"]
    MKT[Marketing
app_* / agents] CDU[CDU / AQA
entry rules] end subgraph Admit["2 · Admit"] REG1[Registry
offer letters] APP[Online / staff
application] end subgraph Enrol["3 · Enrol"] REG2[Registry
r_student / programme] FAC1[Faculty
structure / modules] end subgraph Study["4 · Study"] FAC2[Faculty
timetable / results] LEC[Lecturer
marks / attendance] ADOBE[Adobe Connect
classroom.limkokwing.net] end subgraph Money["5 · Finance"] BUR[Bursary
invoice / pay] PAY[Laravel payment] end subgraph Life["6 · Student life"] SVC[Services
EMGS / KDN / visa] ACC[Accommodation] LIB[Library] end subgraph Close["7 · Close / report"] REP[Reporting] BATCH[cyberbatch] end MKT --> APP CDU -.-> APP APP --> REG1 REG1 --> REG2 FAC1 --> REG2 REG2 --> FAC2 FAC2 --> LEC FAC2 --> ADOBE REG2 --> BUR BUR --> PAY REG2 --> SVC REG2 --> ACC REG2 --> LIB FAC2 --> REP BUR --> REP BATCH -.-> REP

2. Functional breakdown by desk

PHPMaker apps under cyberjaya/campus/<desk>/ plus Laravel add-ons — ADR-1 SoR.

Functional structure

Domains map to folders; all share cmscbj.

mindmap
  root((Cyberjaya CMS
MYS-CYB · ADR-1)) Academic registry faculty lecturer lec cdu Student life services accommodation stdfile studentfile siu library Commercial bursary marketing payment Compliance icu icupdpa cmsadminsetup cms_inquiry Cross-cutting reporting training studentrecords cyberbatch

Module catalogue

Desk Title Primary job Key tables / signals
registry/ Registry Management System 1.0 Applications, student register, terms, forms, letters, graduation, transcripts, KDN/eIPTS app_*, r_student, r_stdprogram, r_stdofferletter*
faculty/ Faculty Management System 1.0 Schools, modules, lecturers, classrooms, classes, exam timetable, inventory, senate f_program, f_module, f_class, f_lecturer, f_term
bursary/ Bursary Management System 1.0 Fee catalog, invoices/receipts, payment verification, visa fees, incentives, outstanding b_statement*, b_invoice*, b_payment*, b_receipt*, b_Update_*
lecturer/ Lecturer Portal 1.0 Notices, profile, supervised students, module view, forms, streaming link f_modulemat, Adobe Connect link
marketing/ Marketing Management System 1.0 Applications, pre-admission, agents, incentives, recruitment / online agent reports app_applicationform*, m_agent, Agent* SPs
services/ Student Services Management System 1.0 Visa/VAL/EMGS, medical, insurance, international status, SSD letters w_visa, r_stdimmigration, EMGS/SSD/KDN tables
accommodation/ Accommodation System 1.0 Dorms, rooms, pricing, tenants, breakfast card acc_dorm, acc_room, acc_occupant
cdu/ AQA Management System 1.0 Entry requirements, English/foreign quals, MQA/KPT, programme compliance Entry / accreditation desks, ier_*
icu/ Internal Compliance Unit Staff list, PDPA documents / compliance ICU menus + Laravel PDPA
siu/ Student Info Update System Controlled student-info update, letters, transcripts SIU update paths
library/ Library 1.0 Population view, eLibraries r_elibrary
reporting/ Campus Reporting System Cross-desk reports (finance, attendance, enrolment, scholarships, portal status) Report views / extracts
studentrecords/ Students Records Student list views r_student list surfaces
stdfile/ · studentfile/ Student File System Document / file dossiers (KDN, MyQuest, SETARA variants) Document dossier trees
lec/ Limkokwing English Center 2.0 LEC students, marks, batch enrolment, summer camp LEC enrolment / marks
training/ Training 1.0 Staff training enrolment / requests t_enrollment, t_enrollrequest
cmsadminsetup/ Admin setup User levels / system setup (PHPMaker admin) Security / user-level tables
cms_inquiry/ Inquiry CMS inquiry desk Inquiry forms
payment/ Payment (Laravel) Online / counter payment receipts, parking-related objects Laravel receipt / collection
icupdpa/ ICU PDPA (Laravel) PDPA compliance workflows PDPA document workflows

3. Core process flows

3.1 Admissions & registry

Agent / online application → enrol

Marketing/Registry desks + Agent* stored procedures.

flowchart LR
  Agent[Agent / Online app] --> Form[app_applicationform]
  Form --> Docs[app_document / app_docfile]
  Docs --> Review[Registry / Marketing review]
  Review --> Pre[app_preoffer]
  Pre --> Offer[r_stdofferletter]
  Offer --> Enrol[Enrol r_student]
  Enrol --> Prog[r_stdprogram]
          

3.2 Academic term cycle

ProgramsAllowedToRegister → modules → fees / marks

Atomic with triggers; finish with bursary student refresh.

flowchart TD
  Gate[ProgramsAllowedToRegister] --> Sem[Insert/update r_stdsemester]
  Sem --> Mod[Insert/update r_stdmodule]
  Mod --> Trig[Fees / registration triggers]
  Trig --> Upd[b_Update_Student]
  Upd --> Out[AccOutstanding / CGPA consistency]
  Mod --> Att[r_stdattendance / Adobe]
  Mod --> Mark[b_Update_Student_Mark]
          

Do not bypass b_Update_Student (and related mark/billing variants) when mutating registration or balances — overnight batch and desk UIs assume these procedures keep outstanding and academic aggregates consistent.

3.3 Finance & payment

Proof → b_paymentverification → receipts

Proof ≠ payment. Bursary verifies; Laravel payment app may issue receipts.

flowchart LR
  Stu[Student uploads proof] --> PV[b_paymentverification]
  PV --> Staff[Bursary review]
  Staff -->|approve| Rec[b_receipt / b_receiptdetail]
  Staff -->|reject| Back[Student notified]
  Rec --> Stmt[b_statement / AccOutstanding]
  PayApp[Laravel payment/] -.-> Rec
          

3.4 Student life — visa / accommodation

Services EMGS/KDN + housing

Services desk owns immigration ops; accommodation owns dorms/occupancy.

flowchart TB
  STU[(r_student)] --> SSD[Services desk]
  SSD --> VISA[(w_visa / r_stdimmigration)]
  SSD --> EMGS[EMGS STAR / VAL / KDN reports]
  STU --> ACC[Accommodation desk]
  ACC --> ROOM[(acc_dorm / acc_room / acc_occupant)]
  BATCH[cyberbatch VisaReport / Accommodation] -.-> VISA
  BATCH -.-> ROOM
          

4. Integrations

External and cross-system touchpoints in the Cyberjaya package. No TEF / DTEF government scholarship admission API (Botswana-only pattern).

IntegrationEvidenceRole / CAP note
api_student_* / api_faculty_* 6 named SPs in dump Legacy hooks — discovery seed for CAP-53, not Raisd OpenAPI
portal_r_*_cyberjaya Student / programme / semester snapshot tables Nightly portal sync dumps; login gating via portal.sql
classroom.limkokwing.net Adobe Connect tables + lecturer streaming link Live class attendance / recordings
cmssupport email Outbound Limkokwing CMS-support patterns Do not hard-wire support hosts into Raisd
EMGS / KDN Services desk + VisaReport batch; ~205 immigration-related table names Malaysia international-student ops — campus-local
Laravel payment/ cyberjaya/campus/payment/ Receipts / collection beside b_* ledger
Laravel icupdpa/ cyberjaya/campus/icupdpa/ PDPA compliance workflows
cyberbatch nightly cyberjayabatchnight*.sh Stop httpd → domain SQL → portal dump → start
S3 / backup scripts CYBERJAYA-SCRIPT/ Ops backups — not feature surface
TEF / DTEF Absent Do not invent; Botswana owns tef.gov.bw pattern

5. Physical ERD

Logical view of real MySQL tables from the Cyberjaya structure dump. Physical keys only — not the Raisd canonical model. Contrast Raisd ERD. Legacy URL erd.html redirects here.

5.1 Core student

r_student · personal · programme · semester · module

r_student is wide (100+ columns), including AccOutstanding and LoginActive.

erDiagram
  r_student {
    int StudentID PK
    string LoginActive
    decimal AccOutstanding
    string StdPortalActive
  }
  r_stdpersonal {
    int StudentID PK, FK
  }
  r_stdprogram {
    int StdProgramID PK
    int StudentID FK
    int ProgramID FK
  }
  r_stdsemester {
    int StdSemesterID PK
    int StdProgramID FK
    int TermID FK
  }
  r_stdmodule {
    int StdModuleID PK
    int StdSemesterID FK
    int ModuleID FK
  }
  r_student ||--|| r_stdpersonal : "StudentID"
  r_student ||--o{ r_stdprogram : "StudentID"
  r_stdprogram ||--o{ r_stdsemester : "StdProgramID"
  r_stdsemester ||--o{ r_stdmodule : "StdSemesterID"
          

5.2 Admissions

Application → documents → offer → enrol

Also: app_applicationformonline, app_preoffer.

erDiagram
  app_applicationform {
    int ApplicationID PK
  }
  app_document {
    int ApplicationID FK
  }
  app_preoffer {
    int ApplicationID FK
  }
  r_stdofferletter {
    int StudentID FK
    int ApplicationID FK
  }
  r_student {
    int StudentID PK
  }
  app_applicationform ||--o{ app_document : "ApplicationID"
  app_applicationform ||--o| app_preoffer : "ApplicationID"
  app_applicationform ||--o| r_stdofferletter : "ApplicationID"
  r_student ||--o{ r_stdofferletter : "StudentID"
          

5.3 Academic (faculty structures)

Programme · module · class · term · lecturer · materials

Student registrations reference these via ProgrammeID / ModuleID / TermID.

erDiagram
  f_program {
    int ProgramID PK
  }
  f_module {
    int ModuleID PK
  }
  f_class {
    int ClassID PK
    int ModuleID FK
    int TermID FK
  }
  f_term {
    int TermID PK
  }
  f_lecturer {
    int LecturerID PK
  }
  f_modulemat {
    int ModuleID FK
  }
  f_program ||--o{ f_module : "curriculum"
  f_module ||--o{ f_class : "ModuleID"
  f_term ||--o{ f_class : "TermID"
  f_lecturer ||--o{ f_class : "teaches"
  f_module ||--o{ f_modulemat : "ModuleID"
          

5.4 Finance (bursary)

Statement · invoice · payment · receipt · verification

Laravel payment/ sits beside these ledger objects.

erDiagram
  r_student {
    int StudentID PK
    decimal AccOutstanding
  }
  b_statement {
    int StudentID FK
  }
  b_invoicedetail {
    int StudentID FK
  }
  b_payment {
    int StudentID FK
  }
  b_receipt {
    int StudentID FK
  }
  b_paymentverification {
    int StudentID FK
  }
  r_student ||--o{ b_statement : "StudentID"
  r_student ||--o{ b_invoicedetail : "StudentID"
  r_student ||--o{ b_payment : "StudentID"
  r_student ||--o{ b_receipt : "StudentID"
  r_student ||--o{ b_paymentverification : "StudentID"
          

5.5 Attendance

r_stdattendance · f_attend*

Also Adobe Connect attendance tables for streaming classes.

erDiagram
  r_student {
    int StudentID PK
  }
  r_stdmodule {
    int StdModuleID PK
    int StudentID FK
  }
  r_stdattendance {
    int StudentID FK
    int StdModuleID FK
  }
  f_attenddatemod {
    int ModuleID FK
  }
  r_student ||--o{ r_stdattendance : "StudentID"
  r_stdmodule ||--o{ r_stdattendance : "StdModuleID"
  f_attenddatemod ||--o{ r_stdattendance : "session"
          

5.6 Immigration

w_visa · r_stdimmigration

Services desk also owns EMGS/KDN/SSD reporting tables (~205 immigration-related names in dump).

erDiagram
  r_student {
    int StudentID PK
  }
  w_visa {
    int StudentID FK
  }
  r_stdimmigration {
    int StudentID FK
  }
  r_student ||--o{ w_visa : "StudentID"
  r_student ||--o| r_stdimmigration : "StudentID"
          

5.7 Accommodation

acc_dorm · acc_room · acc_occupant

Full housing ops including checkout, extend occupancy, breakfast card.

erDiagram
  acc_dorm {
    int DormID PK
  }
  acc_room {
    int RoomID PK
    int DormID FK
  }
  acc_occupant {
    int OccupantID PK
    int RoomID FK
    int StudentID FK
  }
  r_student {
    int StudentID PK
  }
  acc_dorm ||--o{ acc_room : "DormID"
  acc_room ||--o{ acc_occupant : "RoomID"
  r_student ||--o{ acc_occupant : "StudentID"
          

5.8 Portal sync & login gating

portal_r_student_cyberjaya + LoginActive

Also programme/semester snapshot tables; r_studentportaldoc, r_studentblockportal.

erDiagram
  r_student {
    int StudentID PK
    string LoginActive
    string StdPortalActive
    decimal AccOutstanding
  }
  portal_r_student_cyberjaya {
    int StudentID PK
  }
  portal_r_studentprogram_cyberjaya {
    int StdProgramID PK
    int StudentID FK
  }
  portal_r_studentprogramsemester_cyberjaya {
    int StdSemesterID PK
    int StdProgramID FK
  }
  r_student ||--o| portal_r_student_cyberjaya : "sync"
  r_student ||--o{ portal_r_studentprogram_cyberjaya : "sync"
  portal_r_studentprogram_cyberjaya ||--o{ portal_r_studentprogramsemester_cyberjaya : "sync"
          

Database names also seen: campus2_cyberjaya, portalcyberjaya. Legacy portal sync is not the Raisd OpenAPI contract — use as discovery for CAP-53 only.

6. Data-flow diagrams (DFD)

How data moves between external actors, Cyberjaya desks, cmscbj, portal sync, EMGS/KDN, and nightly batch — without a government scholarship endpoint. Legacy URL flows.html redirects here.

6.1 Context diagram (Level 0)

External entities ↔ Cyberjaya CMS

Staff desks share one SoR; portals and batch refresh beside them.

flowchart TB
  APPLICANT([Applicant / agent])
  STUDENT([Student])
  STAFF([Registry · Faculty · Bursary · Services · …])
  EMGS([EMGS / KDN])
  CLASS([classroom.limkokwing.net])
  SUPPORT([cmssupport email])
  CMS[["Cyberjaya CMS
PHPMaker + Laravel + cmscbj"]] APPLICANT -->|application / docs| CMS STUDENT -->|portal / proof| CMS STAFF -->|operational writes| CMS CMS -->|letters / statements| APPLICANT CMS -->|LoginActive / sync| STUDENT CMS -->|visa / status| EMGS CMS -->|streaming attendance| CLASS CMS -->|email / push| SUPPORT

6.2 Admissions → registry

Agent / online app → offer → enrol

Triggers on app_applicationform / r_stdofferletter.

flowchart LR
  EXT([Applicant / Agent]) --> APP[Marketing / Registry]
  APP --> FORM[(app_applicationform*)]
  FORM --> DOC[(app_document)]
  DOC --> OFF[(r_stdofferletter)]
  OFF --> STU[(r_student / r_stdprogram)]
  STU --> ACAD[Faculty structures]
  STU --> FIN[Bursary fee plan]
          

6.3 Academic term

Structure → modules → attendance → results

ProgramsAllowedToRegister, b_Update_Student_Mark*, Adobe attendance.

flowchart LR
  FAC[Faculty / Lecturer
term · structure] --> ENR[(r_stdmodule)] ENR --> TT[Timetable / attendance] ENR --> ASS[Assessment marks] ASS --> RES[(results / CGPA)] RES --> REP[Reports / BOE] TT -.-> ADOBE[Adobe Connect]

6.4 Finance & payment

Ledger path + Laravel payment

No TEF admission queue — contrast Botswana DTEF.

flowchart TB
  STU[(r_student)] --> BUR[Bursary desk]
  BUR --> LED[(b_invoice / b_payment / b_receipt)]
  LED --> PV[b_paymentverification]
  PAY[Laravel payment/] -.-> LED
  BUR --> SP[["b_Update_Student*"]]
  SP --> STU
          

6.5 Nightly batch (cyberbatch)

cyberjayabatchnight*.sh

Order matters — bursary and portal gating depend on earlier refreshes.

flowchart TD
  A[Stop httpd] --> B[Registry jobs]
  B --> C[Attendance]
  C --> D[Examination]
  D --> E[Accommodation]
  E --> F[Bursary]
  F --> G[SSD]
  G --> H[VisaReport]
  H --> I[portal]
  I --> J[portalcontact]
  J --> K[report]
  K --> L[cleanup]
  L --> M[Start httpd]
  M --> N[mysqldump portal sync exports]
          

7. Database — tables, procedures, triggers & views

Derived from cmscbj structure dump plus SP / Triggers / Views SQL (CMS_Cyberjaya_SP_23092026.sql, CMS_Cyberjaya_Triggers_23092026.sql). Legacy URL database.html redirects here.

1942 tables 318 SPs 38 functions 239 triggers 655 views

Domain table signals

SignalApprox.Examples
Temp / scratch~625temp_* (~395), tmp_* (~230)
Student r_*~233r_student, r_stdpersonal, r_stdsemester, r_stdmodule
Misc / legacy tbl_*~165historical / utility tables
Academic f_*~135f_program, f_module, f_class, f_lecturer
Reports rep_*~69population / enrolment extracts
Finance b_*~66b_invoice*, b_payment*, b_receipt*
Visa / welfare w_*~49w_visa, insurance, medical
KDN / eIPTS~87kdn_* (~47), eipts* (~40)
Survey / notices s_*~39s_notice, s_questionnaire, s_letter
Admissions app_*~38app_applicationform, app_preoffer, app_document
Accommodation acc_*~22acc_dorm, acc_room, acc_occupant
Adobe Connect / portal syncfewattendance · portal_r_student_cyberjaya

Stored procedure categories (318)

CategoryApprox.Role
Agent / online application~56Agent portal search/submit/payment/accommodation
sp_* helpers~118Dashboards, timetables, transcripts, online enrolment
Intake / population reports~50fresh/returning/projected intake
b_Update_*~29Bursary student / mark / billing refresh
Visa / immigration~12EMGS compare, KDN generate, visa expiry
api_student_* / api_faculty_*6Legacy API-named helpers for CAP-53 discovery
Attendance / marks / enrol~10LEC, transfer, ProgramsAllowedToRegister, …
Other~38CGPA helpers, MPWA, temp/scratch

Highlights — api_*, Agent*, b_Update_*

FamilyExamplesNote
api_* (6) api_student_login_info, api_student_module_info, api_student_program_info, api_student_semester_info, api_faculty_list, api_faculty_program_list Not Raisd Portal API — discovery only
Agent* (~56) AgentSubmitApplication, AgentInsertPayment, AgentFetchAccommodation, … Online agent application surface
b_Update_* (~29) b_Update_Student, b_Update_Student_Mark, b_Update_billing, b_Update_Accommodation Do not bypass on registration / balance writes

Triggers (~239 on ~107 tables)

Timing mix: BEFORE INSERT ~68, AFTER UPDATE ~61, AFTER INSERT ~56, BEFORE UPDATE ~52. Hot tables with 4 triggers each include r_student, r_stdprogram, r_stdsemester, r_stdpersonal, app_applicationform, w_visa, r_stdofferletter.

Example — r_student AFTER INSERT. Seeds related rows (e.g. r_starter, contacts / personal structures). Any CAP-53 enrol path that inserts into r_student must tolerate these side-effects.

Machine catalogs

8. Raisd mapping — CAP-53 / ADR-1

Cyberjaya is the ADR-1 launch SoR. Raisd portals never talk to MySQL directly; Live writes succeed only after CMS acknowledgment via CAP-53.

Desks → Raisd portals

Staff desks stay on CMS; portals collapse UX onto Portal API.

flowchart TB
  subgraph Old["Existing Cyberjaya CMS"]
    direction TB
    R[Registry]
    F[Faculty]
    B[Bursary]
    L[Lecturer Portal 1.0]
    M[Marketing]
    S[Services / SSD]
    A[Accommodation]
    X[CDU · ICU · Library · …]
    PAY[Laravel payment]
    ICU[Laravel icupdpa]
    DB[(cmscbj MySQL)]
    R --> DB
    F --> DB
    B --> DB
    L --> DB
    M --> DB
    S --> DB
    A --> DB
    X --> DB
    PAY --> DB
    ICU --> DB
  end

  subgraph New["Control plane"]
    AP[Applicant portal]
    SP[Student portal]
    LP[Lecturer portal]
    ST[Staff portal]
    API[Portal API]
    ACL[CMS ACL CAP-53]
    AP --> API
    SP --> API
    LP --> API
    ST --> API
    API --> ACL
  end

  ACL -->|Live writes / reads| DB
          
CMS surfaceRaisd portalFlag
app_* / Marketing / RegistryApplicant + StaffADR-1 SoR — applicant UX new, ops on CMS
Registry / Faculty / LecturerStudent + Lecturer + StaffReuse r_* / f_*; honour LoginActive
Bursary + Laravel paymentStudent Finance / Staff BursaryCAP-45–48; do not bypass b_Update_*
Services EMGS/KDNStaff Services + student viewCAP-50 — campus-local immigration
AccommodationStaff + student requestCAP-52
api_student_* / portal syncPortal API ACLDiscovery only — not OpenAPI contract
TEF / DTEF—Not applicable to Cyberjaya

9. Campus comparison — all aspects

LUCT CMS family dumps side by side. Cyberjaya remains the deep E2E reference; Lesotho is M4 pilot; Botswana, Eswatini, Cambodia, and Sierra Leone are M5 expansion references.

Product family

Shared EMS DNA; different depth and campus-local integrations.

flowchart TB
  FAMILY["LUCT CMS family
PHPMaker · r_/f_/b_/app_*"] CYB["Cyberjaya
cmscbj · E2E SoR ref"] LES["Lesotho
campus2_lesotho · M4 pilot"] BWA["Botswana
cmsbotswana · DTEF"] ESW["Eswatini
campus2_eswatini · ssb"] KH["Cambodia
campus2_cambodia · Limkokwing"] SLE["Sierra Leone
ems_sierraleone · CMS-ICA"] RAISD["Raisd portals
Portal API · CAP-53"] FAMILY --> CYB FAMILY --> LES FAMILY --> BWA FAMILY --> ESW FAMILY --> KH FAMILY --> SLE LES -->|M4 acceptance| RAISD CYB -.->|M5 expansion| RAISD BWA -.->|M5 expansion| RAISD ESW -.->|M5 expansion| RAISD KH -.->|M5 expansion| RAISD SLE -.->|M5 expansion| RAISD
AspectCyberjayaBotswanaSierra Leone
Dump date23 Sep 202624 Sep 202623 Sep 2026
Databasecmscbjcmsbotswanaems_sierraleone
UI brand[MYS-CYB] LUCT CMSCMS 0.9a / BWA-GBECMS-ICA V 1.0
Tables~1,942713345 (~137 non-temp)
Stored procedures318 (+38 fn)46 (+15 fn)6
Triggers~23915791
Views6554079
Desks~20 campus apps + Laravel14 under botswana/campus/7 under sierraleone/
Admissions prefixapp_*app_*ac_*
Gov scholarship API—DTEF → tef.gov.bw—
Portal API hooksapi_student_* + portal_*_cyberjayaapi_* + portal_*_botswanaNot in dump
Laravel add-onspayment + icupdpaNot in dumpNot in dump
Batch foldercyberbatch/botsbatch/sleonebatch/ empty
Accommodation / libraryYesYesNo desks in package
ADR-1 launch SoRYesNo — M5No — M5
Pages hubthis pageold-cms-botswana/old-cms-sierra-leone/

Lesotho — pilot feature analysis

M4 acceptance campus (Working Group, 3 Oct 2026). Newer Admin/Student CMS reverse-engineered from screenshots (NMDS, LGCSE, graduation clearance, student portal). Old CMS dump pending — family tree closer to Botswana / Cyberjaya (Vara).

Pilot / M4 Screenshot SoT NMDS + LGCSE 369 tables · CAP-53

Eswatini — LUCT CMS subsection

Sister LUCT CMS dump campus2_eswatini (legacy batch name swaziland). Mid-size PHPMaker sibling for M5 expansion — portal_*_eswatini + assist codes ssb / limkokwing. Not the Lesotho M4 acceptance SoR.

DB campus2_eswatini 472 tables 70 triggers Dump 5 Oct 2026

Also under LUCT CMS in the top nav → Eswatini group.

Cambodia — LUCT CMS subsection

Sister LUCT CMS dump campus2_cambodia (+ nightly export DB portalcambodia). Mid-size PHPMaker sibling for M5 expansion — portal_*_cambodia + assist provider Limkokwing. Not the Lesotho M4 acceptance SoR.

DB campus2_cambodia 481 tables 83 triggers Dump 7 Oct 2026

Also under LUCT CMS in the top nav → Cambodia group.

Botswana — LUCT CMS subsection

Sister campus dump cmsbotswana (BWA-GBE). Closest LUCT family match to Cyberjaya for M5 expansion — plus campus-local DTEF → tef.gov.bw scholarship sync. Also the family-tree hint for Lesotho’s old CMS (Vara). Pilot acceptance campus is Lesotho, not Cyberjaya.

DB cmsbotswana 713 tables TEF.gov.bw Dump 24 Sep 2026

DTEF notes: botswana-dtef-scholarship-sync.md. Also under LUCT CMS in the top nav → Botswana group.

Sierra Leone — LUCT CMS subsection

Sister EMS dump ems_sierraleone (UI brand CMS-ICA V 1.0). Thinner LUCT-family sibling for M5 expansion — admissions on ac_*, six calculator SPs, no TEF government sync in this package. Not the launch SoR (ADR-1 remains Cyberjaya).

DB ems_sierraleone 345 tables 6 SPs · 91 triggers Dump 23 Sep 2026

Also under LUCT CMS in the top nav → Sierra Leone group.