Most academies run the same timetable every week, change it for the summer or the holidays, and lose the odd class to a seminar or a snow day. DojoMesh handles those three things as three separate layers, so you never have to rewrite your timetable to close for Christmas and rebuild it in January. This guide explains what each layer does and when to reach for it.
The four layers
Scheduling is spread across four pages, all under the Training menu. They stack: each one sits on top of the one above it.
| Layer | What it is | Reach for it when |
|---|---|---|
| Base Schedule | Your normal week. Seven days of classes that repeat forever. | Always. This is the foundation and every academy needs one. |
| Schedule Variants | A complete alternative week, saved under a name — "Summer Timetable", "Christmas Week". | You have a different weekly pattern that comes back, or runs for more than a day or two. |
| Schedule Rules | A date range that says which variant is in charge. A variant does nothing until a rule turns it on. | You have built a variant and need to say when it applies. |
| Schedule Exceptions | A change to a single date: cancel the day, cancel one class, move one class, or add one. | Something one-off happened. A seminar, a closure, an instructor away. |
A different week that repeats or lasts a while is a variant plus a rule. A single day that is not normal is an exception. If you are about to build a variant for one Tuesday, you want an exception instead.
How a day gets resolved
When DojoMesh needs to know what is running on a given date — for the member portal, the timetable on your website, or the View Schedule page — it works through the layers in this order:
- Start with the base schedule for that day of the week.
- Look for a rule covering that date. If one applies and it points at a variant, that variant's classes replace the base entirely for that day.
- Apply every exception saved against that exact date, in the order they were created.
- Whatever is left is the schedule everyone sees.
This is the single most common surprise. If a rule points at a variant and that variant has nothing on Wednesday, then Wednesday has no classes — the base schedule's Wednesday does not show through underneath. When you build a variant, put in every class you want running, including the ones that are not changing.
The Initialize With option in step 2 exists precisely for this: it copies your whole base schedule into the new variant so you can edit the handful of things that differ rather than retype the week.
Build the base schedule
Go to Training Base Schedule. Add each class with its day, start and end time, title and an optional description.
This is your normal week and it repeats indefinitely — there are no dates involved at this layer at all. Get it right once and the other three layers are only ever describing how a particular stretch of time differs from it.
If several days look alike, build one day fully and use the clone option to copy it across, then adjust. It is quicker than entering Tuesday from scratch when Tuesday is Monday with one extra class.
Create a variant for an alternative week
Go to Training Schedule Variants and click Create Variant. Give it a name you will recognise in a rule dropdown six months from now — "Summer 2027", "School Holidays", "Christmas Week".
Then choose Initialize With:
| Option | What you get |
|---|---|
| Start with empty schedule | A blank week. Right for a genuinely different timetable, like a holiday programme of two classes a day. |
| Copy from base schedule | Your normal week, copied in. Right for most cases — then delete the classes that are not running and adjust the times that move. |
| Copy from an existing variant | Another variant, copied in. Useful for "same as last summer, but Fridays are different". |
Once created, add, edit and remove classes inside the variant exactly as you did on the base schedule. Nothing you do here affects your normal week, and nothing happens on any real date until you add a rule in step 3.
A variant is not tied to a year. Build "School Holidays" once and point a new rule at it every time the holidays come round — that is the whole reason variants and rules are separate.
Add a rule to say when the variant applies
Go to Training Schedule Rules and create a rule:
| Field | What to put in it |
|---|---|
| Rule Name | What this period is. "Summer 2027", "Easter closure week". |
| Schedule Type | Use Schedule Variant to switch to a variant, or Use Base Schedule to force the normal week — see the note below. |
| Schedule Variant | Which variant. Only asked for when the type is Use Schedule Variant. |
| Start Date / End Date | The range this covers. Both ends are included. |
| Priority | 1 - Low through 5 - Critical. Only matters when two rules cover the same date — see When things overlap. |
A rule that says Use Base Schedule does not change anything on its own — but because only one rule ever wins, a higher-priority base rule blocks a variant rule underneath it. That is how you punch a normal week out of the middle of a long variant period: leave the summer rule running May to August at priority 2, and add a base rule at priority 4 for the competition week in the middle.
Use exceptions for one-off changes
Go to Training Schedule Exceptions, pick the date, and choose an Exception Type:
| Type | Use it for |
|---|---|
| Cancel All Classes | The academy is shut that day. Public holiday, burst pipe, instructor conference. |
| Cancel Specific Class | One class is off but the rest of the day runs as normal. |
| Modify Existing Class | A class moves time, or is renamed for the day — the 6pm becoming "Grading Prep", say. |
| Add Special One-Time Class | Something extra that is not in any weekly timetable: a seminar, an open mat, a makeup class. |
For the two types that act on an existing class, pick it from Available Classes for Selected Date rather than typing it. That list is built by resolving the date properly, so it already accounts for any variant in effect — and picking from it fills in the day, time and title that DojoMesh matches on. Typing a title that does not match exactly means the exception quietly does nothing.
For Add Special One-Time Class there are Quick Templates — Seminar, Workshop, Guest Instructor, Makeup Class, Open Mat, Competition Prep — which prefill the form so you only set the time.
You cannot create an exception for a date that has already passed. If you need to correct history for attendance or reporting, adjust the attendance records rather than the schedule.
Check the result
Go to Training View Schedule. This shows the fully resolved timetable — base, variant and exceptions all applied — which is exactly what your members see.
Always check the week either side of a change. Rules switching on and off at date boundaries, and variants with an empty day, both show up immediately here and are hard to spot anywhere else.
The same resolved schedule drives the member portal and the timetable embedded on your website, so if View Schedule looks right, those are right too.
Closing for a whole period
To shut for a fortnight you do not need fourteen exceptions. The Schedule Exceptions page has a bulk section: give it a Start Date and End Date, choose Cancel all classes, add a note like "Christmas closure", and it creates the exceptions across the range for you.
The same tool can cancel one class type across a period — the dropdown lists your class titles, so Cancel "Kids BJJ" classes clears every Kids BJJ in the range and leaves the adult classes running.
It skips dates that already have an exception. If you cancelled one class on the 27th last week, the 27th is left completely alone by a bulk run over that range — including the full-day closure you just asked for. Check those dates individually afterwards.
Cancelling a class type reads your base schedule titles. If a variant is in force over that range and uses different class names, the bulk cancel will not match them. For a period already covered by a variant, cancel from the variant's own titles or use exceptions one date at a time.
When things overlap
Two rules cover the same date
Only one rule ever applies. The one with the highest priority wins; if two share a priority, the most recently created one wins. Nothing is merged, and the losing rule is not reported anywhere — so when a date is not behaving, the first thing to check is whether a second rule covers it.
Give overlapping rules deliberately different priorities. A long seasonal variant at 1 - Low or 2 - Medium, with short specific periods at 4 - Very High on top, behaves predictably.
Several exceptions on one date
Unlike rules, every exception on a date is applied, in the order you created them. That is usually what you want — cancel two classes and move a third, and all three happen.
Because exceptions apply in creation order, a Cancel All Classes wipes whatever has been resolved at the moment it is applied — not the whole day permanently.
So: cancel the day first, then add a seminar, and you get a day with just the seminar — which is a genuinely useful pattern for "we are closed except for this one thing". Do it the other way round — add the seminar, then cancel the day — and the cancellation removes the seminar too. If a day should be completely empty, make sure the full-day closure is the last thing you add.
Troubleshooting
A whole day vanished after I applied a variant
The variant has no classes on that day, and a variant replaces the day rather than merging with it. Open the variant and add the missing classes. This is why Copy from base schedule is the recommended starting point.
My variant is not showing up at all
A variant does nothing by itself. Check there is a rule pointing at it, that the rule is active, and that today falls inside its start and end dates — both of which are inclusive. If a rule exists and the variant still is not showing, another rule with a higher priority is probably covering the same dates.
My exception did not do anything
Cancel and modify exceptions match a class on its day, start time and title, all exactly. A title typed by hand, or a time that changed on the base schedule after the exception was created, will not match. Delete it and recreate it by picking the class from Available Classes for Selected Date.
The bulk cancellation missed some dates
Any date that already had an exception on it was skipped. Look at those dates individually.
The website timetable does not match what I set up
Check View Schedule first. The embedded timetable and the member portal both read the same resolved schedule, so if View Schedule is right and your website is not, the page is likely cached — reload it fully rather than changing anything in DojoMesh.
Common questions
Do I need variants and rules at all?
No. Plenty of academies run one base schedule and a handful of exceptions a year, and that is a perfectly good setup. Variants earn their keep when a different pattern lasts more than a few days or comes back regularly.
Will changing the schedule affect attendance already recorded?
No. Attendance is recorded against the classes members actually attended and is not rewritten when you edit a timetable. That is also why exceptions cannot be created for past dates.
Can I have two variants running at once?
No — one rule applies per date, so one variant is in force at a time. If you need two different patterns simultaneously, they belong in a single variant covering the whole week.
What happens when a rule's date range ends?
The next day resolves normally again: back to the base schedule, or to whatever other rule covers it. Nothing needs switching off by hand, and there is no harm in leaving old rules in place once they have passed.
Can members see why a class was cancelled?
The class simply does not appear on the schedule for that day. The Admin Notes field on an exception is for you and your staff, not for members — if you want people told why, send a message as well.
Does the schedule handle a class that runs every other week?
Not directly — the base schedule and variants are both plain weekly patterns. Either add the recurring class to the base and cancel it on the off weeks, or add it as a one-time class on each week it runs. For anything more elaborate, Training Special Events is usually the better fit.
Get the base schedule exactly right and stop there. Add exceptions as things come up over the next month or two. Only build a variant when you notice yourself creating the same handful of exceptions week after week — at that point the pattern is real and worth naming.