Bulk Validate¶
Bulk Validate lets you upload a CSV or XLSX export of every student's course requests and check, in one pass, whether each student's schedule satisfies their student type's rules. The check runs entirely in your browser — nothing is written to the database, and the report disappears when you reload the page.
Access it from the 📋 Bulk Validate tab in the navigation bar.
When to use it¶
- The school's Student Information System (SIS) has produced a roster of every student's requested courses for next year, and you want to know which students are missing requirements before placements are finalized.
- You've changed a student type's required classes or a requirement group's contents and want to find every existing student now affected.
- You want a quick sanity check that the school's catalog and student types are consistent with what the SIS is sending.
What gets checked¶
For every student in the file, Bulk Validate runs the following checks:
| Check | Severity | Description |
|---|---|---|
| Unknown course | Warning | A course number in the file is not found in the catalog. Often means a code mismatch — see renaming course codes. |
| Grade mismatch | Warning | The course is not offered in the student's grade. |
| Term mismatch | Warning | The course is not offered in the term/semester the request is for. |
| Block mismatch | Warning | A full-year course (blocks: both) was requested for one block only, or a single-block course was requested with a different block. |
| Duplicate course | Error | The same course appears more than once in the same term for the same student. |
| Period conflict | Error | Two courses are scheduled in the same term + block + period for the same student. |
| Full-year incomplete | Warning | A blocks: both course appears in only one of Term 1 or Term 2. |
| Missing requirement | Error | A required class or required group from the student type is not satisfied. |
| Partial requirement | Warning | A requirement is partially satisfied — for example, a core class appears in Term 1 but not Term 2. |
| Term ignored | Note | The school uses two semesters; rows with Term 3+ are skipped (informational only). |
A student is clean when they have no errors and no warnings. Notes (Term 3 rows) do not disqualify a student from the clean list.
Student type detection¶
Each student is auto-classified based on the courses they signed up for:
- If any of their requested courses has its Immersion Language set to German, the student is validated against the German immersion student type.
- Otherwise the standard student type is used.
The two type assignments are configurable on the Bulk Validate page. The app pre-fills:
- Standard student type — the first student type whose
Immersion Languageis empty. - German immersion student type — the first student type whose
Immersion LanguageisGerman.
If your school has more than one type in either bucket, pick the right one before running the validation.
Expected file format¶
Bulk Validate accepts CSV and XLSX files. The first row must be column headers; one row per course request. Multiple rows per student are normal — every row that shares a student number is grouped together.
The following column headers are recognized. Other columns (advisor, teacher, room, miscellaneous textboxes) are ignored.
| Column | Required | Format | Notes |
|---|---|---|---|
StudentID |
Yes | ID: 7249 or 7249 |
The ID: prefix is stripped if present. Used to group rows. |
Grade |
Yes | Grade: 8 or 8 |
The Grade: prefix is stripped if present. |
Textbox7 (or Term) |
Yes | Term 1, Term 2, 1, 2 |
Term 1 maps to the first configured semester (typically Fall); Term 2 maps to the second (typically Spring). Term 3+ is informational only and skipped. |
Period |
Yes | A,B/2, A/5, B/1 |
BLOCKS/PERIOD. A,B means the course occupies both A and B blocks of the period (full-year pairing). |
CourseNumber |
Yes | 2004F-1, 5002-1 |
The trailing -N section number is stripped before lookup. The remainder must match a course's code in the catalog. |
CourseName |
No | Math 8 |
Display only. Helpful in the report. |
Course code alignment
The most common cause of "course not found in catalog" warnings is a mismatch between the catalog's course codes and the SIS's course numbers. The fastest fix is to update the catalog so each course's Code matches the SIS's number (without the -N section suffix). Use the Rename code action so existing student types, requirement groups, teachers, and prerequisites cascade automatically.
Run a validation¶
- Navigate to 📋 Bulk Validate.
- Confirm the Standard and German immersion student type assignments at the top of the page.
- Click Choose CSV or XLSX… and select the file.
- The page processes the file in your browser and shows three summary tiles: total students, clean count, and issues count.
- Switch between the Issues, Clean, and All filter tabs to drill in.
Click any student row in the Issues view to expand and see every error, warning, and note attached to that student.
Download the report¶
Click ⬇ Download report (.csv) to save a CSV with one row per issue (or one row for a clean student). Columns:
StudentID, Grade, StudentType, Status, Severity, Category, Message
The report is generated from whatever is currently on screen — including any student-type-assignment changes you made — so you can re-run with different settings and download a fresh report each time.
Privacy and retention¶
Nothing on this page is written to the database:
- The uploaded file is read entirely in the browser.
- Validation runs in memory.
- The on-screen report and the downloaded CSV are the only outputs.
- Reloading the tab clears the report.
This makes Bulk Validate safe to run with raw SIS exports that include student names and IDs. If you save the downloaded report to disk, treat it like any other file containing student data.
Related topics¶
- Build a Student Schedule — single-student validation in the Validator
- Check Requirements — what counts as a "met" requirement
- Set Up Courses — including how to rename a course code
- Student Types — how rules are defined per type per grade