School Reference Public

Getting Started

How to stand up the ERPat School module: enable module_school, run per-tenant migrations, grant role permissions, seed the school year and sections, and take one learner from enrollment to a released report card.

Guide version: r1 Module version: 0.2.0 Updated: 2026-07-22 Estimated time: 9 min 2 views
START HERE

Getting Started

This page takes you from a fresh ERPat tenant to a working School module — enabled, migrated, permissioned, and seeded — and then walks one real learner all the way through: admission, enrollment, attendance, a released grade, an SF9-style report card, and a parent/student portal login. Do it once end-to-end and every other page in this guide will make sense.

????
The shape of the work. Steps 1–3 are a one-time administrator setup. Steps 4–5 are registrar setup you repeat each school year. Step 6 is the daily loop the whole staff lives in. Skim all six, then follow them in order — later steps depend on earlier ones (you can’t grade a learner who isn’t enrolled, and you can’t enrol into a school year that doesn’t exist).

Before you begin

Standing up the module is an administrator job. You need:

  • An ERPat tenant with an admin login (someone who can reach Settings → Manage Modules and the Roles editor).
  • Shell access to run one CLI command per tenant (php erpat migrate:modules).
  • A short list of the people and their jobs — so you can separate the grade encoder from the grade approver (this separation is enforced, see Step 2).

School depends on the Learn module (slug courses) only for the optional LMS bridge, which is fail-safe — you do not need Learn enabled to run admissions, attendance, grading, report cards, or the portals.


Step 1 — Enable the module & run migrations

The module is off until you enable it, and its database tables only exist after you migrate them onto each tenant.

  1. Turn on module_school

    Go to Settings → Manage Modules and enable School. This flips the module_school setting on for this tenant. The School group (graduation-cap icon, under the Academics category) then appears in the staff sidebar.

  2. Create the school_* tables on this tenant

    School ships 42 school_* tables, tracked in migrations_school. They are created per tenant, so run the module migrations against the tenant’s own database:

    php erpat migrate:modules
  3. Repeat for every tenant

    Run and verify the migration on each tenant database where School should be live. A tenant that has module_school on but hasn’t been migrated will show pages that error because the tables are missing.

⚠️
Per-tenant is not optional. The school_* tables are created per tenant — enabling the setting alone does not create them. Always run php erpat migrate:modules and confirm the tables exist on every tenant before letting staff in. (A core settings-seed migration ships the module_school flag and the portal/feature toggles; the per-tenant migration ships the tables.)

Step 2 — Grant permissions (and separate two of them)

Every School screen is gated. In the Roles editor, grant people the base school permission plus the per-page “Enabled” toggles their job needs. The full map lives in the Roles & Access Map; the essentials:

If they are a…Give them (beyond school)
Registrarschool_enrollment, school_learners, school_guardians, school_academics, school_reports (+ the matching _create/_update/_delete)
Teacher / Adviserschool_attendance (+ _update), school_grades (+ _update), and school_grade_release to submit grades
Principal / School headschool_grades and school_grade_approve to approve, release & make report cards; plus school_reports/school_export
Guidance / Clinicschool_support (+ _create/_update), the restricted school_child_protection and school_health
Front desk / Gateschool_visitors (+ _create)
????
Give school_grade_release and school_grade_approve to different people. The encoder who submits grades can never approve and release their own — segregation of duties is enforced in code. If one account holds both, that person still can’t self-approve a class they submitted. Assign the release permit to teachers/encoders and the approve permit to the school head only. Full reasoning: Roles & Access Map.

Step 3 — Configure School Settings

Open School Settings (school/settings, permission school_settings). Saving here is audited (update_settings). Set:

SettingWhat it does
school_parent_portal_enabledTurns the parent portal on/off independently.
school_student_portal_enabledTurns the student portal on/off independently.
school_visitor_pass_enabledShows or hides the Visitor Pass page.
school_default_grading_policyThe default grading policy: do8_2015 (default) or matatag_do10_2024. See Grading.
????️
The current school year is NOT set here. It lives in Academic Structure (the School Years tab, via the “Set as current” / is_current flag) — see Step 4. Also: the portals reuse the customer sign-in, so they additionally require the core allow_customer_signin setting to be enabled or nobody can log in to a portal.

Step 4 — Build the academic structure

