Skip to content

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 ​

ColumnRequiredNotes
Staff emailYes*Match to staff profile
Staff nameYes*Used if email empty
WeekdayYesMon–Fri or 1–5
StartYes09:00 (24h)
EndYesMust be after start
SubjectYese.g. Maths, Literacy
ClassNoe.g. Year 4: created if missing
RoomNoe.g. Room 12
WeekNoBlank = every week; A or B for two-week timetables
NotesNoShown on My schedule

*At least one of staff email or staff name per row.

Steps ​

  1. Open Staff.
  2. Scroll to Teaching timetable (CSV).
  3. Paste CSV or select Load template.
  4. 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
  5. Select Preview import: review validation and diff (+ added / − removed).
  6. 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)

SchoolRota documentation. Every slot covered, every day.