Validation errors

What to do when a teacher is double-booked

One teacher cannot teach two classes at the same time. Trace both lessons to their source, then move, restaff, or delete the duplicate.

Juho Isola, Smootables founder

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

TueWedThu
P19A
P29A8B
P37A + 8B
P47A
  • Double-booking
  • Valid lesson
The Thursday 8B lesson is the real one. The Tuesday copy is a duplicate row, not a placement problem.

After: the duplicate is deleted, not moved

TueWedThu
P19A
P29A8B
P37A
P47A
  • Resolved slot
  • Valid lesson
Had both lessons been real, one would move instead, and the receiving slot would need the class, room, and teacher all free.

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 seeLikely causeFix
The same class, subject, and teacher appear twiceDuplicated import row or copied curriculum lineDelete the duplicate row in the source data, then revalidate.
Two different classes share the teacher and periodManual move onto an occupied slot, or the generator was handed pinned lessons that clashMove 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 lessonsWrong teacher on the lesson recordRestaff the lesson record; the placement itself may be fine.
The clash involves a team-taught lessonA co-teacher is busy elsewhere in that periodCheck the whole team's overlap window; see the team-teaching recipe.

Resolve it without creating the next clash

  1. Open both lessons that share the teacher and period, and trace each back to its period-plan or import source.
  2. Decide which row is wrong, using the table above.
  3. If the teacher is part-time, check their working days before choosing a new slot; see teacher availability.
  4. Move, restaff, or delete, then recheck the receiving slot for room and class clashes.
  5. 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

Automatic generation never double-books a teacher; manual edits show the warning first.

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.

  1. Trace both lessons to their source placement before moving or restaffing.
  2. 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.

See how Smootables fits your school's constraints

Book a walkthrough. We will review your teacher load, rooms, and scheduling rules and show how they work in Smootables.