OpenEduCat + Moodle Integration
Your institution already runs Moodle. Your faculty know it, your students have accounts, and your courses are built. What you need is the ERP layer: admissions, fee collection, payroll, timetabling, and a single student record that drives everything downstream.
The openeducat_moodle module connects OEC and Moodle via Moodle's REST Web Services API. OEC acts as the system of record for administrative data. Moodle stays as your delivery layer. Grades, attendance, and completion flow back into OEC automatically. No CSV exports. No manual re-entry.
8
Sync services
27
WS functions used
8
OEC models extended
8
Cron jobs
4.5+
Moodle compatibility
4
Retry backoff steps
Split Authority, Zero Conflict
The integration uses a deliberate authority model so each system owns the data it is best positioned to manage, and the two never fight over the same record.
- Students & faculty → Moodle user accounts
- Courses & programs → Moodle categories
- Subjects → Moodle courses
- Batches → Moodle groups
- Enrolments → Moodle user enrolments
- Gradebook scores → OEC gradebook
- Assignment submission grades → OEC exams
- Quiz best-grades → OEC exams
- Course completion status → OEC enrollment records
- Attendance records, pull from Moodle (default)
- Or push from OEC to Moodle
- Or bidirectional (last-write wins)
- Controlled by sync_attendance_from on the instance
Integration Deep Dives
Eight topic pages covering every aspect of the integration, from data flows to configuration to migration planning.
Grade Sync
Pull Moodle gradebook scores, assignment grades, and quiz best-grades into OEC automatically.
Learn moreCourse & Enrolment Sync
OEC courses auto-provision matching Moodle courses; student enrolments mirror in real time.
Learn moreStudent Roster Sync
OEC SIS records drive Moodle user account creation, updates, and suspension.
Learn moreAttendance Sync
Moodle Attendance plugin sessions map to OEC attendance registers. Configurable direction.
Learn moreQuiz & Exam Import
Import Moodle quiz best-grades and assignment scores into OEC exam management records.
Learn moreSingle Sign-On
One login for both systems via SAML 2.0, shared LDAP, or OEC as identity provider.
Learn moreMigration Guide
Moving from a Moodle-only setup to OpenEduCat + Moodle. Phases, timeline, and checklist.
Learn moreOEC vs Moodle: Do You Need Both?
OEC is an ERP/SIS; Moodle is an LMS. Understand the overlap, the gaps, and when to run both.
Learn moreEntity Mapping Reference
Every OEC model that syncs to Moodle, the Moodle entity it maps to, and the cross-reference key.
| OEC Model | Moodle Entity | Direction | Key / idnumber |
|---|---|---|---|
op.department | Course Category | push | idnumber = oec_dept_{id} |
op.course | Course Sub-Category | push | idnumber = oec_course_{id} |
op.subject | Moodle Course | push | idnumber = oec_subj_{subj_id}_course_{course_id} |
op.batch | Moodle Group | push | idnumber = oec_batch_{id} |
op.student | Moodle User (student role) | push | idnumber = oec_student_{id} |
op.faculty | Moodle User (teacher role) | push | idnumber = oec_faculty_{id} |
op.student.course | User Enrolment | push | op.student.course.enrol mapping |
grade_grades (Moodle) | → op.result.line / gradebook.line | pull | Moodle grade item ID |
mod_assign (Moodle) | → op.exam.attendees | pull | Moodle assignment ID |
mod_quiz (Moodle) | → op.exam.attendees | pull | Moodle quiz ID + 1,000,000 offset |
mod_attendance (Moodle) | ↔ op.attendance.line | configurable | Session date + student |
How the Sync Engine Works
All communication goes through Moodle's standard REST Web Services endpoint (/webservice/rest/server.php) using token-based authentication. OEC calls Moodle, Moodle never calls OEC. The integration requires 27 WS functions to be enabled on a named external service in Moodle.
Background jobs run on the OCA queue_job channel root.moodle (4 parallel workers by default). Every record carries a SHA-256 hash of its last-synced payload, unchanged records are skipped, so the hourly cron is fast even for large institutions.
Failed API calls enter a retry queue with exponential backoff: 5 min → 30 min → 4 h → 24 h → permanently failed. A health-check cron pings Moodle every 4 hours and flags the instance if the last successful sync exceeds the configured stale threshold (default: 4 hours).
Sync transport
HTTP POST /webservice/rest/server.php
wstoken + wsfunction + moodlewsrestformat=json
Async execution
queue_job with_delay(channel='root.moodle')
4 parallel workers; real-time triggers on record save
Change detection
SHA-256(payload) → moodle.mapping.sync_hash
Skip if hash matches; update hash on successful sync
Loop prevention
connector_no_export=True
Set on env during all pull operations; suppresses push-back
Who This Integration Is For
Not every institution needs both systems. Here is who benefits most.
Moodle-first institutions adding ERP
You have been running Moodle for years. Faculty are trained, courses are built. You need to add admissions, fee management, payroll, or a student information system without replacing your LMS investment.
Universities with federated LMS deployments
Multiple faculties or campuses each run their own Moodle instance. OEC provides a single administrative layer across all of them, with per-instance sync configuration and multi-campus reporting.
IT admins managing two growing systems
You maintain student records in a spreadsheet or legacy SIS, and Moodle separately. The integration eliminates manual account provisioning, enrolment management, and grade re-entry.
Ready to Transform Your Moodle Integration?
See how OpenEduCat frees up time so every student gets the attention they deserve.
Try it free for 15 days. No credit card required.