Group hierarchy: parents, children, inherited constraints
PremiumPremium feature. Group hierarchy and group time constraints are included in the Premium features.
Beyond the flat "class → groups" model, Omniscol lets you organize a class's groups into a parent / child hierarchy and attach time constraints that propagate through inheritance. This is useful when the class is structured in several successive levels of subdivisions.
Building a hierarchy by drag and drop
On a class's groups page, drag and drop defines the hierarchy:
- Dragging one group onto another → the child is attached to the parent.
- Dragging a child onto the head of the group list → the child is taken out of its hierarchy and becomes a direct group of the class again.
There is no depth limit. You can have parent → child → grandchild chains if your structure calls for it.
Canonical example
A typical hierarchy:
Declared divisions:
(A, B)— A and B are mutually exclusive at the parent level.(A1, A2)— under A, A1 and A2 are mutually exclusive.(B1, B2)— under B, B1 and B2 are mutually exclusive.
Automatic consequence: Omniscol allows groups belonging to
different branches to be scheduled simultaneously — for
example A1 and B2 can share the same time slot, because no
student belongs to both (A1 ⊂ A, B2 ⊂ B, and A ∩ B = ∅).
There is no need to declare the division (A1, B2): inheritance
computes it.
Inheritance of time constraints
Beyond divisions, you can attach time constraints (availability, incompatibilities) to a group. With the hierarchy, these constraints are inherited from parents down to children — through a mask system that children can override.
Example: a time slot reserved for PE
A typical case:
- Class
8Ais unavailable on Monday afternoon (a global slot blocked for collective activities). - Through inheritance, all the groups of the class are unavailable on Monday afternoon.
- Except the
Sportgroup: you invert its mask to allow Monday afternoon and forbid everything else. All of this group's sports activities will then automatically land on this protected slot.
The mechanism is powerful: one parent mask + one child exception is enough to model dedicated time slots cleanly, without duplicating the constraint on every course.
Another example: an Electifs parent that carries the allowed slots
Another very useful case: the institution wants all electives to land only on a few reserved time slots, for example:
- Monday morning,
- Wednesday before 10 a.m.,
- Friday morning.
You can then:
- create a parent group
Electifsthat will not itself be assigned to courses; - express the allowed slots on this parent by painting the time constraints;
- create below it as many subgroups as needed:
Elective Marketing,Elective Finance,Elective Data, and so on.
All these subgroups then inherit the same allowed slots. If the rule
changes, you edit a single place: the Electifs parent.
Inheritance rules
- A child group inherits by default its parent's time constraints.
- The child can override these constraints: add its own constraints or invert the mask.
- The parent's divisions apply automatically to the children: if A and B form a division, the children of A are mutually exclusive with the children of B without any explicit declaration.
Inherited constraints and groups of groups
A group can also be a member of a group of groups. Its constraints — its own as well as those inherited from its class and its parent groups — are then consolidated with those of the other member groups: the group-of-groups lesson respects all these unavailabilities combined. Inheritance flows down the hierarchy, then consolidation gathers the members of the group of groups.
See Groups of groups for the details of the consolidation.
When to use a hierarchy
- Option bundles: a class with languages structured in levels (Advanced English > A1-Conversation, A1-Civilisation, A2-…).
- Practicals with sub-rotations: two half-classes for the practical, each subdivided into subgroups for the experiments.
- Differentiated tracks: a main track with distinct optional modules that are scheduled within the track.
- Sport: a global group gathering all the students, with a dedicated mask for the sports slots.
- Electives on reserved slots: a parent group
Electifscarries the allowed slots, and its subgroups correspond to the actual electives.
When not to use it
- For simple classes without hierarchical subdivision — the hierarchy adds complexity.
- To mix students from different classes — that is the role of alignments or groups of groups, not of the intra-class hierarchy.
- For open enrollment — use free groups.
How-to
Building a parent/child hierarchy
-
Group hierarchy organizes a class's groups into parents and children, with inheritance of time constraints.
-
First create the groups flat on the class's groups page:
A,A1,A2,B,B1,B2, plus a cross-cuttingSportgroup. At this stage, they are all at the same level, attached directly to the class. -
Drag and drop to build the hierarchy: drag
A1ontoA→A1becomes a child ofA. Do the same forA2,B1,B2. You get two branchesA → A1, A2andB → B1, B2. There is no depth limit.To take a child out: drag it onto the head of the list of the class's groups.
-
Declare the divisions:
(A, B)at the parent level (mutually exclusive),(A1, A2)under A,(B1, B2)under B. No need to declare(A1, B2)as well: through inheritance, Omniscol works out thatA1 ⊂ AandB2 ⊂ Bare compatible (schedulable on the same time slot). -
Set the parent mask: on the class, mark Monday afternoon as unavailable. All the groups inherit it automatically. Check by viewing each group's grid: the slot is blocked everywhere.
-
Invert the mask on
Sport: on the Sport group's record, invert the time constraint — allow Monday afternoon, forbid everything else. All sports activities automatically land on this dedicated slot, without having to declare it again on every course. -
You now have an active hierarchy with inheritance of divisions and a dedicated time mask. The solver uses it during automatic generation, and inherited conflicts are reported in real time.