Detecting and resolving conflicts (at generation time)
Omniscol detects conflicts continuously during the preparation of a timetable and at every manual placement. The diagnostic distinguishes blocking conflicts from unmet constraints and from warnings that call for a decision, and it encodes this severity with a color — on the candidate slots and the selection lists when you place a lesson, and on each row of the diagnostic panel. Automatic generation is a separate computation (the solver places under constraints, or leaves a lesson unplaced): its diagnostic is covered in Diagnosing a failed generation.
What the diagnostic checks
- Occupancy (double-booking) — a teacher, a class, a group, a student, a classroom or a resource cannot serve two overlapping lessons, unless explicitly modeled (compatible groups, divisions, large rooms).
- Availability and time constraints — a period declared unavailable, or an unmet time constraint (teacher, class, group, classroom, subject, site), graded by the priority of the constraint. An imposed date window, however, is always blocking.
- Capacity and service — a classroom over capacity, a resource requested in more units than available, an unsuitable classroom (capacity, specialization, site), or a teacher's service hours exceeded.
- Grid overflow — the lesson hours to place exceed, or approach, the number of open slots in the grid, for a teacher or for a whole class.
- Locations and travel — insufficient travel time between two sites for a teacher or a class, or two subjects declared incompatible placed at the same time.
- Calendar — a lesson placed on an absence (teacher or class), a closed day / holidays, or an incompatible event.
- Modeling — a broken alignment (aligned groups without a shared lesson), a different number of lessons between groups of the same division or the same alignment, a missing teacher or classroom, or an incomplete configuration (site, grid, a setting required before generation).
Severity levels
The same severity scale — green, yellow, orange, red — colors several places of the editing screens.
On the candidate slots, when you position a lesson (see Manual placement). And on each option of the selection lists: when you choose a teacher, a classroom, a resource, a group or participants for a lesson, each entry carries a calendar icon colored by its level at the target slot — green if the entity is free, red if it is busy — with the details on hover. Only a red unavailability (busy, closed period) prevents the choice; a classroom that is too small or wrongly specialized remains selectable, with a warning.
| Color | Meaning |
|---|---|
| green | no conflict — the entity is free (or a resource stays under its limit) |
| yellow | minor, non-blocking inconvenience (medium-priority time constraint, fully substituted absence, acceptable but not ideal classroom) |
| orange | strong constraint (high-priority time constraint, classroom filled up to 110% of its capacity, service hours up to 110%, travel between sites too short, incompatible subjects, closed day) |
| red | blocking conflict (double-booking, mandatory time constraint or imposed date window, classroom beyond 110% of its capacity, uncovered absence, broken alignment) |
In the diagnostic panel. Each listed problem carries a level, reused by the filter. The panel groups orange and yellow under a single “important” level, and adds an “advice” level for non-blocking information:
| Level | Meaning | Matching slot colors |
|---|---|---|
| red | Blocking conflict | red |
| yellow | Unmet constraint / Warning | orange + yellow |
| blue | Advice / Near limit | grid pressure, divisions |
When the Block conflicting choices (hard constraints) option is active, Omniscol prevents choices that would create a strong constraint; otherwise, the alert stays visible so the administrator can decide.
Grid overflow and pressure
Omniscol permanently compares the lesson hours to place with the number of open slots in the grid — for each teacher (per class and per site) and for each whole class. The message shows both values, for example “18 h / 16 h”. Three thresholds, depending on the fill level:
| Threshold | Fill level | Reading |
|---|---|---|
| blue — pressure | grid filled at 90–100% | the limits will soon be reached; placement is already tight |
| orange — slight overflow | 100–110% (hours > slots up to 110%) | a valid timetable will probably be impossible |
| red — heavy overflow | beyond 110% | a valid timetable will almost certainly be impossible |
This computation only runs if at least one site is configured, and reports nothing as long as the grid stays under 90%. It measures the required hours against the available slots — not to be confused with a teacher's service hours overrun (taught hours against contractual hours), which shares the same colors but remains a separate detection.
All detections
| Detection | Filter family | Level |
|---|---|---|
| Teacher, class or group already busy | Conflicts | red |
| Classroom already occupied | Conflicts | red |
| Broken alignment (aligned groups without a shared lesson) | Conflicts | red (orange if only the classroom or the resource differs) |
| Unmet time constraint (teacher, class, group, classroom, subject, site) | Time constraints | mandatory → red, high → orange, medium → yellow (date window → always red) |
| Classroom over capacity | Capacity | orange up to 110% of the capacity, red beyond |
| Resource requested beyond its count | Capacity | orange |
| Unsuitable classroom (capacity, specialization, site) | Capacity | yellow — can be forced |
| Teacher's service hours exceeded | Capacity | orange up to 110%, red beyond |
| Grid overflow / pressure | Grid overflow | blue → orange → red (see above) |
| Insufficient travel time between sites (teacher, class) | Distance | orange |
| Incompatible subjects at the same time | Compatibility | orange |
| No classroom available among the allowed classrooms | Missing classroom | yellow (red if none) |
| Missing teacher (lesson without an assigned teacher) | Missing teacher | yellow |
| Missing classroom (lesson placed without a required classroom) | Missing classroom | yellow |
| Different number of lessons between groups of a division | Divisions | blue (informational) |
| Different number of lessons between aligned groups | Alignments | red (blocking configuration) |
| Teacher absent on their lesson | Absences | not covered → red, substituted → yellow, partial (co-teaching) → orange |
| Class absent | Absences | red |
| Lesson on a closed day / holidays | Calendar | orange (sometimes forced to red) |
| Incomplete configuration (site, grid, setting) | — | blocking before generation |
Navigating from an alert
Each row of the panel is clickable: the magnifier leads directly to the lesson, group or class concerned — the fastest way to isolate the context of a conflict. For a group conflict (division, alignment), the icon keeps only the related groups, which makes the constraint stand out when the raw diagnostic is not enough.
Filtering the diagnostic
The Diagnostic filters button (warning triangle, at the top of the panel) opens a menu to keep only the alerts useful to the current analysis. Its icon turns orange while a filter remains active. It lets you set:
- Levels — show or hide red (blocking), yellow (important / to check), blue (advice / near limit).
- Entities — classes, teachers, classrooms, resources, groups, and the calendar event types (events, holidays, absences).
- Class levels, campuses, sites — restrict to a scope. A campus isolates an organizational entity (branch, faculty, division); a site refers to the physical location.
- Reasons — enable or disable each detection family: time constraints, conflicts, capacity, distance, missing teacher, missing classroom, compatibility, divisions, alignments.
- Interval (calendar timetables) — limit to the next weeks or months, and hide the past.
- Behavior — Block conflicting choices (hard constraints) actively prevents placements that would create a strong conflict.
- Reset — show everything again.
A filter does not resolve a conflict: it only hides what does not help the current analysis.
Resolving a conflict
The most frequent fixes are:
- moving a lesson;
- changing the teacher, classroom or resource;
- adjusting a constraint that is too strong;
- correcting an unavailability or an absence entered by mistake;
- creating or fixing the groups, divisions or alignments;
- adding a compatible classroom, a capacity or a specialization;
- locking a lesson that must stay fixed before rerunning a generation.
If generation does not find a complete solution, it can return a partial timetable: the unplaced lessons remain in the sticky notes bar of lessons to place. Fix the priority diagnostics, then rerun or manually position the remaining cases.
Cases that call for a decision
Some signals correspond to a management decision rather than a data-entry error. Examples:
- an exam with a main room and an extra-time room;
- a capacity declared above the seats entered when the institution knows that some of the enrolled will not be present;
- an annex room not modeled in Omniscol.
In these cases, it is better to model the situation explicitly when possible: multiple rooms, adapted groups, a corrected capacity or a separate event. Leaving a deliberate alert must remain a decision known to the team, not permanent noise.
How-to
- Open the timetable's diagnostic.
- If needed, filter by level, campus, site, entity or problem type.
- Handle the blocking conflicts first.
- Open the details of the problem to identify the lessons and resources involved.
- Fix the lesson, the constraint or the modeling.
- Rerun the diagnostic or the generation to check that the problem is gone.