Skip to main content
OpenEduCat logo
Moodle + OpenEduCat
Moodle
OpenEduCat

Your Moodle Stays. The Manual Work Goes.

OpenEduCat connects directly to your Moodle LMS and handles the work in between: student account provisioning, course structure sync, grade collection, and attendance reconciliation. Your faculty keep teaching in Moodle. Your administrators stop re-entering the same data in two systems.

8

Sync services

27

WS functions used

8

OEC models extended

8

Cron jobs

4.5+

Moodle compatibility

4

Retry backoff steps

Familiar Problems for Anyone Running Both Systems

Most institutions that run Moodle alongside a student information system eventually hit the same walls. These are the ones the integration eliminates.

Creating accounts twice

A new student gets added to your SIS, then someone manually creates their Moodle account. When they transfer or graduate, you hope someone remembers to clean up both systems.

Typing grades from Moodle into your SIS

Faculty submit grades in Moodle. An admin exports to spreadsheet. Another admin imports into the student records system. This happens every term, for every subject.

Attendance tracked in two places

Moodle records online attendance. Your SIS holds the official register. They never agree, and reconciling them at term end takes days.

Course setup is a copy-paste operation

You create subjects in your SIS, then recreate the same structure in Moodle. Rename a department in one system and nothing updates in the other.

How It Works

The integration uses a deliberate authority model. Each system owns the data it is designed to manage, and the two never fight over the same record.

01

OEC holds the administrative record

Students, faculty, departments, courses, and enrollment data live in OpenEduCat. This is the system of record for everything administrative. Moodle never overrides it.

02

Moodle receives what it needs

Each time a student or faculty record is saved in OEC, a background job pushes the change to Moodle within seconds. Course structures, batches, and enrolments follow the same path on an hourly schedule.

03

Grades and activity data flow back

Every 15 minutes, the integration pulls gradebook scores, assignment grades, and quiz results from Moodle into OEC. Attendance records sync on a 30-minute cycle. Moodle owns learning data. OEC owns the student record.

04

Conflicts are resolved by design, not by guessing

The authority model is explicit: OEC wins for administrative data, Moodle wins for learning data. There are no merge conflicts, no overwrites, no guessing which system is current.

OEC pushes to Moodle
  • Students and faculty account creation
  • Courses, programs, and departments
  • Subjects as individual Moodle courses
  • Batches as Moodle groups
  • Enrolments and teacher assignments
Moodle pulls back to OEC
  • Gradebook scores every 15 minutes
  • Assignment submission grades
  • Quiz best-attempt results
  • Course completion status
Configurable direction
  • Attendance: pull from Moodle (default)
  • Or push OEC attendance to Moodle
  • Or bidirectional with last-write wins
  • Timetable sessions to Moodle calendar

What You Get in Practice

Concrete capabilities, not vague promises.

15 min

Grade sync frequency

Moodle grades arrive in OEC automatically every 15 minutes. No exports, no re-entry.

Real-time

Student account sync

A student saved in OEC triggers an immediate Moodle account provision via background job.

27

Moodle WS functions used

Covers users, courses, categories, groups, enrolments, grades, assignments, quizzes, attendance, and completion.

8

Automated cron jobs

Full push sync, grade pull, attendance sync, health check, orphan detection, retry queue, and more.

5-step

Exponential backoff retry

Failed API calls retry at 5 min, 30 min, 4 h, 24 h, then flag for review. Nothing silently drops.

Zero

Moodle data deleted

Withdrawn students are suspended, not deleted. Their grades and submissions stay in Moodle permanently.

Who Gets the Most Out of This

Not every institution needs both systems. Here is who benefits most.

Higher Education

Universities that built Moodle first

Your faculty have been teaching in Moodle for years. Courses are built, students know the interface. You need to add the ERP layer โ€” admissions, fee collection, payroll, formal transcripts โ€” without touching a single Moodle course.

IT Administration

IT admins managing student data manually

You spend hours each semester manually provisioning Moodle accounts, sending grade exports to your registrar, and reconciling attendance records across two systems. This integration eliminates all of that.

Multi-Campus

Campuses with multiple Moodle instances

Each faculty or satellite campus runs its own Moodle. OpenEduCat provides a single administrative layer across all of them, with per-instance sync configuration and unified student records.

