Orbit documentation

Workflow: onboarding existing data (multi-step import)

Move an organisation's existing caseload from spreadsheets or another system into Orbit: staff, clients, cases, follow-ups, appointments, employers, postings and applications, with reusable templates and in the right order.

Needs: imports.write and settings.write. Allow half a day for a small organisation; most of the time goes into preparing the files.

Plan

  1. List what you're bringing over and the source of each file.
  2. Decide the cut-over date. Import historic data once; for anything still changing (open cases, upcoming appointments) do a final import at cut-over.
  3. Pick a test run. Do the whole sequence once on a test or demo organisation if you have one (ask your platform operator to provision one with Demo data: None).

Step 0: Configure before importing

Imports only link to existing settings; they never create them.

Configure Where Why
Sites Settings → Sites Rows refer to sites by name or code
Client statuses, case types/statuses/priorities/programs, appointment types/statuses, event types/statuses, employer statuses, job posting statuses, employment and workplace types, application stages and statuses, staff roles/statuses/departments Settings → … definitions Lookups match these codes
Users who will run imports Admin → Users imports.write

Make a mapping sheet that lists, for each value in the old system, its Orbit code. For example Open - Active → open, On hold → pending.

Definitions

Step 1: Prepare the files

One CSV per record type. Use the import recipes for required columns, and start from the sample files:

# File Sample
1 People (staff persons) people.csv
2 Staff staff.csv
3 Clients clients.csv
4 Cases cases.csv
5 Follow-ups follow-ups.csv
6 Appointments appointments.csv
7 Events events.csv
8 Employers employers.csv
9 Employer contacts employer-contacts.csv
10 Job postings job-postings.csv
11 Applicants applicants.csv
12 Job applications job-applications.csv

Rules that save the most rework:

  • Emails are keys. Every person (staff, client, applicant) needs a unique email, because later files find people by it.
  • Give every case a case number and every posting a posting code. Later files refer to them.
  • Date-times need an offset (2026-11-10T10:00-05:00).
  • Codes, not labels, for dropdown values (labels usually work too).
  • Save as CSV UTF-8.

Step 2: Import in order, saving a template each time

For each file, in the order above:

  1. File Uploads → CSV import wizard.
  2. Choose the Primary record type. Set Duplicates to Replace / update matches (safe to re-run).
  3. Upload the file and check the mapping and Definition checks. Fix the file or add missing definitions until every check says All values match.
  4. Save as template, named for example Migration 01 – people, Migration 02 – staff…
  5. Run import and read the results.
  6. Fix any failed rows (see troubleshooting) and re-run the corrected file. Records that already imported are updated, not duplicated, for types that support matching.
  7. Spot-check a few records in the app before moving to the next file.

Save template

Careful with re-runs: Follow-ups, appointments, events and employer contacts have no duplicate matching. For those, re-run only the failed rows.

Step 3: Finish what imports don't do

From What imports don't do:

  • Users: create logins for staff and link them to the imported staff profiles (Users and access).
  • Availability: set working hours for bookable staff.
  • Job postings: edit to set Published at, NOC codes and tags.
  • Employers: add NAICS codes (filter Missing NAICS assignment).
  • Events: turn on public registration where needed.
  • Client career interests: add NOC codes (filter Missing specific NOC code).

Step 4: Verify

  • Compare counts: Reports → Overview (active clients, open cases) and the list totals, against the source system.
  • Run Case Pipeline, Employer Status and Applications by Stage starters and compare.
  • Open File Uploads → Recent imports, check every job is Completed with the expected failed count (ideally 0), and download the source of any that look wrong.

Recent imports

Step 5: Cut-over delta

At go-live, export only records changed since the first import. Run each through its saved template with Run from template; Replace / update matches updates what's already there.