Applicant portal

Document: SDD-04
Status: Working draft
Date: 18 September 2026
Milestone: Admissions launch (M2)

1. Purpose

Let a prospective student create an account, submit an application with evidence and declarations, track status, view an offer, and accept enrolment. Registry remains the decision owner. Marketing may publish announcements; it does not issue offers.

2. Actors

3. Primary flow

sequenceDiagram
  actor A as Applicant
  participant P as Applicant portal
  participant API as Portal API
  participant CMS as Existing CMS
  actor R as Registry

  A->>P: Sign in / create account (CAP-01)
  P->>API: Provision applicant
  API->>CMS: Create or match identity
  A->>P: Complete application (CAP-02)
  A->>P: Upload evidence (CAP-03)
  A->>P: Accept policies (CAP-55)
  P->>API: Submit application + files
  API->>CMS: Persist application
  R->>CMS: Review, qualification checks, offer (CAP-03/05/06/07)
  A->>P: Track status, view offer, accept (CAP-07)
  P->>API: Accept enrolment
  API->>CMS: First enrolment record

4. Capabilities

ID Feature Frontend Design notes
CAP-01 Applicant sign-in and account access Not started Same identity family as student login; role = Applicant until enrolment. Confirm old CMS auth.
CAP-02 Online application form Not started Minimum journey and required fields per campus/programme. Campus requested.
CAP-03 Upload documents and English-entry evidence Not started Evidence rules are programme/country specific. Bytes must persist.
CAP-07 Track application, view offer, accept enrolment Not started Confirm whether old CMS already exposes this to applicants.
CAP-16 Applicant announcements and admissions updates Not started Campus requested. Marketing publishes; Registry owns decisions.
CAP-35 Accessible application forms and assistance Not started Keyboard, assistive tech, assistance path.
CAP-36 Mobile online-registration shell Not started (mobile) Launch requirement. Not a native app.
CAP-55 Applicant policies and declarations Not started Campus requested. Capture acceptance, version, timestamp.

Staff counterparts live in SDD-07: CAP-03, 05, 06, 07, 16, 44.

5. Data (logical)

Entity Key fields Source
ApplicantAccount identity, contact, auth subject CMS / IdP
Application programme, intake, campus, status CMS
EvidenceObject type, file id, checksum, uploaded at File store + CMS metadata
Declaration policy version, accepted at CMS
Offer conditions, expiry, decision CMS
Enrolment student id, programme, start CMS

Statuses at minimum: draft, submitted, under review, offer, accepted, enrolled, rejected, withdrawn.

6. Rules

7. Current baseline

No applicant signup, application, intake-choice, or application-status route exists (src/app/routes.ts). Enrolled-student qualification records in Profile are not an admissions flow.

Working frontend preview (2 October 2026): the unpaid fee summary uses the shared orange warning variant. Submitted Application Fee displays Transfer Proof only, while bank instructions remain in the editor. The two-row review table displays Department (Finance for Payment Proof, Registry for Document Check) as preview labels; Live reviewer routing is not implemented or confirmed by this UI. The completed Documents Checklist offers Create Application beside Edit Answers, opening the new application UI while retaining checklist state in memory. See Applicant preview guidance.

8. Acceptance (M2)

9. Open blockers

Confirm minimum applicant journey, evidence matrix per programme, old-CMS applicant tracking, and account provisioning. Owners TBC.

Local admissions/profile increment — 5 October 2026

Applicant's existing draft/submission/messages flow now uses a validated session-only mock Portal API. Student schema v4 aligns Personal, Academic and Documents through an explicitly accepted, versioned handoff; submission alone never enrols a student. Shared UI remains 0.6.1. Lesotho is the acceptance-pilot priority; existing Malaysian sample rules are retained without asserting Lesotho policy. Details: Applicant mock API, accepted handoff and backend prerequisites. Automated local gates do not establish hosted HTTP, physical-device or CMS integration. No hosted reseed is authorized by this increment. Validation errors remain beside fields with focus on the first invalid control; no page-wide validation list is shown.

Local development review increment — 5 October 2026

