Skip to main content
OpenEduCat logo
LMS Integration

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.

OEC is authoritative (Push)
  • Students & faculty → Moodle user accounts
  • Courses & programs → Moodle categories
  • Subjects → Moodle courses
  • Batches → Moodle groups
  • Enrolments → Moodle user enrolments
Moodle is authoritative (Pull)
  • Gradebook scores → OEC gradebook
  • Assignment submission grades → OEC exams
  • Quiz best-grades → OEC exams
  • Course completion status → OEC enrollment records
Configurable direction
  • 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

Entity Mapping Reference

Every OEC model that syncs to Moodle, the Moodle entity it maps to, and the cross-reference key.

OEC ModelMoodle EntityDirection
op.departmentCourse Categorypush
op.courseCourse Sub-Categorypush
op.subjectMoodle Coursepush
op.batchMoodle Grouppush
op.studentMoodle User (student role)push
op.facultyMoodle User (teacher role)push
op.student.courseUser Enrolmentpush
grade_grades (Moodle)→ op.result.line / gradebook.linepull
mod_assign (Moodle)→ op.exam.attendeespull
mod_quiz (Moodle)→ op.exam.attendeespull
mod_attendance (Moodle)↔ op.attendance.lineconfigurable

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.