Where: Settings → "Import / Migrate Data"
Moving from paper, spreadsheets, or another system? Import each list as a CSV (a plain spreadsheet file). Use our template, or upload a report straight from your old system and match its columns to ours.
- Click "Settings" in the sidebar, then "Import / Migrate Data" in the Settings menu. You can also get there from the "Import CSV" button on the Courses page, or the "Moving in from another system?" banner on Reports.
- Under "What are you importing?", pick a type: "Short courses", "Qualifications & skill sets", "Units of competency", "Trainers", "Students", "Enrolments", or "Unit results (migration)".
- Importing students? Check "Login emails" before you go further. It starts on "Don't send anything — just import the records (default)", which is right for migrated or past students: nothing is emailed, no logins are created, and you can invite people one at a time later. Only pick "Email every student a login invite" if this group should get portal access today — every student with an email address is emailed the moment the import runs, and emails can't be unsent.
- Click "Download a template (with examples)". The file has the headers and two realistic example rows. The "Columns for …" box on the page explains what each column accepts — plain words like "Female" or "Australia" work alongside the official codes.
- Fill the template in Excel or similar, then save it as CSV. Or skip the template and export a report from your old system as CSV.
- Under "Choose your CSV file", pick your file. If you pick an Excel workbook by mistake, the screen says so and tells you how to save it as CSV. Title rows above your headings (a report name, the date it was run) are skipped for you. If the file looks like a different list from the one you picked, the screen offers to switch.
- If the file's headings don't match the template (for example an aXcelerate or Cloud Assess report), a "Match your columns to ours" step opens instead of the import failing. For each heading under "Our column", pick the matching one under "Your column" — the ones we recognise are filled in for you, and "First row's value" shows what will come across. Leave "— skip —" on anything you don't have, then click "Apply and check the rows". Dates are always read day first (03/04/1990 is 3 April), and a date we cannot read for certain is refused with a plain message rather than guessed. Ordinary words work for the fixed-choice columns (for example "face to face" for how a course is delivered, or "No" for Indigenous status), and the column guide on the screen lists the words that work. Files made from the template skip this step.
- On "Check before importing", look over the rows. You'll see how many are ready, how many can't import because a required field is missing, and how many have a value that will import blank. Hover over the icon in the "OK?" column to see what's wrong with a row. Nothing has been imported yet — "Back" takes you out without changing anything.
- Importing people's records (students, trainers, enrolments or unit results)? Read the declaration under "Before you import people's records" and tick "I make this declaration on behalf of our RTO". The import button stays off until you do. You tick it for every import, and it is recorded against that import with the date and who ticked it.
- Click the import button — it shows the number of ready rows, for example "Import 42 records". The result shows how many were imported and how many were skipped.
- Skipped rows are listed under "Rows we couldn't import" with the row number and the reason (for example an email that already exists). Rows that came in but have something for you to check (a USI we could not read, for example) are listed separately under "Imported, but worth a look". Those are counted as imported, so the imported and skipped numbers add up to the rows you sent. Fix those rows in your file and import again. It is safe to send the same file twice: people, courses and units already in RTO Grow are skipped, never doubled. If two of your courses share a code, the screen tells you so; keep one course with that code and send the rows again.
- Work through the types in the order shown under "Import in this order so links resolve": courses, then units, trainers, students, and enrolments. Unit results go last — the student must already be enrolled in the course, and the unit must be attached to it.
Enrolments that are already finished
Every row with the status "completed" needs two extra columns filled in:
completed_at — the real completion date. It decides which reporting year the enrolment belongs to, and it can't be added later.
avetmiss_ready — has this already been reported to NCVER by your old system? Put "false" if it has (the usual case when you migrate — it keeps those students out of your NAT files so they aren't reported twice), or "true" if RTO Grow should report them.
Completed rows are treated as already having their certificate, so no new one is made or emailed. Put "false" in cert_issued only if you want RTO Grow to issue one.
A student who finished the same course twice (a renewal, for example) can have one enrolment per offering. The first time imports as normal. For the second time, open the course, add an offering for it (for example "2023 renewal"), copy that offering's ID from the end of its page address into the variant_id column on that row, and import the row. The screen explains this on any row it affects.
Unit results (migration)
Use this type to bring across the unit outcomes students earned in your old system.
- In the
outcome column, use words ("competent", "not yet competent", "credit transfer", "rpl granted", "rpl not granted", "withdrawn", "did not start") or the NCVER outcome codes (20, 30, 40, 51, 52, 60).
marked_at is required: the real date the result was awarded. It decides the reporting period, so never put today's date as a stand-in.
- A result a trainer has already recorded in RTO Grow is never overwritten. That row is skipped and the reason says so.
- If the file would finish every unit on an enrolment that has no completion date, those rows are refused. Import the enrolment again with its real
completed_at, then import the results.
- Under "Where is this data coming from?", pick your old system so the record of this import says where the results came from.
Big files
A very long list goes in as several smaller parts automatically. You don't need to split anything by hand. On "Check before importing" you'll see "This is a long list, so it will go in as 5 parts, one after another. Keep this tab open until it finishes." (the number of parts depends on how long your list is). Click the import button as usual. The page sends each part in turn and shows "Part 2 of 5 · 1,200 of 2,696 rows sent" while it works. Each part appears as its own entry under "Recent imports", with its own "Undo".
If a part doesn't finish (for example the connection drops), the import stops there. Everything already in stays in, and the page tells you exactly which parts landed and which didn't. Click "Send the remaining N rows" to carry on from where it stopped. Students already in are skipped rather than doubled, an enrolment that's already in is refused rather than doubled, and a unit result that's already in is simply updated again.
Very occasionally, one row (or for unit results, one student's whole set of results for one enrolment) is too big on its own to send. Then you'll see "This file is too big to import in one go" and the import button stays off. Nothing has been imported. Split that part of the list into a smaller file by hand and import it separately.
What happens next
Imported students and trainers get an "Imported" badge in their lists, and each run appears under "Recent imports" with an "Undo" button. Undo removes the records that import created — unless something has since been used (enrolled, paid, marked, certified, or reported to AVETMISS), in which case the undo stops rather than break anything.
If something looks wrong
If you see "This page is out of date", RTO Grow was updated while the page sat open and nothing was imported. Click "Reload the page" and run the import again.
If you see "The import didn't finish", we didn't get an answer back, so we can't tell how far the import got. Look under "Recent imports". If this file is listed, some rows went in — click "Undo" before you try again. If it isn't listed, nothing was imported.
A long list running for more than a few minutes is the usual cause. See "Big files" above, which now goes in as several parts automatically so this shouldn't happen on an ordinary file any more. If you do see it on one part of a long list, its entry under "Recent imports" stays on "In progress"; click "Undo" on that part, then use "Send the remaining N rows" on the preview screen to carry on with the rest.