Getting started
Timetable troubleshooting
Why the Publish button returns a conflict, why a teacher cannot see the grid, why generation leaves gaps, and where substitute cover actually comes from.
Getting started guide for day and boarding schools.
Last updated August 29, 2026
The timetable is a single workspace at /timetable with five destinations: View, Generate, Tools, Analytics, and My substitutes. Everything except View and My substitutes is limited to Platform Admin, Principal, Vice Principal, and the office Admin role, so a teacher reporting missing tabs is seeing the product work as designed. The Generate path is linear - define periods, set curriculum, assign teachers, set constraints, review staffing, generate, then fix issues - and each step refuses to open until the one before it has data.
Publishing
Publish promotes draft rows to published for one academic year, optionally for a single class, and it always asks for a reason that is written to the audit trail. Three things can refuse it. The academic year must exist and be active, otherwise the response says the year was not found or is inactive. Outstanding conflicts refuse with 409 and a count. A failed generation worklist refuses with 409 and the code UNRESOLVED_GENERATION_WORKLIST, which is the only one of the three that can be forced past. Republishing is deliberately idempotent: it only touches rows still marked draft, so pressing it twice changes nothing and notifies nobody a second time.
| Symptom | Cause | Fix |
|---|---|---|
| Publish returns "Academic year not found or inactive" | The year named on the grid is not the active one | Activate the year at /academic-year. Publishing deliberately refuses to write into a dormant year. |
| Teacher sees an empty grid after publish | Read access is scoped to the active year | A teacher passes when they are the class or co-class teacher, or hold an active assignment to that class in the active year. If no year is active at all, only leadership and homeroom teachers can read anything. |
| Family sees nothing at /parent-dashboard/timetable | Draft grid, or no guardian link | Only published entries reach families, and the guardian record must carry a portal login created at /parents. |
| Edits vanished from the published grid | Someone unpublished it | Unpublish flips published rows back to draft for the whole year or one class. The grid is then invisible to teachers and families until it is published again. |
Generation and gaps
| Symptom | Cause | Fix |
|---|---|---|
| Generate is greyed out | An earlier build step has no data | Periods must exist and at least one teacher must be assigned to a class and subject. The workspace names the blocking step when you hover it. |
| Classes come back with empty periods | Curriculum load is unset for those subjects | Set periods per subject per grade at /timetable/curriculum. The solver only places what the curriculum asks for. |
| A teacher is reported as overloaded | Daily and weekly caps in the constraints step | Review Set constraints and Review staffing before regenerating. Caps on periods per teacher per day and free periods per day are applied by the solver, not warned about afterwards. |
| Room clash on the grid | Two entries share a classroom | Change the classroom on the period row under Tools. Laboratory bookings live separately at /laboratories and are not part of the solver. |
Common questions
Quick answers in plain language.
Publish fails with "Cannot publish while N timetable conflict(s) remain". What clears it?+
Publishing is refused with 409 while the conflict detector still reports anything for that academic year, or for that class when you publish a single class. Work through the Fix issues step under Generate until the count is zero. A separate 409 with the code UNRESOLVED_GENERATION_WORKLIST means the last generation run recorded errors; that one can be overridden by choosing publish anyway, but a genuine clash cannot.
Where do teachers see their own timetable? There is no /my-timetable page.+
There is not. Teachers open /timetable and use the View tab, which offers a teacher view and a class view, plus a My substitutes tab for cover assigned to them. The Generate, Tools, and Analytics tabs are hidden from them. Students use the same View surface and parents use /parent-dashboard/timetable.
Why does /teachers/assignments bounce somewhere else?+
It is a legacy route kept only so old bookmarks work. It issues a server-side redirect to /timetable?tab=teachers-assignments, which is the Assign teachers step inside the Configure phase of the Generate tab. Assignments are edited there, not on a page of their own.
Approving leave with a substitute produced no cover rows. Why was there no error?+
Cover is generated from PUBLISHED timetable entries belonging to the teacher on leave, one arrangement per slot per working day in the range. A draft grid, a teacher with no published slots, or a range that lands entirely on holidays all produce zero arrangements and no warning. Publish the grid, then add the cover by hand from the Tools tab.
Related searches
School leaders and IT teams often search for: how to module troubleshooting timetable in school management software, best school software onboarding for K-12 schools, Schoolyi module troubleshooting timetable guide, school ERP go live checklist, migrate from Excel to school ERP, and school software training guide.

