Every higher-education IT team we've met has some version of the same story: a PHP script on a server in a closet, a cron job that "just runs", and three people who sort of understand what it does. It reads a student information system (SIS/ERP) export, calls the Moodle Web Service API, creates courses, enrolls students. It works until it doesn't.
This post is a clear-eyed comparison of keeping that script vs replacing it with a managed integration like Classeo. We'll look at four dimensions: total IT time, error rate, what happens in edge cases, and the hidden costs you don't see until Labour Day.
1. Total IT time per semester
Manual scripts aren't just "the time the script runs". They're:
- Maintaining the script when the SIS export format changes.
- Debugging failed runs at 2 AM.
- Onboarding a new IT hire who has to read 400 lines of PHP nobody commented.
- Manual corrections for students who signed up after the nightly run.
- Meta-course fusion, which most scripts can't handle and gets done by hand.
Averaged across the 50+ institutions we've measured, the true cost of a "maintained" script is 80–120 IT hours per semester. A managed Classeo integration takes the same team to about 3–5 hours per semester — exception handling and initial setup of new course templates.
2. Error rate
Here's where it gets interesting. Scripts don't fail loudly — they fail quietly.
| Error type | Script (typical) | Managed integration |
|---|---|---|
| Silent enrollment misses | 2–5% per term | < 0.1% |
| Duplicate course creations | Common | Blocked by design |
| Stale enrollments (student withdrew, still in Moodle) | Standard | Auto-cleaned within 15 min |
| Meta-course breakage | Manual repair | Transactional |
That 2–5% silent miss rate is the killer. It means that at an institution with 8,000 students, 160–400 students each term are missing from at least one course they should be in. Usually they notice in Week 2 when they can't submit an assignment.
3. What happens at edge cases?
Real Moodle life is not a textbook. Every institution we've worked with has some of these:
- Meta-courses & section merging. The instructor wants sections A–F unified. Done badly, you create a Moodle course where section A's students can see section B's gradebook.
- Audit students and "special enrollments". The SIS doesn't know they're auditing; the registrar does it in a spreadsheet.
- Faculty who teach at two institutions. Same person, two Moodle accounts, two sets of courses.
- Late course changes. A section is cancelled, reopened under a different number, students need to be moved.
A custom script handles maybe the first scenario. The rest become tickets. Managed integrations have to handle all of them because we've lived through all of them with other colleges.
4. Hidden costs that don't show up in the first year
- Compliance & Law 25. Can your script show an audit log of who accessed what student data? Most can't.
- Moodle upgrades. The Web Service API changes between major Moodle versions. Every 18 months your script needs a pass.
- Bus factor. When Jean-François retires, does anyone on the team actually understand the script?
- Reporting. When someone asks "how many courses were touched last term and by whom?", the script has no answer. Classeo does.
The honest test for whether your current script is worth keeping: would you hand it, and its documentation, to a brand-new sysadmin and trust the semester to them? If not, the "working" script is a ticking clock.
Key takeaways
- Scripts don't fail loudly — they lose 2–5% of enrollments silently.
- Managed integrations handle meta-courses, audit students, and late changes as first-class cases, not special exceptions.
- Labour cost of a "maintained" script: 80–120 hours/term. Classeo: 3–5.
- Law 25 audit requirements make DIY scripts increasingly hard to justify.
Want to see Classeo with your Moodle?
30-minute demo — we'll show Classeo running against your SIS and Moodle instance.
Book a Demo



