Constraint recipe
A double-booking puts the same teacher in two lessons in the same period, and the timetable cannot run that way. The classic version is a teacher discovering in September that they are timetabled in two rooms at once, with part-time staff the most common cause. Open both lessons, check for duplicate import rows or a manual move onto an occupied slot, then move or restaff one of them.
Key takeaways
- One teacher, two lessons, same period: the timetable is invalid.
- Duplicate import rows and manual edits onto occupied slots cause most cases.
- Trace both lessons to the source before you move either.
- Check the receiving slot for room and class clashes before saving the fix.
Why this blocks publication
A teacher cannot be in two places at once, so this is a must-not-break rule in every serious timetable system. Spreadsheets have no concept of a double-booked teacher, which is why the clash traditionally surfaced in week one, when a teacher walked in asking how to be in two rooms at once. A validating system surfaces it before publication instead.
The clash usually enters through one of three doors: a manual drag onto an occupied slot, a duplicated row in imported data, or two period-plan lines that both list the same teacher.
A worked example: Tuesday P3, twice
Ms. Kovács is assigned to 7A and 8B in Tuesday P3. Tracing both lessons shows the 8B assignment came from a duplicated import row; the real 8B lesson already sits on Thursday.
Before: two classes claim the same period
| Tue | Wed | Thu | |
|---|---|---|---|
| P1 | 9A | ||
| P2 | 9A | 8B | |
| P3 | 7A + 8B | ||
| P4 | 7A |
- Double-booking
- Valid lesson
After: the duplicate is deleted, not moved
| Tue | Wed | Thu | |
|---|---|---|---|
| P1 | 9A | ||
| P2 | 9A | 8B | |
| P3 | 7A | ||
| P4 | 7A |
- Resolved slot
- Valid lesson
The trace matters because the two failure modes need opposite fixes. A duplicate row is deleted; a real second lesson is moved or restaffed. Deleting a real lesson to silence the error creates a missing-lesson problem that surfaces weeks later.
Trace it before you move it
| What you see | Likely cause | Fix |
|---|---|---|
| The same class, subject, and teacher appear twice | Duplicated import row or copied curriculum line | Delete the duplicate row in the source data, then revalidate. |
| Two different classes share the teacher and period | Manual move onto an occupied slot, or the generator was handed pinned lessons that clash | Move one lesson to a slot where teacher, class, and room are all free. A two-step swap with another lesson often opens the space. |
| The teacher does not actually teach one of the lessons | Wrong teacher on the lesson record | Restaff the lesson record; the placement itself may be fine. |
| The clash involves a team-taught lesson | A co-teacher is busy elsewhere in that period | Check the whole team's overlap window; see the team-teaching recipe. |
Resolve it without creating the next clash
- Open both lessons that share the teacher and period, and trace each back to its period-plan or import source.
- Decide which row is wrong, using the table above.
- If the teacher is part-time, check their working days before choosing a new slot; see teacher availability.
- Move, restaff, or delete, then recheck the receiving slot for room and class clashes.
- Revalidate the whole timetable; one fix can uncover a second clash behind it.
Fixes that make it worse
- Deleting a real lesson when the problem was a duplicated import row
- Moving the lesson without checking the receiving room and class
- Treating the double-booking as a preference violation and regenerating around it
In Smootables
Period
Room A
Period
Room A
Period
Room A
Period
Room A
Period
Room A
Period
Room A
Period
Room A
Period
Room A
Period
Room A
Period
Room A
Conflicts detected
The following conflicts will occur if you proceed:
Teacher J. Rivera is already scheduledWorkshop safety at 10:15–11:45
Smootables treats one teacher in two overlapping lessons as impossible. When you run Generate timetable, the solver keeps each teacher in one place at a time. Team-taught lessons still require every assigned teacher to be free for the whole period.
If you drag a lesson onto a slot where that teacher already teaches, Conflicts detected names the other class and time before the change saves. After generation, Teacher no-conflict in the analysis summary confirms the grid stayed clean on that run.
- Trace both lessons to their source placement before moving or restaffing.
- Remove duplicate import rows before blaming the generator.
Quick answers
Is a teacher double-booking ever acceptable?
No. If the same teacher is required in two places at once, the timetable is not valid.
What is the safest first fix?
Trace both lessons to source data. Delete a duplicate, or move one lesson to a slot where teacher, room, and class are all free.