Migration plan & milestones
End-to-end delivery and migration plan for Raisd portals on the existing Cyberjaya / LUCT CMS system of record, then progressive consolidation. Source of truth: SDD-03 (milestones), SDD-12 (hosting stages), SDD-14 (CMS vs portals), ADR-1–ADR-3. All dates remain TBC until the working group confirms them.
System-of-record posture
Confirmed Working Group (Aslam, 23 Sep 2026) and recorded as ADR-1.
| Horizon | What ships | System of record |
|---|---|---|
| M1–M4 (this phase) | Four portals + Portal API on existing campus CMS family; Lesotho first acceptance (3 Oct 2026) | Existing CMS — do not duplicate operational desks |
| M5+ | Campus expansion; remaining CMS capabilities; progressive consolidation | Migrate domain-by-domain only with ownership, cutover, rollback, and training agreed |
flowchart TB
subgraph phase ["This phase — M1 to M4"]
P[Four portals] --> API[Portal API]
API --> CMS[Campus CMS family SoR
Lesotho pilot first]
end
subgraph later ["Longer term — M5+"]
G[Verified gap] --> MIG[Migration strategy]
MIG --> U[Progressive unified CMS]
CMS -.->|retire desk only when ready| U
end
phase --> later
Milestone sequence
Order follows admissions-first product decisions and working-system dependencies. A milestone is when a capability must work, not when investigation begins. Detail: SDD-03.
flowchart LR M1[1. Confirm rules
and integration] --> M2[2. Admissions launch] M2 --> M3[3. Core student portal] M3 --> M4[4. Lesotho pilot
acceptance] M4 --> M5[5. Campus expansion
and remaining CMS]
| ID | Name | Target | Release condition (summary) | Hosting stage |
|---|---|---|---|---|
| M1 | Confirm rules and integration | TBC | Rules, API access, operating responsibilities agreed | Before stage 1 install |
| M2 | Admissions launch | TBC | Application-to-enrolment works with real records | Stage 2 |
| M3 | Core student portal | TBC | Student + staff/lecturer paths Live or on verified old CMS | Stage 3 |
| M4 | Lesotho pilot acceptance | TBC | Campus accepts pilot; training and ops ready | Stage 4 |
| M5 | Campus expansion and remaining CMS | TBC | Each campus accepts rollout; SoR moves only with written strategy | Stage 5 |
Kickoff and backend commitments: TBC.
M1 — Confirm rules and integration
| Target | TBC |
|---|---|
| Scope | Campus rules, named owners, legacy capabilities, integration access |
| Dependencies | Campus and backend owners identified; kickoff TBC |
| Release condition | Rules, API access and operating responsibilities agreed |
| Primary CAP | CAP-42 (copyright / provider operating controls) |
Not a UI milestone. Unblocks every later “Needs checking” row. Full text: SDD-03 §M1.
M2 — Admissions launch
| Target | TBC |
|---|---|
| Scope | Applicant registration, evidence, tracking, offers, Registry review, core applicant/student sign-in, mobile shell foundations |
| Dependencies | Agreed rules; working old-CMS admissions/authentication integration |
| Release condition | Application-to-enrolment works with real records; required staff workflows available through verified old CMS or new screens |
| Hosting | Stage 2 — same k3s node resized; wired to real CMS |
Must work end to end:
- Applicant account (CAP-01).
- Application + documents + declarations (CAP-02, CAP-03, CAP-55).
- Track / offer / accept (CAP-07).
- Registry review, qualification checks, offer, first enrolment (CAP-03, CAP-05, CAP-06, CAP-07).
- Marketing communications without owning the decision (CAP-16).
- Staff access via existing CMS unless a gap is verified (CAP-44).
- Portal API first slice (CAP-53).
- Auth, privacy, monitoring, backups (CAP-01, CAP-37, CAP-38, CAP-39).
- Accessible forms and mobile shell (CAP-35, CAP-36).
Student portal demo screens are not the release condition for M2.
M3 — Core student portal
| Target | TBC |
|---|---|
| Scope | Learning resources, timetable, assignment delivery, policies, core records, semester registration, with lecturer and staff support |
| Dependencies | Required student, teaching, file-delivery and finance APIs; approved content; staff workflows |
| Release condition | Student and staff journeys work end to end with durable records and agreed core mobile access |
| Hosting | Stage 3 — add edge node; deploy student + lecturer portals |
Student-only demo UI is insufficient. Lecturer publish/mark and staff approval paths for the same CAP IDs must be Live or explicitly served by the old CMS. Full text: SDD-03 §M3 · portals SDD-05 / SDD-06 / SDD-07.
M4 — Lesotho pilot acceptance
| Target | TBC |
|---|---|
| Scope | Test the integrated Lesotho pilot, train staff, obtain campus acceptance. Parity with Lesotho newer CMS (screenshot benchmark) and applicable government requirements. |
| Dependencies | Integrations, content, security, recovery, operational support ready |
| Release condition | Campus accepts the pilot and confirms applicable requirements, including verified existing-CMS or manual alternatives |
| Primary CAP | CAP-41 staff training and operating readiness |
| Hosting | Stage 4 — same two nodes; restore drill; no new product |
Full text: SDD-03 §M4. Approach: lesotho-pilot.md.
M5 — Campus expansion and remaining CMS
| Target | TBC |
|---|---|
| Scope | Expand campus coverage; remaining approved CMS/staff capabilities; start progressive consolidation toward a unified one-stop CMS where gaps are verified |
| Dependencies | Lesotho pilot accepted; campus-specific rules and existing capabilities verified; migration plan per domain before retiring a legacy desk |
| Release condition | Each campus accepts its rollout. Deferring new software never defers an applicable operating requirement. Any SoR move needs ownership, cutover, rollback, and training agreed |
| Hosting | Stage 5 — grow data node only when full |
Includes quizzes/exams, live class, library, visa, accommodation, scholarships, online payment gateway, study centres, remaining staff desks — prefer Portal API + verified old CMS first; rebuild or migrate only when the gap and migration strategy are explicit (SDD-14).
| Migration rule (M5+) | Detail |
|---|---|
| Verified gap only | Do not rewrite a working LUCT CMS desk without evidence it fails the CAP |
| Written strategy | Ownership, cutover, rollback, training before SoR moves |
| Domain-by-domain | Consolidate progressively; never big-bang CMS replacement |
| Default this phase | Staff ops stay on CMS; portals read/write via CAP-53 ACL |
Hosting & launch stages (SDD-12)
ADR-2: Singapore UltaHost; size follows the stage. ADR-3: k3s from the minimum. Existing CMS and mail stay off Kubernetes. Full sizing: SDD-12. Early throwaway Demo (not production): Vercel + Neon PoC.
Launch stages mapped to milestones
Each stage adds workloads; it does not replace the cluster. Replicas stay at 1 until a stage says otherwise.
| Stage | When | Cluster | What is running | Public names |
|---|---|---|---|---|
| 1. Minimum | Before admissions (after M1) | One k3s node (3 vCPU / 4 GB) | Ingress, applicant-portal, portal-api, Postgres, evidence volume | apply.raisd.co, api.raisd.co |
| 2. Admissions launch | M2 | Same node, resized (4 vCPU / 6 GB) | Stage 1 wired to real CMS; backup CronJob; staff-portal only if CMS gap verified | Same (+ staff.raisd.co if deployed) |
| 3. Core student | M3 | Add edge node; data node steps up | Add student-portal and lecturer-portal; ingress on edge | student.raisd.co, teach.raisd.co |
| 4. Pilot acceptance | M4 | Same two nodes; no resize | Restore drill from backup job; no new product | Unchanged |
| 5. Campus expansion | M5 | Grow data node only when full | Remaining portal features; not a second control plane | Unchanged until a campus outside SEA launches |
Server requirements (minimum per stage)
Do not skip ahead. Prices are 24-month UltaHost Singapore list rates (19 Sep 2026), not a quote.
| Stage | Nodes | Requirement | Smallest plan | Cluster total |
|---|---|---|---|---|
| 1 | 1 | 3 vCPU, 4 GB, 75 GB NVMe | VPS Professional ≈ $15.87/mo | 3 vCPU, 4 GB |
| 2 | 1 | 4 vCPU, 6 GB, 100 GB NVMe | VPS Enterprise ≈ $20.69/mo (resize; do not add a second) | 4 vCPU, 6 GB |
| 3 | 2 | Edge 3/4/75; Data 4/8/250 | Edge: 2nd Professional; Data: VDS POWER Plus ≈ $37.72/mo | 7 vCPU, 12 GB |
| 4 | 2 | Same as stage 3 | No new server | 7 vCPU, 12 GB |
| 5 | 2 | Data 8/16/450 only when 8 GB node is full | VDS POWER Premium ≈ $68.43/mo (data only) | 11 vCPU, 20 GB |
Critical path for Live (this phase)
- Confirm admissions staff can complete offer → first enrolment on old CMS (or document the gap).
- Deliver CAP-53 first slice: auth + applicant create/read + document metadata acknowledgment.
- Only then promote student Demo journeys that mutate registration or finance.
- Do not mark any CAP Live from frontend Demo alone.
- Do not rebuild working staff desks — Portal API + verified old CMS (SDD-14).
Near-term design rule (next two weeks)
Student portal v1 is deepest on M3 screens; product priority still puts M2 before M3.
- Freeze new student demo screens unless they are on the M2 critical path (auth, mobile shell, accessibility).
- Prioritise CAP-53, CAP-01, applicant CAP-02/03/07, and Registry old-CMS verification.
- Keep existing student demos, but label them Demo until wired.
Definition of done (any capability)
A capability is Live only when all of the following are true:
- Real data from the system of record, not a mock session.
- Durable save where the user can mutate data.
- Server-enforced permission for that role and campus.
- The paired staff/lecturer action exists in new UI or is verified in the old CMS.
- Accountable owner named.
- Core mobile accepted if the CAP is in PRODUCT-MOBILE.
- Country/campus operating checks in the next-action column are closed or explicitly waived.
Checklist counts by milestone
Re-counted from the live Working Group sheet on 19 Sep 2026 (unchanged from 18 Sep). Progress detail: SDD-13.
| Milestone | Rows | Dominant frontend status | Live |
|---|---|---|---|
| Confirm rules & integration (M1) | 1 | Not applicable | 0 |
| Admissions launch (M2) | 23 | Mostly not started. 4 of 18 applicable rows started, none Live | 0 |
| Core student portal (M3) | 51 | 16 started (student Demo/Partial). 35 not started, including lecturer and staff | 0 |
| Lesotho pilot acceptance (M4) | 1 | Not applicable (training) | 0 |
| Campus expansion & remaining CMS (M5) | 36 | 12 started. 22 applicable rows not started | 0 |