Seven steps from an ice contract to team schedules
- List every slot of ice the association holds. One row per slot: arena, pad, date, start, end, whether it is full, half or third ice, and whether the arena calls it prime or non-prime.
- Set an hours target for every team. Write the policy's target per week or per season for each division and tier, so every team is measured against its own number rather than against its neighbour.
- Write down the hard rules. Each division's earliest and latest times and ice sizes, blackout dates, one practice a day, the gap between practices, teams that share a coach, and any cap on late slots.
- Allocate. Place teams on slots so that no hard rule breaks and every team gets as close to its target as the ice allows.
- Share any shortfall. When there is not enough ice, spread the gap across the teams in proportion to their targets instead of letting one team lose a whole night.
- Check prime time and late slots. Count each team's prime hours and its early and late slots, and even them out within each division.
- Publish with the reasons. Print each team's schedule, keep the fairness numbers, and be able to say why any team is below its target.
Start from targets, not from last year
The ice scheduler of a minor hockey association usually inherits a block of ice from the city or the arena and a list of teams, and the easiest thing to do is to copy last season's grid. That carries last season's unfairness forward. The Canadian Parks and Recreation Association put the principle plainly in its 2024 piece on fair ice allocation: allocate on the current needs of every group, backed by current registration numbers, not on history. Inside an association the same idea becomes an hours target per team, set by division and tier in the policy, which every allocation is then measured against.
Targets also make the conversation with coaches easier. "Your team is below its target because it practises on full ice only and every full ice slot is taken" is an answer a coach can check: Icesheet counts the full slots and names the teams on one of them, each with its share of its own target. "That is how the grid came out" is not.
Hard rules and preferences are different things
Some rules may never break: a team cannot practise before its division's earliest time, cannot share half ice with a team the policy says it may not pair with, and cannot be in two places at once. Others are preferences to balance: a team's home arena, an even spread of prime time, the same weekday each week. Keep the two lists separate. The ice allocator treats the first list as hard rules that are never broken silently (anything it cannot keep is named with the reason) and scores the second.
The score is what makes a shortfall fair. Each team's shortfall is measured as a share of its own target and squared, so one team missing half its ice costs 275 points while two teams each missing a quarter cost 150 between them. The allocator therefore prefers several small gaps to one large one, which is the behaviour most policies ask for.
Worked example: the sample association
The sample association in the allocator is invented: 12 teams in 5 divisions, 60 ice slots over 4 January weeks at 2 arenas, 2 pairs of teams sharing a coach, and division settings like the table in the policy template guide. The association holds 60 hours of ice; because the youngest divisions share half and third ice, the teams' targets add up to 80 hours of practice time.
Allocated with the default settings, the season has 76 practices and 0 broken rules. Every U7 practice is on shared ice (12 of 12). Two teams end below target: U13 A: 10 of 12 hours and U15 A: 10 of 12 hours. The first reason the tool gives is "Ice size the division does not use" for 28 slots: those A teams practise on full ice only, and the full ice slots are all in use.
Now suppose the arena takes back the Sunday evening full ice slot for the whole month (4 slots). Allocated again, 4 teams end below target: U13 A: 9 of 12 hours, U15 A: 9 of 12 hours, U13 B: 5 of 6 hours, U15 B: 5 of 6 hours. The four full ice teams finish between 75% and 83% of their targets (U13 A 75%, U13 B 83%, U15 A 75%, U15 B 83%), with 0 broken rules. No team carries the whole loss.
Common mistakes
- Copying last season's grid instead of starting from this season's targets and registrations.
- Letting the first coach to ask pick the good slots, so the 6 am and late slots fall to whoever was slowest.
- Forgetting that a coach with two teams cannot be at two arenas at once, or needs time to drive between them.
- Counting a half ice hour as a full hour for one team and half an hour for another. Pick one rule and write it in the policy.
- Publishing the schedule without the numbers, so every complaint has to be answered from memory.
The rest of the method is in the guides on shared and half ice and prime time fairness.