Growing Institutions

Schools moving off spreadsheet-based SIS

You track students in spreadsheets and keep Moodle separate. The integration gives you a proper SIS that connects to your existing LMS rather than replacing it.

Entity Mapping Reference

Every OEC model that syncs to Moodle, what it maps to, and which system is authoritative.

OEC RecordBecomes in MoodleDirection
Department
op.department
Course Categorypush
Course / Program
op.course
Course Sub-Categorypush
Subject
op.subject
Moodle Coursepush
Batch
op.batch
Moodle Grouppush
Student
op.student
Moodle User (student role)push
Faculty
op.faculty
Moodle User (teacher role)push
Enrollment
op.student.course
User Enrolmentpush
Gradebook Grade
grade_grades (Moodle)
โ†’ op.result.line / gradebook.linepull
Assignment
mod_assign (Moodle)
โ†’ op.exam.attendeespull
Quiz
mod_quiz (Moodle)
โ†’ op.exam.attendeespull
Attendance
mod_attendance (Moodle)
โ†” op.attendance.lineconfigurable

Designed for Production, Not Just a Demo

The sync runs through Moodle's standard REST Web Services endpoint using token-based authentication. It requires 27 WS functions enabled on a named external service in Moodle. No Moodle plugins are required beyond the optional attendance plugin.

Every record carries a SHA-256 hash of its last-synced payload. If nothing changed, the record is skipped. The hourly cron is fast even for large institutions because it only calls the Moodle API for actual changes.

Failed API calls enter a retry queue with exponential backoff: 5 minutes, 30 minutes, 4 hours, 24 hours, then permanently flagged for review. A health-check cron pings Moodle every 4 hours and flags the instance as stale if syncs have stopped completing.

Sync transport

POST /webservice/rest/server.php

wstoken + wsfunction + moodlewsrestformat=json

Background execution

OCA queue_job, channel root.moodle

4 parallel workers; real-time triggers on record save

Change detection

SHA-256 payload hash

Unchanged records skipped; hash updated on success

Loop prevention

connector_no_export = True

Set during all pull operations; prevents push-back to Moodle

Moodle Integration Add-on

Available from $499 per year

Included in select OpenEduCat plans. Works with both cloud and on-premise deployments. Compatible with Moodle 4.5 and newer.

  • Unlimited students and faculty sync
  • All 8 sync services included
  • Multi-instance support
  • Full audit log and retry queue

Common Questions

Does my Moodle need any plugins installed?

The core integration requires no Moodle plugins. It uses the standard Moodle REST Web Services API with 27 built-in WS functions. Attendance sync requires the optional local_wsattendance plugin, but grade sync, student sync, course sync, and all other features work without it.

What version of Moodle is supported?

Moodle 4.5 and newer. The integration uses only WS functions available in the standard Moodle core from 4.5 onward. Earlier versions may work for most features, but are not officially supported.

Can I connect multiple Moodle instances to one OpenEduCat installation?

Yes. OpenEduCat supports multiple Moodle instance configurations, each with independent sync settings, credentials, and toggle controls. This is useful for multi-campus institutions where each campus runs its own Moodle.

What happens if Moodle is offline or unreachable?

Failed API calls enter an exponential backoff retry queue: 5 minutes, 30 minutes, 4 hours, 24 hours. A health-check cron runs every 4 hours and flags the Moodle instance as unhealthy if it cannot be reached. You see the issue in your admin panel before your end users do.

Will grades I enter manually in OEC get overwritten by the Moodle pull?

Yes, if the grade exists in Moodle too. Moodle is the authority for all learning data. The next grade pull will overwrite any manually entered score in OEC for that student and subject. If you need manual grade entry, enter it in Moodle and it will sync to OEC automatically.

Is student data deleted from Moodle when they leave the institution?

Never. Inactive students are suspended in Moodle, not deleted. Their account cannot log in, but all grades, submissions, forum posts, and activity history are preserved permanently. This protects your institution from accidental data loss and keeps historical records intact for compliance.

How long does the initial setup take?

Configuration typically takes an afternoon for an experienced IT administrator. You need to enable Moodle REST Web Services, create an external service, add 27 WS functions, generate an API token, and enter the connection details in OpenEduCat. A migration wizard handles the initial data reconciliation between existing Moodle records and OEC.

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.