The wizard imports three entity types: students, PACE progress, and grades. Attendance history is not supported, since attendance data in most legacy systems is inconsistent and risky to import automatically.
Where to find it
Administrators reach the wizard from the sidebar Import item, which opens/admin/import. The page also links to a Data Preparation Guide with prompts you can use to clean up a legacy export before uploading it. No AI runs inside Zion during the import itself; the guide is only a preparation aid.
File requirements
| Requirement | Limit |
|---|---|
| File type | CSV (.csv, text/csv, text/plain, or application/vnd.ms-excel) |
| Maximum file size | 10MB |
| Maximum rows | 10,000 data rows |
The four-step wizard
Upload
Select or drag in your CSV and choose which entity type it contains: Students, PACE Progress, or Grades. Zion parses the file, shows you a sample of the first rows, and asks you to confirm before saving the session.
Map columns
Match each column header from your CSV to a target field in Zion. Common headers are auto-detected. For example, columns named
dob, date_of_birth, or birthday are all recognized as the student’s date of birth. Any column you don’t need can be set to “Ignore this column.”Required fields differ by entity type. See CSV Templates for the full field list per entity, including accepted header names.Dry-run preview
Zion classifies every row as create, update, or skip without writing anything to the database. You see totals for each outcome, up to 10 sample rows per outcome, and up to 200 warnings explaining why a row would be skipped.
Commit
Once you approve the preview, the import runs as a single transaction. Either every row is written or none are. If the commit fails partway through, the whole batch rolls back and the session returns to its dry-run state so you can fix the file and retry. Every commit, successful or not, writes an audit log entry.
Required fields per entity
| Entity | Required fields | Identifier rule |
|---|---|---|
| Students | First name, last name | A resolvable learning centre name, or the org’s default centre, is required to create a record |
| PACE Progress | Subject, PACE number, status | Needs a student code, or both student first and last name |
| Grades | Subject, assessment name, score | Needs a student code, or both student first and last name |
completed, in_progress, or not_started. Grade scores must be a non-negative number no greater than 999.99.
How rows are matched
Zion matches an incoming row to an existing record first by student code, and if that isn’t present, by exact match on the lowercased full name. If two rows in the same CSV would otherwise create the same record (for example, the same student, subject, and PACE number), the second row is treated as an update to the first, mirroring how the database itself would resolve the conflict.Common reasons a row is skipped
- Missing first or last name (students)
- A date of birth that can’t be parsed, or an impossible date
- No resolvable learning centre and no org default centre set (students)
- Missing subject, PACE number, or an invalid status (PACE progress)
- Missing subject or assessment name, or a score outside the allowed range (grades)
Need help with a larger or more complex migration instead of running the wizard yourself? See Migration Concierge for the paid, staff-assisted option.
CSV Templates
Column names, formats, and required fields for each importable entity.
Migration Concierge
Have Zion staff run your import for you.
Students overview
How student records work once they’re in Zion.
Exporting your data
Request CSV and PDF exports of your school’s data.