1. Where to start (first 30 minutes)
| Step | Action | Pass criteria |
|---|
| 1 | Open / (home / module explorer) | Page loads; modules searchable; Sign in goes to /auth/login |
| 2 | Open /auth/login directly | Login works without visiting home |
| 3 | Sign in as admin@vijaya.com / Pass@123 | Redirect to /crm/dashboard; sidebar shows school modules |
| 4 | Open Administration → Users & access | /crm/administration/users-access loads |
| 5 | Spot-check Admissions → Leads | List loads; open one lead if data exists |
| 6 | Sign out; sign in as student@vijaya.com | Sidebar shows portal items only (finance my-fees, LMS, etc.) |
| 7 | Sign out; sign in as platformadmin / Sampy@2026 | Tenants hub visible; school modules restricted per platform role |
After this, continue with §4 Global verification order or jump to a §5 flow relevant to your demo.
2. Prerequisites
Applications
| Component | Repo | Typical run |
|---|
| Web CRM | sms-web | npm run dev → http://localhost:3000 |
| API | sms-operation-service | Run Web.Api → configured API base URL in web env |
Database (PostgreSQL)
Run migrations in sms-operation-service/database/migrations/ in dependency order. Minimum for menu-based testing:
- Core IAM:
iam.sql, iam_data.sql
- Menu access:
add_iam_menu_access_rules.sql, add_iam_menu_access_scope.sql, iam_menu_permissions_seed.sql
- Portal patches:
add_finance_portal_menu_permission.sql, add_student_parent_portal_permissions.sql, add_employee_portal_and_role_menu_permissions.sql
- Demo users:
seed_demo_role_users.sql
After any permission/menu SQL change: users must log out and log in again.
Environment
- Web app must point at a running API with seeded tenant/org (demo org: Vijaya — see seed scripts).
- Browser: clear
localStorage if switching users causes stale permissions.
3. Demo accounts by role
Password for *@vijaya.com accounts: Pass@123 (see seed_demo_role_users.sql).
| Role | Username | Use for |
|---|
| Platform Admin | platformadmin | Sampy@2026 — tenants, IAM hub |
| School Admin | admin@vijaya.com | Full school configuration & modules |
| Principal | principal@vijaya.com | Leadership views, admissions, reports |
| Teacher | teacher@vijaya.com | Academics teach, attendance, exams, LMS |
| Finance Admin | finance@vijaya.com | Invoices, payments, fee masters |
| HR Admin | hr@vijaya.com | Employees, leaves, payroll |
| Maintenance | maintenance@vijaya.com | Inventory, assets, maintenance, facilities |
| Transport | transport@vijaya.com | Routes, vehicles, assignments |
| Security | security@vijaya.com | Gate passes, visitors |
| Student | student@vijaya.com | Student portal (fees, LMS, exams) |
| Parent | parent@vijaya.com | Parent portal, transport GPS |
| Guardian | guardian@vijaya.com | Guardian portal (similar to parent) |
Login page includes Assign buttons to fill credentials quickly.
4. Global verification order
Test modules in this order so masters exist before transactions. Skipping ahead causes empty dropdowns and failed saves.
| Phase | Module area | Start route | Why first |
|---|
| 0 | Home & auth | /, /auth/login | Navigation and role menus |
| 1 | Platform (if applicable) | /crm/tenants/manage-tenants | Multi-tenant only |
| 2 | Administration & IAM | /crm/administration/users-access | Users, roles, menu access, school settings |
| 3 | Admissions | /crm/admissions/leads | Pipeline before enrolled students |
| 4 | Students | /crm/student/students | Master data for academics & finance |
| 5 | Academics setup | /crm/academics/academic-year | Years, grades, sections, mappings |
| 6 | Finance masters | /crm/finance/fee-plans | Fee structure before invoices |
| 7 | HRM masters | /crm/hrm/employees | Staff before payroll |
| 8 | Operations stack | See operations-stack-guide.md | Inventory → procurement → assets → maintenance → facilities |
| 9 | Academics daily | /crm/academics/timetables, attendance | Teaching operations |
| 10 | Finance transactions | /crm/finance/invoices, /crm/finance/payments | Billing & collection |
| 11 | Exams & LMS | /crm/exams/exams, /crm/lms/courses | Assessment & learning |
| 12 | Campus services | Transport, hostel, medical, security | Operational campus |
| 13 | Communication | /crm/communication/notifications | Broadcasts & events |
| 14 | Portals | Student / parent / employee logins | Self-service |
| 15 | Reports | /crm/reports/generated-reports | Cross-module outputs |
5. End-to-end flows (cross-module)
These flows validate real school processes, not isolated CRUD screens.
Flow A — Lead to enrolled student (Admissions → Student)
| # | Step | Route / action | Verify |
|---|
| A1 | Create lead | /crm/admissions/leads → New | Lead appears in list |
| A2 | Add follow-up | Lead detail → follow-ups | Due date, assignment |
| A3 | Move stage | Stage transition on lead | History recorded |
| A4 | Upload document | Lead documents | Status = uploaded / verified |
| A5 | Record admission payment (if used) | /crm/admissions/payments | Linked to lead |
| A6 | Convert to student | Lead → convert | Student record created |
| A7 | Open student | /crm/student/students | Enrollment, parents visible |
Doc: ADMISSIONS_MODULE_README.md · STUDENT_MODULE_GUIDE.md
Flow B — Fee billing and payment (Finance)
| # | Step | Route | Verify |
|---|
| B1 | Fee heads & groups | /crm/finance/fee-heads, fee groups | Masters saved |
| B2 | Fee plan | /crm/finance/fee-plans | Plan linked to grades/year |
| B3 | Fee assignment / overrides | /crm/finance/fee-assignments | Student/plan mapping |
| B4 | Generate invoice | /crm/finance/invoices | Invoice lines match plan |
| B5 | Record payment | /crm/finance/payments | Allocation to invoice; balance reduced |
| B6 | Student portal | Login student@vijaya.com → /crm/finance/my-pending-fees | Sees own dues only |
Doc: FINANCE_TEST_EXECUTION_ORDER.md · FINANCE_MODULE_GUIDE.md
| # | Step | Route | Verify |
|---|
| C1 | Academic year | /crm/academics/academic-year | Active year set |
| C2 | Grades & sections | academics grades/sections | Structure complete |
| C3 | Subject–teacher mapping | /crm/academics/subject-teacher-grade-section | Teacher assigned |
| C4 | Timetable | /crm/academics/timetables | Periods for class |
| C5 | Attendance | /crm/academics/student-attendance | Mark present/absent; saves |
| C6 | Teacher login | teacher@vijaya.com | Teach menus only where permitted |
Flow D — Staff hire → leave → payroll (HRM)
| # | Step | Route | Verify |
|---|
| D1 | Employee | /crm/hrm/employees | Create/edit employee |
| D2 | Leave policy & balance | leave rules, balances | Eligibility correct |
| D3 | Leave request | /crm/hrm/leaves | Approve/reject workflow |
| D4 | Payroll run | /crm/hrm/payroll-runs | Run created; pre-approval if enabled |
| D5 | Employee portal | teacher@vijaya.com → /crm/hrm/my-hr, my-leaves | Self-service only |
Doc: HR_MODULE_GUIDE.md · PAYROLL_MODULE_GUIDE.md
Flow E — Stock purchase to consumption (Operations)
| # | Step | Route | Verify |
|---|
| E1 | Product & warehouse | /crm/inventory/products, warehouses | Masters |
| E2 | Vendor & PO | /crm/procurement/vendors, PO | PO approved |
| E3 | MRN (receipt) | /crm/inventory/material-receipt-notes | Stock quantity increases |
| E4 | Stock issue | /crm/inventory/stock-issues | Issued qty reduces on-hand |
| E5 | Maintenance ticket + MRN | maintenance tickets, maintenance MRNs | Parts link to inventory |
Doc: operations-stack-guide.md · MAINTENANCE_FACILITIES_ASSET_MODULE_GUIDE.md
Flow F — Exam cycle
| # | Step | Route | Verify |
|---|
| F1 | Define exam | /crm/exams/exams | Exam + classes linked |
| F2 | Marks entry | /crm/exams/marks-entry | Marks saved per student |
| F3 | Report card | /crm/exams/report-card | Generates for student |
| F4 | Student view | student@vijaya.com → /crm/exams/my-exams | Own results only |
Doc: EXAM_MODULE_GUIDE.md
Flow G — LMS course delivery
| # | Step | Route | Verify |
|---|
| G1 | Course & chapters | /crm/lms/courses | Content structure |
| G2 | Enroll students | course enrollments | Student linked |
| G3 | Student learns | /crm/lms/my-enrollments, learning path | Progress updates |
| G4 | LMS exam (if used) | LMS exams under course | Attempt / score |
Doc: LMS_MODULE_GUIDE.md
Flow H — Transport & parent GPS
| # | Step | Route | Verify |
|---|
| H1 | Routes & vehicles | /crm/transport/routes, vehicles | Masters |
| H2 | Student assignment | /crm/transport/student-assignments | Student on route |
| H3 | Parent GPS | parent@vijaya.com → /crm/transport/gps-tracking/parent | Map / status loads |
Doc: TRANSPORT_FULL_REGRESSION_TEST_PLAN.md
6. Module verification checklists
For each module: (M) = master data, (T) = transaction, (R) = report/portal. Check UI loads (no console errors) and one create/save where applicable.
6.1 Dashboard
| Item | Route | Role |
|---|
| Dashboard widgets | /crm/dashboard | Any school user |
6.2 Administration & IAM
| Item | Route | Role |
|---|
| Users & access hub | /crm/administration/users-access | Admin |
| School settings | /crm/administration/school-settings/general | Admin |
| Menu access rules | users-access → menu access | Platform / tenant / org admin |
| Access catalog sync | .../access-catalog | Platform admin |
| Data export / jobs | /crm/administration/data-export | Admin |
| Item | Route |
|---|
| Manage tenants | /crm/tenants/manage-tenants |
| Organizations | /crm/tenants/organizations |
6.4 Admissions
| Item | Route | Type |
|---|
| Leads | /crm/admissions/leads | T |
| Follow-ups | /crm/admissions/follow-ups | T |
| Stages | /crm/admissions/stages | M |
| Bulk import | /crm/admissions/bulk-import | T |
| Reports | /crm/admissions/reports/* | R |
6.5 Students
| Item | Route |
|---|
| Student list & profile | /crm/student/students |
| Enrollment / promotion | student detail tabs |
6.6 Academics
| Item | Route |
|---|
| Academic year, grades, sections | /crm/academics/academic-year |
| Timetables | /crm/academics/timetables |
| Attendance | /crm/academics/student-attendance |
| Mappings | /crm/academics/subject-teacher-grade-section |
| Lesson logs / classwork | /crm/academics/classwork |
| Behaviour / anecdotes | /crm/academics/behaviour-logs, anecdotes |
6.7 Finance
| Item | Route |
|---|
| Fee masters | fee-heads, fee-groups, fee-plans, fee-assignments |
| Invoices & payments | /crm/finance/invoices, /crm/finance/payments |
| Wallets, refunds, expenses | respective finance routes |
| Finance reports | /crm/finance/reports/* |
| Portal | my-fee-structure, my-payments, my-pending-fees |
6.8 HRM & Payroll
| Item | Route |
|---|
| Employees, departments | /crm/hrm/employees |
| Attendance, leaves | /crm/hrm/leaves |
| Payroll runs | /crm/hrm/payroll-runs |
| Registers (PF, ESI, TDS, etc.) | /crm/hrm/*-registers |
| Portal | /crm/hrm/my-hr, /crm/hrm/my-leaves |
6.9 Operations stack
Follow numbered tables in operations-stack-guide.md:
- Inventory (UoM → products → MRN → stock movements)
- Procurement (vendors, POs)
- Assets (categories → assets → allocations → depreciation)
- Maintenance (templates → schedules → tickets → MRNs)
- Facilities (categories → blocks → rooms → technicians)
6.10 LMS, Library, Bookstore
| Area | Key routes |
|---|
| LMS | /crm/lms/courses, enrollments, my-enrollments |
| Library | /crm/library/books, /crm/library/circulation |
| Bookstore | /crm/bookstore/sales |
6.11 Exams & assignments
| Item | Route |
|---|
| Exams, marks | /crm/exams/exams, /crm/exams/marks-entry |
| Assignments | /crm/exams/assignments |
| Student | /crm/exams/my-exams, my-assignments |
6.12 Transport, Hostel, Medical, Discipline, Welfare, Counselling, Security
| Module | Start route |
|---|
| Transport | /crm/transport/routes |
| Hostel | /crm/hostel/hostels |
| Medical | /crm/medical/clinic-visits |
| Discipline | /crm/discipline/incidents |
| Welfare | /crm/welfare/welfare-notes |
| Counselling | /crm/counselling/assignments |
| Security | /crm/security/gate-passes |
Doc: DISCIPLINE_WELFARE_HEALTH_HOSTEL_MODULE_GUIDE.md
6.13 Communication & engagement
| Item | Route |
|---|
| Notifications, circulars | /crm/communication/notifications, circulars |
| Events, holidays | /crm/communication/events, holidays |
| Surveys, feedback | /crm/engagement/surveys |
| Student activities | /crm/student-activity/activities |
6.14 Reports hub
| Item | Route |
|---|
| Generated reports | /crm/reports/generated-reports |
| Templates | /crm/reports/report-templates |
7. Portal testing matrix
| Portal | Login | Must see | Must NOT see |
|---|
| Student | student@vijaya.com | My fees, my LMS, my exams | Full finance desk, IAM |
| Parent | parent@vijaya.com | Child fees, transport GPS, communication | HRM payroll, inventory |
| Employee (teacher) | teacher@vijaya.com | My HR, my leaves, academics teach | Platform tenants |
| Finance desk | finance@vijaya.com | Invoices, payments, fee masters | Unrelated HRM payroll config (unless granted) |
| # | Test | Expected |
|---|
| 1 | Remove a MENU:* permission from role in DB | Menu item hidden after re-login |
| 2 | Add org-level menu access rule | Overrides catalog for that org |
| 3 | platformadmin login | Only dashboard, profile, tenants, IAM — not full school ops |
| 4 | admin@vijaya.com | Broad school sidebar per org-type whitelist |
Doc: iam-menu-access-reference.md
9. Known gaps & doc index
| Topic | Note |
|---|
| Lead parent/student UI | Partial; see ADMISSIONS_MODULE_README.md |
| Finance depth | FINANCE_MODULE_TEST_CASES.md |
| Transport regression | TRANSPORT_FULL_REGRESSION_TEST_PLAN.md |
| Nav vs pages | Some routes exist without sidebar links — search under app/crm/**/page.tsx |
Module deep-dive docs
| Module | Guide |
|---|
| Admissions | ADMISSIONS_MODULE_README.md, ADMISSIONS_MODULE_COMPLETE_FUNCTIONALITIES.md |
| Students | STUDENT_MODULE_GUIDE.md |
| Finance | FINANCE_MODULE_GUIDE.md, FINANCE_TEST_EXECUTION_ORDER.md |
| HR / Payroll | HR_MODULE_GUIDE.md, PAYROLL_MODULE_GUIDE.md |
| Academics / Exams / LMS | EXAM_MODULE_GUIDE.md, LMS_MODULE_GUIDE.md |
| Operations | operations-stack-guide.md, MAINTENANCE_FACILITIES_ASSET_MODULE_GUIDE.md |
| Communication | COMMUNICATION_ENGAGEMENT_MODULE_GUIDE.md |
| IAM | iam-menu-access-reference.md, iam-menu-access-cheatsheet.md |
| Multi-tenant | MULTI_TENANT_SYSTEM_DOCUMENTATION.md |
Sign-off template
| Phase | Tester | Date | Pass / Fail | Notes |
|---|
| Prerequisites | | | | |
| Flow A (Admissions) | | | | |
| Flow B (Finance) | | | | |
| Flow C (Academics) | | | | |
| Flow D (HRM) | | | | |
| Flow E (Operations) | | | | |
| Portals | | | | |
Last updated: aligned with sms-web CRM routes and sms-operation-service feature domains.