Skip to main content

Import Class Schedules from OneRoster CSV

Manage1to1 can load your class schedules, who teaches what and which students are in each class, from OneRoster 1.1 CSV files. You don't need the OneRoster API connection or the PowerSchool plugin. If your district already rosters people from a nightly CSV (see Roster PowerSchool for Free), this is how you add their class schedules on top.

OneRoster is the standard that student information systems use to describe classes and enrollments, so PowerSchool, Infinite Campus, Skyward, and others can all export these files directly. Manage1to1 reads the two files that describe course rosters: classes.csv (the sections being taught) and enrollments.csv (which students and teachers are in each one).

When to use this

This is for districts that roster classes from CSV. If Manage1to1 already syncs your classes from the OneRoster API, keep using that. Manage1to1 will not let a CSV class import run while API class sync is on, because the import replaces the class roster and the next API sync would overwrite it.

The two files​

You upload two OneRoster 1.1 files. classes.csv is required; enrollments.csv is what actually places students and teachers into those classes, so you'll almost always want both.

classes.csv​

One row per class or section. These are the OneRoster 1.1 columns Manage1to1 reads:

ColumnRequiredWhat it is
sourcedIdYesA stable unique id for the class. Manage1to1 keys on this, so keep it consistent between imports.
titleRecommendedThe class name, for example "Algebra I" or "Homeroom Grade 9".
classCodeOptionalThe section code.
classTypeOptionalscheduled or homeroom. A class also counts as a homeroom when its title contains "homeroom", which covers the many SIS exports that mark every class scheduled.
gradesOptionalComma-separated grade levels; the first is shown.
locationOptionalThe room, for example "Room 204".
courseSourcedIdOptionalLinks the class to a course.
schoolSourcedIdRecommendedThe school this class belongs to. See Matching your data.
termSourcedIdsOptionalComma-separated academic session ids; the first is used.
statusOptionalactive, or tobedeleted to drop it.

enrollments.csv​

One row per person in a class (a student or a teacher):

ColumnRequiredWhat it is
sourcedIdYesA stable unique id for this enrollment row.
classSourcedIdYesThe class's sourcedId from classes.csv.
userSourcedIdYesThe student's or teacher's id. See Matching your data.
roleRecommendedstudent or teacher.
primaryOptionaltrue for the class's primary teacher.
schoolSourcedIdOptionalThe school id.
beginDate / endDateOptionalThe enrollment dates.
statusOptionalactive, or tobedeleted to drop it.

Matching your data​

Two ids connect the files to what's already in Manage1to1. Get these right and everything lands in the correct place.

  • schoolSourcedId matches your Building Code. The class's schoolSourcedId has to equal the Building Code on the matching Manage1to1 building (the same SIS id your people import uses). When it matches, the class is filed under that building. A class whose school Manage1to1 hasn't onboarded still imports, it just isn't tied to a building.
  • userSourcedId matches the person's Local ID. An enrollment's userSourcedId has to equal the Local ID on the student or staff record (the id your student and staff imports already use, for example S00151 or T0100). Import your people first so those records exist; an enrollment whose id isn't found is kept, but no one is placed until that person is imported on a later run.

Because it uses the same building codes and Local IDs as your student and staff imports, a class import lines up with the people you already have with no extra mapping.

Import the files​

  1. Go to Settings > System Utilities and open the Users tab.
  2. Find the Class Roster (OneRoster CSV) card.
  3. Drop your classes.csv onto the first upload area, and your enrollments.csv onto the second.
  4. On the right, click Process Class Import.

Manage1to1 reads both files and reports how many classes and enrollments it loaded. The result also lands in the Activity Log.

Processing replaces the current class roster

A class import is an authoritative replace: Manage1to1 loads everything in your files and removes classes and enrollments that are no longer in them. Upload a complete set (every current class and enrollment), not a partial file, unless you intend the missing ones to be removed. If a file is missing a required column, the import stops and tells you which column, before changing anything.

Automate it (nightly import)​

Uploading by hand is the quickest way to get started, but most districts want their class roster refreshed on its own. If your student information system can drop files onto an sFTP folder each night, Manage1to1 can pick them up and import them for you.

  1. Have your SIS write classes.csv and enrollments.csv to your Manage1to1 sFTP folder on a nightly schedule. These are the same two files, with the same columns, you would upload by hand.
  2. In Manage1to1, go to Settings > System Automation.
  3. Find Automated Import (Class Schedules) and turn on Process Class Roster Files Automatically.
  4. Save.

Each night Manage1to1 reads whatever classes.csv and enrollments.csv are sitting in the folder and imports them, exactly as a manual upload would. If no files are present that night, nothing changes.

The nightly import is the same authoritative replace as a manual one: it loads everything in the files and removes classes and enrollments that are no longer in them, so have your SIS write a complete set each time.

If you sync classes from the OneRoster API

Leave this toggle off when your classes already come from the OneRoster API. The two methods each treat their own source as the complete roster, so running both would have them undo each other. Pick one: the nightly CSV import, or the API sync.

Where the results show up​

Once imported:

  • Settings > Classes lists the classes for a building, with the primary teacher and student count.
  • Opening a class shows its Class Roster: the teachers and the enrolled students.
  • Each student's profile has a Schedule tab showing the classes they're enrolled in, and their homeroom if one of their classes is a homeroom.

These views are read-only; they reflect whatever your most recent import loaded.

Example files​

classes.csv

sourcedId,status,title,grades,classCode,classType,location,courseSourcedId,schoolSourcedId,termSourcedIds
C-101,active,Algebra I,09,MAT101-1,scheduled,Room 204,CRS-MAT101,10100,T1
HR-9A,active,Homeroom Grade 9,09,HR-9A,scheduled,Room 102,,10100,T1

enrollments.csv

sourcedId,status,classSourcedId,schoolSourcedId,userSourcedId,role,primary,beginDate,endDate
E-1,active,C-101,10100,S00151,student,false,2026-08-25,2027-06-12
E-2,active,C-101,10100,T0100,teacher,true,2026-08-25,2027-06-12
E-3,active,HR-9A,10100,S00151,student,false,2026-08-25,2027-06-12

That set creates two classes at the school whose Building Code is 10100, one of them recognized as a homeroom from its title, places student S00151 in both, and sets teacher T0100 as the primary teacher of Algebra I.

Troubleshooting​

The import stopped and named a missing column. Your file is missing a required OneRoster column. classes.csv needs sourcedId; enrollments.csv needs sourcedId, classSourcedId, and userSourcedId. Export the standard OneRoster 1.1 files from your SIS and try again.

Classes imported but no students appear in them. Check that you uploaded enrollments.csv as well, and that each userSourcedId matches a student or staff Local ID already in Manage1to1. Import your people first if needed, then re-run.

A class shows no building. Its schoolSourcedId doesn't match any building's Building Code. Line up the Building Code before the next import; see Switching Your Roster Source for how building ids are matched.

The import won't run. If your district syncs classes from the OneRoster API, the CSV import is blocked on purpose so it can't overwrite the synced roster. Turn off OneRoster class sync first if you want to load classes from CSV instead.

Related articles

Loading…