Moodle already has the plug. It just needs a better editor on the other end.
Moodle's mod_collabora activity is a WOPI host with a single setting: the address of an office editor. Point it at SumOffice and a course document opens in our engine instead — and the edit goes back into the activity, replacing the file Moodle holds. Measured on Moodle 5.2.3 with mod_collabora 2025050100.
What was measured
| Where | A course activity of the «uploaded file» kind, created through the ordinary activity form — the way a teacher puts a document in front of a group. |
|---|---|
| Which editor | Chosen by file type: .docx to SumDoc, .xlsx to SumSheet. One address serves both. |
| The round | Opened from the activity, edited, saved back — and the Moodle attachment itself is replaced: new size, new content hash, the edit inside the file, 16 parts of 16 and all five pictures byte for byte. |
| Macro workbooks | Our engine edits .xlsm and saves it back, and that round is measured. But the Collabora activity’s own upload form does not accept .xlsm, so today that path needs the activity to be created by script. We do not offer it as a normal teacher’s path. |
| Two things that will bite you | Moodle blocks its own cURL from reaching local addresses, so a correct editor address can still answer «Could not connect to the Collabora Server». And behind a reverse proxy Moodle needs $CFG->reverseproxy = true, or the login page redirects to itself forever. |
| Not counted | Students, courses, activities. Evaluation is free with no time limit; production is the per-application license — which for a university is the difference between a budget and a negotiation. |
Setting it up
# 1. the editors, behind your TLS address
git clone https://github.com/SumOfficeApp/sumoffice-docker && cd sumoffice-docker/nextcloud
cp env.example .env # PUBLIC_URL=https://office.example.com
docker compose up -d
# 2. Moodle: install mod_collabora from the plugins directory, then
# Site administration → Plugins → Activity modules → Collabora
# Collabora URL: https://office.example.com
That is the whole integration: the plugin reads our discovery document from that address and learns which file types we take. Nothing in Moodle is patched, and the plugin stays the one its community maintains.
What travels with the file
.docxand.xlsxare edited and saved back natively;.ods/.odtopen by import;.xlsm/.xlsbthe engine supports, but the activity form will not accept them.- Macros and Power Query travel with the file untouched — the workbook a student downloads is the workbook the course author built, for the file types the activity form accepts.
Check my Excel file tells you in seconds what any course workbook relies on. The other systems we measured →
Already have the document activity? Keep it
Many Moodle sites already run the ONLYOFFICE activity module, mod_onlyofficeeditor. SumOffice works with ONLYOFFICE apps: the SumOffice compatibility server answers the same API, so the module stays and only the server address in its settings changes. Courses, activities and files stay where they are.
| Word, Excel, PowerPoint | Open from the course activity, are edited, saved and open again with the edit inside — measured on Moodle 5.3 with the module 6.1.0, the file checked in Moodle’s own storage. The record. |
|---|---|
| Excel with macros | The Moodle module itself opens .xlsm for viewing only. That is the module’s rule, not ours. |
| Moodle on an internal address | If the server reaches Moodle by an internal name and Moodle redirects to its public address, use server release 2026.4.0.6 or newer: it follows the redirect for downloads and saves. |
# 1. the compatibility server and the three editors, behind your TLS address
docker pull hissih/sumoffice-compat:2026.4.0.6
JWT_SECRET=$(openssl rand -hex 24) docker compose up -d
# 2. Moodle: Site administration → Plugins → Activity modules → ONLYOFFICE
# Document Editing Service address: https://office.example.com
# Secret key: the same value as JWT_SECRET
Saving the settings runs the module’s own connection check. How the compatibility server is set up →
ONLYOFFICE is a trademark of Ascensio System SIA; SumOffice is not affiliated with it. Moodle is a trademark of its owner.
- Tell us the Moodle version and how many courses use spreadsheets — we will say plainly whether we fit.
- Order a change under your process — your SSO, your storage: from 150 €.