Feature · Get started

Bring your people and your org chart with you

Nialtus takes your organization the way it already exists: a cost center hierarchy out of your ERP, a staff list out of your HRIS, a spreadsheet from finance, or nothing at all. Two CSVs and an API, no project plan.

Nialtus org structure import
Org structure from CSV
People from CSV
Cost centre numbers
Nightly HRIS sync
Preview before anything is written

Nobody starts from an empty workspace.

Your departments, your teams, your cost centers and your staff list already exist somewhere. The job is not to recreate them by hand. It is to get them in, keep them right, and keep them in step.

Today
How this usually goes
Somebody retypes the org chart from a PDF, one department at a time
People are dumped in as a flat list, so every report is a flat list too
Teams are lost because the importer only understood departments
The finance system’s numbers never make it in, so chargeback is manual
Six months later the structure is stale and nobody owns it
With Nialtus
How it goes here
Import the hierarchy your ERP already exports, parents and all
See exactly what would change before a single row is written
People land in the team they actually work in, not the department above it
Your cost center numbers come with them and stay attached
An API call from your HRIS keeps it in step, nightly, without anyone remembering

Four ways in

Use whichever one matches what you already have.

From your ERP

Export the cost center hierarchy: the centre is the code, the node above it is the parent. That file imports as it stands, with the numbers intact, however many levels deep it goes.

From a spreadsheet

Five columns, most of them optional. Download the template, fill it in, upload it, look at what it would do, then apply it. A unit already here is matched and updated rather than duplicated.

From your HRIS

Post up to 500 people at a time to the sync endpoint and run it nightly. People are matched on email or employee number, so the same call creates who is new and updates who has moved.

From nothing at all

Type the departments in, drag them into shape, and name a manager for each. Or import people with a department column and let the structure build itself as they land.

Start from the file you already have

The importer reads the five columns an ERP export already contains: the unit’s own number, its name, the number or name of the unit above it, and the email of whoever runs it. A row with no parent is a department at the top. Everything else hangs off what you name.

There is no depth limit worth worrying about. Divisions inside divisions inside regions all import in one pass, because the file is read as a whole rather than row by row.

  • code, name, parent_code, parent_name, manager_email
  • Any number of levels, in one pass
  • Only name or code is required
organization.csv
code,name,parent_code,manager_email
CC-1000,Operations,,[email protected]
CC-1100,Warehouse,CC-1000,
CC-1110,Night shift,CC-1100,
CC-2000,Sales,,[email protected]
The cost center is the code. The node above it is the parent_code. That is what an ERP exports.
Before anything is written
Operations · CC-1000added
Warehouse · CC-1100 · inside CC-1000added
Sales · CC-2000updated
Row 14: no name and no codeskipped
Import 118 unitsCancel
Import the same file twice and nothing changes. Nothing is ever deleted.

Nothing is written until you have looked at it

Choose the file and the screen tells you what it would do, unit by unit: what would be added, what is already here and would be updated, and any row it cannot use, with the line number. You apply it, or you cancel it.

Applying takes three passes, because a hierarchy in a file is never sorted parents first: every unit is created or updated, then each one is put under its parent, then the managers are set. A unit already in the workspace is matched on its number, or on its name when it has none, so importing the same file twice changes nothing at all. Nothing is ever deleted by an import.

  • Added, updated and skipped, per row
  • Three passes so parents resolve
  • Run it twice, nothing changes

People land in the team, not just the department

Most importers understand one level, so everybody ends up sitting directly under a department and every report you run afterwards is one level deep. Here a person can be placed by the unit’s number, in a department_code or cost_centre column, or by a path: Operations / Warehouse / Night shift. Any step of that path that does not exist yet is created as you go.

Somebody with no work email is imported too. They get an employee number and a PIN and sign in on a shared device, which is how most of a factory or a hotel actually works.

  • By cost center number
  • By path: Operations / Warehouse
  • Frontline staff with no email
people.csv
first_name,last_name,email,department_code
Priya,Nair,[email protected],CC-1000
Omar,Haddad,[email protected],
department: Operations / Warehouse
Sunil,Rao,,CC-1110
A number, or a path. Sunil has no email: he signs in on a shared device with an employee number and a PIN.
Operations
WarehouseCC-1100
People here84
ManagerPriya Nair
Compliance due this quarter12
The number follows the unit into every report, so learning can be charged back the way finance already books it.

Your numbers come with you

Every department and team can carry your own number for it: a cost center, a profit centre, a GL segment, whatever your finance system calls it. It is optional, it does not have to be unique, and two units can book to the same centre.

Once it is in, it is what the importers match on, what the people file points at, and what shows next to the unit on screen, in the chart and in every export. Training spend can be read back the way finance already books it, without a mapping table in the middle.

  • Optional and not unique
  • Shown on screen, chart and exports
  • What both importers match on

No system at all, and no file

Plenty of organizations keep the org chart in one person’s head. Type the departments in, add teams inside them, and drag anything into place: drop a unit onto another to make it a team inside it, or onto the bar at the bottom to bring it back up as a department.

