Skip to main content

Bulk Teacher Rollover

The Bulk Teacher Rollover page lets you reassign every classroom's responsible teacher in one upload — designed for the summer rollover when a new school year's room assignments need to land all at once instead of edited room-by-room.

You'll find it under Rooms → Bulk Teacher Rollover in the sidebar.

The Bulk Teacher Rollover upload page with a Choose File field and a Preview Rollover button

Who can use this

This page requires the Manage Room Roster Rollover permission. It's intentionally restrictive — one bad CSV can clear every classroom's teacher list — so it's granted to your Technology Director role by default. Add it to other roles through Settings → Administrators → Roles if you want building-level admins to be able to run their own campus rollovers.

How the workflow works

The page is a two-step, preview-then-commit flow. Nothing is written to your data until you confirm the preview.

  1. Upload your CSV of teacher → room assignments.
  2. Review the preview — every room appears with the teachers being added, the teachers being end-dated, and the teachers staying put. Any rows with errors are listed separately so you can fix them and re-upload.
  3. Click Apply Rollover — the system commits the whole batch in one transaction. If any single room fails, none of the changes land, and your data is unchanged.

CSV format

The file must include three column headers (case-insensitive) on the first row:

ColumnWhat it holdsExample
BuildingThe building's name OR its SIS building id OR one of its alternate idsOakwood High School or 10100
RoomThe exact room name as it appears under that buildingCounseling Office
Teacher EmailThe teacher's email OR their staff Local IDberniece.turcotte@oakwoodschools.org or T12345

The flexible matching on Building and Teacher Email means districts that key their rosters on SIS identifiers (rather than human-readable names) can drop their export straight in without translating it.

Each row pairs one or more teachers with one room. Two equivalent shapes work — pick whichever your source data already produces:

Shape 1 — one teacher per row, repeat the room:

Building,Room,Teacher Email
Oakwood High School,Counseling Office,berniece.turcotte@example.com
Oakwood High School,Counseling Office,jennie.hartmann@example.com
Oakwood High School,Science Lab B,tyree.kreiger@example.com

Shape 2 — multiple teachers in one cell:

Building,Room,Teacher Email
Oakwood High School,Counseling Office,"berniece.turcotte@example.com; jennie.hartmann@example.com"
Oakwood High School,Science Lab B,tyree.kreiger@example.com

Inside a single cell the importer accepts ;, |, ,, or line breaks as separators between emails — wrap the cell in double quotes if you use commas or line breaks so the CSV stays valid. The two shapes can also be mixed in the same file.

Duplicate and edge-case handling

The importer is deliberately forgiving:

  • The same teacher listed twice for the same room (whether by a duplicate row or a repeated entry in one cell) counts once. No error, no duplicate database row.
  • Case-insensitive matching everywhere. JANE@SCHOOL.ORG and jane@school.org resolve to the same teacher. Same for building names and room names.
  • Extra whitespace is stripped. Excel often leaves leading/trailing spaces — they don't break the lookup.
  • Empty cells in the email column are simply ignored on that row — they don't add a teacher and don't trigger an error.
  • A row with no teachers at all (the email cell is blank) explicitly clears that room's responsible-staff list when committed. If you want a room left untouched, omit it from the file entirely.

Starting from today's roster

The upload page has two download buttons:

  • Download Current Roster — a CSV of every room with its currently-responsible teachers, in the exact shape the rollover accepts. Open it in Excel or Sheets, swap in the new year's teacher assignments, and re-upload. Most rooms barely change year-to-year, so the edit footprint stays small.
  • Download Blank Template — a stub file with the column headers and a couple of example rows. Useful for first-time setup or when building a CSV from a different source.

Both downloads come back with today's date in the filename (e.g. room-roster-2026-05-16.csv).

Partial rollovers are safe

Rooms that aren't listed in your CSV are left completely alone — their existing teachers stay. You can roll over one campus at a time, or even one wing at a time, by only including those rooms in your upload.

Listed rooms are fully replaced

If a room appears in your CSV, the teachers in your CSV become the complete new list for that room. Any teacher currently responsible for that room who is not in the CSV will have their assignment ended.

The preview screen

After the upload, the preview screen shows four counters at the top and a per-room diff below.

The rollover preview showing 3 rooms, +4 adds, −4 end-dates, 1 error, and a per-room table

The four counters tell you:

  • Rooms in CSV — how many distinct (Building, Room) combinations were parsed
  • Teacher assignments to add — how many new responsibility rows will be created
  • Assignments to end-date — how many currently-active responsibilities will be ended
  • Rows with errors — rows that couldn't be matched to a real building, room, or teacher

The error section (when present) lists every row that won't be applied with the line number from your CSV and a one-line reason — for example "Room 'Library' not found under building 'Lincoln Elementary'." Fix these in your CSV and re-upload to include them.

The per-room table shows, for each room in your CSV:

  • Adding — teachers who'll get a brand-new responsibility row starting today
  • Ending — teachers whose current responsibility row will be end-dated today
  • Already on this room — teachers who were already responsible and stay unchanged

What gets recorded

When you apply the rollover, each room is updated using the same teacher-history system used by the single-room edit page:

  • Teachers being added get a new row in the room's history with today's date as the start date and no end date.
  • Teachers being ended keep their original row, with today's date added as the end date. They stay visible on the room's Staff History tab so you can see exactly who was responsible when.
  • The whole upload writes a single Activity Log line summarizing the totals (rooms updated, assignments added, assignments ended). Each individual room change does not generate its own log entry — that would flood the log during a 200-room rollover.

Common errors and how to fix them

MessageWhat to check
Building "X" not found.The Building column doesn't match an existing building name. Watch for typos and trailing spaces.
Room "Y" not found under building "X".The Room exists somewhere else, or the building name is off. Confirm both columns against your Rooms list.
No active staff user found for "email".The email doesn't match a user, OR the matching user isn't marked as Staff, OR the user is marked Inactive. Open the user's profile to confirm.
Building and Room are required.One of the first two columns is empty on this row.

Errors are reported once per offending row. Other rows in the same file still commit cleanly when you click Apply.

What this page doesn't do

  • It does not delete teachers from your district — it only ends their responsibility for the listed rooms.
  • It does not touch device assignments — devices stay where they are; only the room's responsible-staff list changes.
  • It does not retroactively rewrite history — every change is dated today. To correct a wrong start or end date after the fact, use the single-room edit page on Rooms → View Rooms.

Related articles

Loading…