Appearance
Importing a teaching timetable
Who this is for: Admin, Tenant owner
What you'll achieve: Load period-by-period lessons so staff see classes on My schedule and the Timetable person board
Requires role
staff.import. Tenant owner or Admin (manual edit and hosted CSV pull need config.manage)
Before you begin
- Staff must already exist in the Staff directory with matching email or name
- Export or build a CSV from your MIS, spreadsheet, or timetable tool
- Download the template from Staff → Teaching timetable (CSV) or use
templates/teaching-timetable.csv - For two-week timetables, set Week A anchor on the Lessons and weekly blocks setup step first
- This CSV is lessons only. If each person has their own timetable file and you want a duty roster (playground, hall, gate, lunch, break), upload those files on Initial setup instead. Do not use this import to generate duty posts.
CSV columns
| Column | Required | Notes |
|---|---|---|
| Staff email | Yes* | Match to staff profile |
| Staff name | Yes* | Used if email empty |
| Weekday | Yes | Mon–Fri or 1–5 |
| Start | Yes | 09:00 (24h) |
| End | Yes | Must be after start |
| Subject | Yes | e.g. Maths, Literacy |
| Class | No | e.g. Year 4: created if missing |
| Room | No | e.g. Room 12 |
| Week | No | Blank = every week; A or B for two-week timetables |
| Notes | No | Shown on My schedule |
*At least one of staff email or staff name per row.
Steps
- Open Staff.
- Scroll to Teaching timetable (CSV).
- Paste CSV or select Load template.
- Choose Import mode:
- Replace all: full refresh (default)
- Append: keep existing rows, add new
- Merge by staff: replace lessons only for staff listed in the file
- Select Preview import: review validation and diff (+ added / − removed).
- Select Import N lessons.
Manual lessons
Under Teaching lessons (manual) on the Staff page, add or edit individual slots (config.manage).
Hosted CSV pull
Configure Staff → Teaching → Pull lessons from a hosted CSV:
- CSV URL (standard template): hosted file matching the columns above
- CSV URL (flexible column names): same pull, with common header aliases (staff email, teacher, period start, and similar)
Use Sync now for an immediate pull. Native SIMS, Arbor, PowerSchool and iSAMS connectors, and automatic refresh on a schedule, are coming soon.
After each pull, the panel shows Last sync summary: matched rows, unmatched staff (sample names/emails), skipped parse errors, and lessons imported. Unmatched lessons are not imported until you resolve them.
Unmatched teaching staff
If the import or hosted CSV pull cannot match a staff name or email, Staff → Teaching shows a queue of unmatched teaching rows. Match a row to a person in the staff directory to add that lesson, or ignore rows that should stay out of SchoolRota. Select several rows and use Ignore selected, or Ignore all, when the file has a lot of junk.
Admins can also see pull health on Admin → School → Teaching timetable sync: last status, last sync time, and open unmatched count. When a pull changes into an error state, SchoolRota emits mis.sync.error.
Staff matching order: email (exact) → display name (exact, then partial).
What staff see
Imported lessons appear on My schedule and Timetable → By person:
- My day: timeline + agenda (indigo Lesson blocks)
- My week: day cards and detail panel
- My month: calendar dots (indigo = lesson)
- Week export: lesson lines in staff week cells
Lessons are merged in time order with duties and commitments.
Two-week timetables
Set the Week column to A or B. On the Lessons and weekly blocks setup step, set the Monday that starts Week A for your school year. If unset, SchoolRota uses the week containing 4 January.
Clear or re-import
- Import again (replace / append / merge)
- Clear timetable removes all lesson slots (duties and commitments unchanged)
Related
- My schedule
- Weekly commitments
- Design doc:
docs/TEACHING_TIMETABLE.md