The registrar sets up the academic backbone on the Academic Structure page (school/academics). Its tabs are each full CRUD; action buttons ride the tab bar. Do them roughly in this order:

  1. School Year

    Create the year (campus, title, start/end dates, status) and mark one current (is_current). Marking a year current drives every “current SY” query across enrollment, attendance, grading, and report cards.

  2. Terms / grading periods

    Add the quarters (or trimester/semester) for that year — term_type, sequence, title, dates.

  3. Sections

    Create sections for each grade level (and strand, for Senior High), choosing an adviser from active staff, a room, and a capacity (default 40).

  4. Subjects

    Add subjects with a subject group (this drives the DepEd Order 8 weights), grade level, is_core flag, and units.

  5. Rooms

    Register rooms by type (classroom, laboratory, library, gym, clinic, office).

????
Reference data is pre-seeded. The Kinder–G12 grade levels, the SHS tracks and strands, and the DO8 subject-group weight buckets already exist on the read-only Reference tab — you don’t create them, you build your years, sections and subjects on top of them.

Step 5 — Add your first people

Now put a learner and a guardian into the system and link them — the link is the spine that later lets a parent portal account see that child. Details on Learners & Guardians.

  1. Add a learner

    On Learners (school/learners) create a learner — first and last name are required — and fill the inline LRN field.

  2. Add a guardian

    On Parents & Guardians (school/guardians) create the guardian (first and last name required; add mobile and email).

  3. Link them

    Use the guardian’s Link action to connect the guardian to the learner (relationship, access level, primary/pickup/emergency flags). The new link starts unverified.

  4. Verify the link

    Use Verify link. This is the Data Privacy gate — it’s audited (verify_guardian, critical) and it is what later allows a parent portal account to see this child. An unverified link never grants portal visibility.

⚠️
Verification is the switch. A parent will only ever see children whose guardian link is verified. If you forget this step, everything else works but the parent portal shows nothing. See Data Privacy & Safeguarding.

Step 6 — Run one learner end-to-end

This is the payoff: take that learner from an application to a report card and a working portal login. Here’s the whole arc, then the click-by-click checklist.

Apply
Enrollment application + checklist
Approve
Requirements met → roster
Attend
Daily section register
Grade
Draft → submit → approve → release
Report
SF9-style report card
Portal
Parent & student see results
  1. Create & submit an application

    On Enrollment & Admissions (school/enrollment) create an application (learner, current school year, grade level; strand/section optional; choose an enrollment_type). The applicable DepEd document requirements are copied into a per-application checklist. Then Submit.

  2. Work the requirements, then approve

    Update each checklist item to verified or waived. Approve (needs school_enrollment_update) — approval is gated: every mandatory requirement must be verified or waived first. Approving materialises the roster enrollment (status enrolled) and is audited (approve_enrollment).

  3. Take attendance

    On Attendance (school/attendance) pick the section + date + session, mark the learner present, and bulk-save (needs school_attendance_update).

  4. Encode a grade

    On Grades (school/grades) open the class record (section + subject + term), enter Written Work, Performance Task and Quarterly Assessment scores; saving computes the transmuted grade. The record is editable only while draft.

  5. Submit → approve → release

    The teacher submits (school_grade_release). A different person — the head — approves then releases (school_grade_approve). Releasing is audited (release_grades, critical), locks the grades, and is what makes them visible downstream.

  6. Generate the report card

    On Report Cards (school/report_cards, needs school_grade_approve) generate a card for the learner. It aggregates the released quarterly grades into per-subject finals and a general average, sets Promoted (GA ≥ 75) or Retained, and freezes the snapshot.

  7. Provision & test the portals

    From the guardian and learner profiles, use Provision portal login to create a customer account (needs an email; a temporary password is set). The person then uses forgot-password to set their own. Sign in at school/parent and school/student and confirm they see only the released grade, attendance summary, and active enrollment.


A first-day checklist

Once you’ve done the above, you should be able to tick every box below.

Done?ItemWhere
module_school enabled and php erpat migrate:modules run on this tenantSettings → Manage Modules · shell
Roles granted; grade release and approve held by different peopleRoles editor
Portal toggles & default grading policy set; allow_customer_signin on (if using portals)School Settings · core Settings
Current school year marked, with terms, sections (+advisers), subjects, roomsAcademic Structure
One learner + guardian added and the link verifiedLearners · Guardians
Learner taken application → roster → attendance → released grade → report card → portalEnrollment · Attendance · Grades
If all six ticks are green, the module is live and proven. Everything from here is just doing more of the same at scale — more learners, more sections, more quarters.

Where to next

Jump to the playbook that matches your job, or read the concepts once for the full picture.

Was this guide helpful?

Report a content problem