Why a school management system goes wrong
Most school software is bought for the brochure features. Online admissions, a parent portal, a timetable screen. Then term starts and the office discovers it can’t express the rules that actually govern money and attendance at that particular school.
So the exceptions get handled on paper. The sibling discount is a manual credit note. Absence follow-up depends on which teacher remembers. Within a year the school management system is a very expensive student list.
The fix is to put those local rules in code, where they run the same way every time.
What Frappe Education and Odoo actually give you
The Frappe Education app is the natural base on the ERPNext side. It has Student Applicant, Student, Guardian, Program, Course, Program Enrollment, Student Group, Course Schedule, Student Attendance, Assessment Plan and Assessment Result. Fees run through Fee Structure and Fee Schedule, and how invoices are created depends on your Education version. It’s open source and has been around a long time.
Odoo is a different story. There’s no official school management app from Odoo. OpenEduCat is a third-party product built on Odoo, with its own models such as op.student and op.course. If you already run it, we extend it. If you don’t, we’d usually generate a smaller addon on top of contacts, invoicing and the portal rather than adopt a whole third-party suite for a few features.
Either way, the rules specific to your school live in your own app or addon, and that’s what erpfly writes. On the Frappe side that means doc_events in hooks.py, custom fields shipped as fixtures, and Print Formats kept in version control. On Odoo it’s models, views and record rules in an addon with a proper manifest.
That separation matters more for schools than for most businesses. You’ll be on the same system for years, the Education app and Odoo will both release new versions in that time, and the IT person who set it up will probably move on. A module that keeps your rules apart from the platform is one the next person can pick up without guessing.
Worked example: sibling discounts and absence alerts
Take a K-12 school with about 640 students and a term fee of $1,200.
A family has three children enrolled. The rule is 10% off for the second child and 15% off for the third. When the Fee Schedule runs for the term, the eldest is billed $1,200, the second $1,080 and the third $1,020. That’s $3,300 for the family, generated on the right invoices without the bursar adding credit notes. Two of the children take bus route B at $180 a term each, so the family’s term total comes to $3,660.
Attendance is marked each morning. One of the children is absent on Monday, Tuesday and Wednesday. When Wednesday’s attendance is submitted, the hook in the snippet sees three absences in a row and emails both guardians. It records the date so a Thursday absence doesn’t send a second email. Weekends don’t break the streak, because the check looks at the last three marks, not the last three calendar days.
The class teacher still makes the phone call. The system just makes sure somebody knows.
What we’d leave out
Some requests come up every time, and we’ll usually argue against them.
A learning platform inside the ERP. Course content, quizzes and video lessons belong in a dedicated LMS. Link it to student records and keep the ERP for enrolment, fees and attendance.
An automatic timetable generator. Scheduling teachers, rooms and subjects under real constraints is a hard optimisation problem. Most schools are better served by a proper timetabling tool whose output gets imported, or by a well-designed manual timetable screen.
A report card with forty layout revisions. Agree the design with the principal on paper first. Then we build the Print Format once.
Connecting the school office to the rest
Teacher and staff salaries run through HR and payroll, and staff attendance can share logic with the attendance management module. Fee invoices, reminders and receipts sit in invoice management.
For a wider look at colleges, training centres and schools, see our page on education. If you’re deciding whether to build on an existing platform at all, Odoo vs a custom ERP walks through that choice.