Overview

The OpenEduCat Moodle Integration module (openeducat_moodle) connects OpenEduCat with a Moodle LMS instance and keeps both systems in step through a two-way synchronization engine.

OpenEduCat remains the system of record for the academic structure — departments, programs, subjects, students, faculty, batches and enrollments are created in OpenEduCat and pushed into Moodle. Moodle remains the system of record for learning activity — gradebook grades, assignment and quiz results, course completion, attendance and engagement analytics are pulled back into OpenEduCat.

Key Capabilities

  1. Bidirectional sync :- Independent push and pull toggles for every entity type, so you decide exactly which data flows in which direction.

  2. Multiple Moodle instances :- Each Moodle site is configured as its own record, with multi-company support.

  3. Connection health monitoring :- Every instance reports a health status (Healthy, Degraded, Down) based on failure count and sync freshness.

  4. Unified ID mapping :- A single mapping table cross-references every OpenEduCat record with its Moodle counterpart, so records are never duplicated.

  5. Change detection :- A sync hash is stored per mapping; unchanged records are skipped instead of being re-sent to Moodle.

  6. Manual sync wizard :- Ad-hoc syncs with a preview / dry-run mode and an option to run the work in the background.

  7. Initial import & reconciliation :- Connect to a Moodle site that already has data and match it against OpenEduCat records, or bootstrap OpenEduCat records from Moodle.

  8. Scheduled actions :- Ten cron jobs cover push, pull, health checks, retries, log cleanup, orphan detection and mapping backups.

  9. Audit trail :- Every operation — success, error or skip — is written to the sync log and surfaced on a dashboard.

  10. Automatic retry :- Failed operations are queued and retried with an exponential backoff schedule.

  11. GDPR-compliant erasure :- Moodle accounts are suspended, never deleted, and mapping references are cleaned up.

What Gets Synchronized

Push — OpenEduCat to Moodle

OpenEduCat Record

Moodle Object

Notes

Department

Course Category

Top level of the Moodle category tree.

Course / Program

Course Sub-Category

Created under the department’s category.

Subject

Moodle Course

Each subject becomes its own Moodle course, with its own gradebook, assignments and quizzes.

Student

Moodle User (student role)

Created with a generated password; account suspended, never deleted.

Faculty

Moodle User (teacher role)

Assigned the editing-teacher role on the subjects they teach.

Batch

Group

Groups are created inside each Moodle course of the batch’s subjects.

Enrollment

User Enrolment + Role Assignment

Students are enrolled in the Moodle courses of their subjects.

Timetable Session

Calendar Event

Optional; requires the openeducat_timetable module.

Admin / Non-Teaching Staff

Role Assignment

Optional; driven by the Role Mappings tab.

Pull — Moodle to OpenEduCat

Moodle Data

OpenEduCat Record

Notes

Gradebook grades

Exam results

Grade items are also stored for reference under Reporting.

Assignment grades

Assignment / exam results

Pulled from the Moodle assignment activity.

Quiz best grades

Exam attendees

Uses each student’s best attempt.

Course completion

Enrollment completion status

Stored on the student’s course enrollment record.

Attendance

Attendance lines

Requires the local_wsattendance plugin in Moodle.

Engagement analytics

Engagement records

Last login, activity completion and course completion per student.

Who Is Authoritative

  • OpenEduCat is authoritative for administrative data — users, academic structure, enrollment and batches. Changes made directly in Moodle to these objects are overwritten on the next push.

  • Moodle is authoritative for learning data — grades, submissions and completion.

  • Attendance is configurable. The Attendance Source setting on the instance decides whether Moodle wins, OpenEduCat wins, or the last write wins.

Note

Records are never deleted in Moodle. Users are suspended and courses are hidden instead, because deleting a Moodle record breaks the mapping that links it back to OpenEduCat.

Module Structure

Module

Purpose

openeducat_moodle

The core integration — connection, mappings, push/pull services, wizards, logs and dashboards.

openeducat_moodle_gradebook_bridge

Routes grades pulled from Moodle into the Advanced Gradebook, and optionally pushes reviewed grades back. Installs automatically when the gradebook modules are present.

openeducat_moodle_fees_bridge

Suspends and restores Moodle accounts based on outstanding fees. Installs automatically when openeducat_fees is present.

Access Rights

The module adds two security groups under the Moodle Integration privilege:

  1. Moodle Manager :- Full access — instance configuration, manual sync, initial import, suspend / re-enable accounts, retry queue and role mappings. Granted to system administrators by default.

../../_images/moodle_menu_overview.png