Applicant provides one development-only Admin Actions page with three isolated applicant scenarios (Fresh, completed unsubmitted draft, submitted approved), a shared dropdown, payment/document SummaryCards and reviewer conversation. Switching retains saved work and invalidates stale operations. Payment verification precedes document verification; completion sets Approved without offers, accepted-enrolment context or Student provisioning. Admin viewing never reads messages for the applicant; approved conversations are read-only on both sides. Production excludes its route, navigation, commands and synthetic fixtures. No HTTP/CMS integration is asserted. See Applicant mock operations.

Local enrolment acceptance increment — 6 October 2026

Approved Applicant applications can explicitly accept their first-preference Design enrolment through the shared confirmation popup. Submission starts with no automatic reviewer messages. The next simulated development login transfers accepted serializable data into a new isolated first-semester Student mock account/enrolment and opens existing Module Registration. Both portals use the same captured intake reference and existing curriculum/rules. No offer screens, live authentication, CMS provisioning, durable evidence transfer or backend deployment is implemented. Production and HTTP sessions exclude the simulation. Shared UI stays 0.6.1; Student schema stays 4 and admissions handoff stays version 1. See accepted handoff.

Automatic post-acceptance logout — 6 October 2026

Successful enrolment acceptance automatically logs out Applicant development mock sessions to the existing Sign in screen. The applicant explicitly clicks Sign in to open the existing new Student tab at Module Registration. Failed acceptance stays in its popup; failed logout preserves accepted status with Retry Sign Out, without accepting again. Session/scenario guards prevent stale transitions. Records, files and drafts remain until refresh. Production and HTTP sessions exclude this simulation; shared 0.6.1, contracts and Student bootstrap remain unchanged.

Review and letter actions — 8 October 2026

Document verification releases Eligibility while overall enrolment remains orange and Under review. Application Progress uses Step as the first column. Four ordered checks show Bursary payment, Quality Assurance documents, applicant confirmation and Registry Offer release. Only final enrolment acceptance completes the summary. Equal-width letter actions include icons; Preview opens a separate browser PDF tab and Download retains the issued filename. The generated PDF retains its DEMO marking. No hosted workflow or schema changes are introduced.

Prepared original-document synchronization — 12 October 2026

Original uploads and applicant-specific Student continuation are prepared and verified locally behind Demo capabilities. No hosted migration or deployment was performed. Admissions v2, DEV transport v3, Student schema 4 and shared 0.6.2 remain. The Bursary shortcut stays On hold.

Contracts, evidence mapping and deployment prerequisites

Checklist action widths — 6 October 2026

Documents Checklist uses equal-width Edit Answers and Create Application actions on phone, tablet and desktop through the existing shared PageActionBar slot. Navigation and checklist retention remain unchanged. Shared Popup trailing-action support is an unpublished candidate awaiting release authorization; Applicant still consumes 0.6.1 and its leave dialog is not yet changed.

Shared 0.6.2 and save before leaving — 6 October 2026

Released shared 0.6.2 adds an optional trailing Popup action. Applicant uses primary Save & Close after Keep Editing to save incomplete drafts before the originally blocked navigation; pending, failure/retry, duplicate and stale-session handling remain portal-owned. Student upgrades its pin with existing defaults intact. Graph schema 4, admissions handoff 1 and Demo/Live boundaries are unchanged.

Captured Cyberjaya research baseline

New registration procedures and frontend gap analysis remain research references. Lesotho is the first acceptance pilot; current Malaysian samples are retained. The implemented session-only mock API and acceptance/handoff do not establish Live offers, authentication or provisioning. See the canonical Applicant guidance and online-registration analysis.

Campus selection and two-stage enrolment — 7 October 2026

Local mock only: required campus and conditional Alumni student ID, optional English results, Bursary payment verification, QA Eligibility Letter release and applicant confirmation, then Registry Offer Letter release and final acceptance. Generated demo PDFs can be previewed/downloaded; only final acceptance signs out. The next explicit Sign in transfers an isolated accepted identity into Student Module Registration.

Handoff/envelope v2 carries campus and both confirmations/letters; v1 remains readable. Student Documents places Offer Letter first and Eligibility Letter second. Hosted HTTP authentication and supported methods remain unchanged; new hosted letter operations, real CMS provisioning and durable upload delivery require future service work. Shared package remains 0.6.2.