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.
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.
-
Turn on
module_schoolGo to Settings → Manage Modules and enable School. This flips the
module_schoolsetting on for this tenant. The School group (graduation-cap icon, under the Academics category) then appears in the staff sidebar. -
Create the
school_*tables on this tenantSchool ships 42
school_*tables, tracked inmigrations_school. They are created per tenant, so run the module migrations against the tenant’s own database:php erpat migrate:modules -
Repeat for every tenant
Run and verify the migration on each tenant database where School should be live. A tenant that has
module_schoolon but hasn’t been migrated will show pages that error because the tables are missing.
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) |
|---|---|
| Registrar | school_enrollment, school_learners, school_guardians, school_academics, school_reports (+ the matching _create/_update/_delete) |
| Teacher / Adviser | school_attendance (+ _update), school_grades (+ _update), and school_grade_release to submit grades |
| Principal / School head | school_grades and school_grade_approve to approve, release & make report cards; plus school_reports/school_export |
| Guidance / Clinic | school_support (+ _create/_update), the restricted school_child_protection and school_health |
| Front desk / Gate | school_visitors (+ _create) |
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:
| Setting | What it does |
|---|---|
school_parent_portal_enabled | Turns the parent portal on/off independently. |
school_student_portal_enabled | Turns the student portal on/off independently. |
school_visitor_pass_enabled | Shows or hides the Visitor Pass page. |
school_default_grading_policy | The default grading policy: do8_2015 (default) or matatag_do10_2024. See Grading. |
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:
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.Terms / grading periods
Add the quarters (or trimester/semester) for that year —
term_type, sequence, title, dates.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).
Subjects
Add subjects with a subject group (this drives the DepEd Order 8 weights), grade level,
is_coreflag, and units.Rooms
Register rooms by type (classroom, laboratory, library, gym, clinic, office).
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.
Add a learner
On Learners (
school/learners) create a learner — first and last name are required — and fill the inline LRN field.Add a guardian
On Parents & Guardians (
school/guardians) create the guardian (first and last name required; add mobile and email).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.
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.
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.
-
Create & submit an application
On Enrollment & Admissions (
school/enrollment) create an application (learner, current school year, grade level; strand/section optional; choose anenrollment_type). The applicable DepEd document requirements are copied into a per-application checklist. Then Submit. -
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 (statusenrolled) and is audited (approve_enrollment). -
Take attendance
On Attendance (
school/attendance) pick the section + date + session, mark the learner present, and bulk-save (needsschool_attendance_update). -
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. -
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. -
Generate the report card
On Report Cards (
school/report_cards, needsschool_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. -
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/parentandschool/studentand 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? | Item | Where |
|---|---|---|
| ✓ | module_school enabled and php erpat migrate:modules run on this tenant | Settings → Manage Modules · shell |
| ✓ | Roles granted; grade release and approve held by different people | Roles 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, rooms | Academic Structure |
| ✓ | One learner + guardian added and the link verified | Learners · Guardians |
| ✓ | Learner taken application → roster → attendance → released grade → report card → portal | Enrollment · Attendance · Grades |
Where to next
Jump to the playbook that matches your job, or read the concepts once for the full picture.
Who does what, the suggested permission presets, and which permit unlocks each screen.
Learners, guardians, verifying links, applications, the checklist, and roster approval.
Daily attendance and encoding → submitting quarter grades on the class record.
Approve and release grades, generate report cards, oversee compliance and the audit trail.
Enable, migrate, permission, configure portals, and keep the module healthy across tenants.