When you would rather see it than edit it, the Chart view draws the whole structure with headcount and manager per box, and prints as a PDF for the people who do not have an account here.

  • Type it in and drag it into shape
  • Or let a people file build it
  • Chart view prints as a PDF
No file? Build it here
Drag a unit onto another to nest itdone
Drop it on the bar to bring it back updone
Download the template and fill it inor
Import people with a department columnor
A people file with departments in it builds the structure on its own, one unit at a time.
POST /api/v1/users/sync
created 34updated 1,208
Up to 500 people a call. Matched on email, or on employee number. Run it nightly from your HRIS.

Keep it in step without remembering to

A structure imported once is accurate for about a month. The sync endpoint takes up to 500 people a call and matches each one on their email or their employee number, so the same nightly job creates the joiners, moves the movers and updates the titles.

It understands the same two things the CSV does: a unit number, or a path. A field you send is authoritative, so clearing it in your HRIS clears it here, and your HR system stays the single source of truth.

  • Up to 500 people a call
  • Matched on email or employee number
  • Your HRIS stays the source of truth

What it unlocks the moment it is in

The structure is not filing. It is what half the platform reads. Enrollment requests go to the unit’s manager, and units without one walk up to the nearest parent who has. Reports, compliance and skills gaps are all read per department. An administrator can be confined to one branch and will only ever see the people inside it.

And every effectiveness figure, the whole Kirkpatrick reading of whether a course worked, can be sliced by the team it was run for.

  • Approvals route to the unit manager
  • Reports and compliance per department
  • Branch admins confined to their branch
Once the structure is in
Approvals go to the right managerautomatic
Reports filter by departmentautomatic
Compliance is read per departmentautomatic
Branch admins see only their branchautomatic
Everything that reads “by department” is reading the structure you just imported.

How it works

Twenty minutes, most of it looking at a preview.

1

Export what you have

A cost center hierarchy from the ERP, a staff list from the HRIS, or a spreadsheet from whoever keeps it. If you have none of those, download the template.

2

Import the structure

Upload it, read the preview of what would be added and updated, then apply it. Managers are set in the same pass.

3

Import the people

Upload the staff list with a department number or path against each person. Everything missing is created. Frontline staff with no email come in with employee numbers.

4

Check it on the chart

Switch to the chart view, see the whole organization, and drag anything that landed in the wrong place.

5

Point your HRIS at the sync endpoint

Run it nightly and stop thinking about it. Joiners, movers and leavers arrive on their own.

What you get out of it

The reason this is worth doing properly on day one.

Reports that match your org
Every figure can be read by department, team or branch, because the structure underneath is the real one.
Approvals that route themselves
Requests go to the unit’s manager, or the nearest one above it.
Chargeback without a mapping table
Your cost center numbers are attached to the units, so finance recognizes what comes out.
A structure that stays true
Nightly sync from your HRIS, rather than an annual retyping exercise.

What the importers handle

All of it optional, none of it a project.

Cost centre hierarchy
code, name, parent_code: the shape an ERP exports.
Any depth
Divisions inside regions inside groups, in one pass.
Managers
Set by email in the same file as the structure.
Preview first
Added, updated, or skipped with the line number.
Idempotent
The same file twice changes nothing. Nothing is deleted.
People by number
department_code, unit_code or cost_centre.
People by path
Operations / Warehouse / Night shift.
Frontline staff
No email: employee number and a PIN on a shared device.
Custom fields
Whatever your profile form asks for, imported with them.
HRIS sync API
500 people a call, matched on email or employee number.
Templates
A filled-in example file for both imports.
Export back out
Your structure as CSV, whenever you want it.

Learning Everest has rolled training out inside manufacturing plants, hospitals and retail chains where the org chart is the hard part. Nialtus was built by the people who had to keep asking for it.

Questions about getting your data in

Straight answers, including where this stops.

Send us your export

Give us a sample file from your ERP or HRIS and we will tell you exactly what it would build.

Book a demo

That is the normal case and the one the importer is built for. Give it code and parent_code and it will assemble the hierarchy itself.
No. A unit is matched on its number, or on its name when it has none, and updated in place. Units that are not in the file are left alone. An import never deletes anything.
Yes, either by pointing at the team’s number, or by giving the department as a path such as Operations / Warehouse. Missing steps are created.
Yes, on Scale and Enterprise, with single sign-on and SCIM 2.0, so your identity provider creates, updates and deactivates people. Without SCIM, keeping people in step is done with the sync endpoint, which takes up to 500 records a call and matches on email or employee number. Most HR systems can call it on a schedule.
They are imported as frontline accounts: an employee number and a PIN, used on a shared device or a kiosk. The import hands you their PINs once.
The upload and preview are immediate. The time goes on reading the preview, which is the part worth doing carefully.
Yes, as a CSV in the same columns it came in with, at any time.

Bring it all across

Your structure, your people and your numbers, in an afternoon.

© 2026 Nialtus  ·  Part of Learning Everest Private Limited  ·  Privacy  ·  Cookies  ·  Terms