Connect a system through CSV files¶
The CSV Import crawler loads authorization data from CSV files you upload. Any system that can export a table — an HR platform, a PAM tool, a ticketing system, a home-grown application — can be loaded this way, as long as the files follow the Identity Atlas CSV schema.
Use this when there is no crawler for your source, or the source can only give you exports. If a crawler for your source exists — Entra ID, Azure, Omada, midPoint, SQL Server, SCIM — use that instead: it keeps the data up to date by itself.
What you get¶
Each file becomes one kind of data in Identity Atlas. Only Resources.csv, Users.csv and Assignments.csv are required; every other file adds depth.
| File | In Identity Atlas |
|---|---|
Systems.csv |
Systems. Without it, everything goes into the one system you name in the wizard |
Users.csv |
Accounts |
Resources.csv |
Resources — groups, roles, permissions. A row with ResourceType BusinessRole is a business role |
Assignments.csv |
Assignments: Direct, Indirect or Eligible. Assignments to a business role are marked governed |
ResourceRelationships.csv |
What each resource contains |
Contexts.csv |
Contexts, such as departments or teams |
ContextMembers.csv |
Who or what belongs to each context |
Identities.csv |
Identities — the people behind the accounts |
IdentityMembers.csv |
Which accounts belong to which identity |
Certifications.csv |
Review decisions |
The columns of each file are in the CSV schema reference. After each run, Identity Atlas links accounts to identities and rebuilds contexts. The words used here are explained in the glossary.
Before you start¶
- Files in the Identity Atlas schema. Column names must match the schema; the crawler does not guess. In the wizard, Download schema templates gives you empty CSV files with the right headers.
- A transform for your source, if its export looks different. Map the source's columns to the schema with a short script before you upload. An example script ships in
tools/csv-templates/transforms/; see Pre-import transformation.
Add the crawler¶
- Go to Admin → Crawlers and click Add Crawler.
- Pick CSV Import.
- System info. Enter a Display name, a System name and a System type, and pick the CSV delimiter. Click Next: Upload files.
- Upload files. Click Select folder or Select files. Each file is matched to its type by its name; you can change the match per file. The wizard reads the first line of each file and warns when a required column is missing. Required object types shows which of the three required files are still missing. Click Next: Review.
- Review. Check the summary and click Create crawler. The files are uploaded.
- The crawler appears as a card. Click Run Full to load the files.
To load a new export later, click Configure on the card, replace the files on the Upload files step, save, and run the crawler again.
Settings¶
| Wizard label | Meaning | Default |
|---|---|---|
| Display name | The name on the crawler's card. | CSV Import |
| System name | The name of the system the data goes into, when a row does not name one of the systems in Systems.csv. |
CSV Import |
| System type | A label used to group systems in the UI. | CSV |
| CSV delimiter | Semicolon (;), Comma (,), Tab or Pipe (|). | Semicolon |
File format¶
- Dates are ISO 8601.
-
Quoting follows standard CSV: a quoted value may contain the delimiter, a doubled quote (
""for") or a line break. So a comma-delimited file whose values are distinguished names loads correctly when those values are quoted:A row that cannot be read — a quote that is never closed, or text after a closing quote — fails the run with the file name and line number. A failed run never removes existing data. - Extra columns — columns that are not in the schema — are kept on the record and shown on its detail page, for every file except
Assignments.csv,IdentityMembers.csvandContextMembers.csv. The job log names the columns it ignores. You do not need to strip your exports first.
Large files¶
Resources.csv and Assignments.csv are read and sent in batches, so tens of millions of assignment rows are fine. The upload limit per file is set by the server (UPLOAD_MAX_FILE_BYTES, default 8 GiB) and shown on the Upload files step. When you edit a crawler, that step also shows the crawler's folder on the server: a file copied straight into that folder is read exactly like an uploaded one.
More than one system¶
A row's SystemName must match a system in Systems.csv, or the System name from the wizard. A row that names an unknown system is still loaded, into the wizard's system, and the job log warns with the number of such rows and the names it did not find. A blank SystemName is the normal single-system case.
Schedule and refresh¶
CSV Import has no schedule: it reads the files that are uploaded, so it runs when you start it. Run Full and Run Delta on the card do the same thing — every run is a full run. See Schedule and run crawlers.
What a refresh removes¶
Each run compares the files with what this crawler loaded last time. Records that are no longer in the files are removed, limited to this crawler's own systems. So always upload a complete export, not only the new rows. See What a full run removes.
Limitations¶
- Only the Identity Atlas schema is read. There is no column mapping in the wizard; transform your export first.
- No schedule. New data arrives when you upload new files.
- Extra columns in
Assignments.csv,IdentityMembers.csvandContextMembers.csvare not kept.
Troubleshooting¶
| Symptom | Cause / fix |
|---|---|
| The Upload files step says Missing column(s) for … | The file is matched to the wrong type, or its header does not follow the schema. Pick the right type for the file, or compare it with the schema template. |
| Next: Review stays disabled | One of the three required files — Resources, Users, Assignments — is missing. |
| A file is refused as too large | It is over the server's per-file limit. An administrator can raise UPLOAD_MAX_FILE_BYTES, or copy the file into the crawler's folder on the server. |
| The run fails with a file name and line number | That row could not be read, usually because of a quote that is never closed. Fix the row and run again. Nothing was removed. |
| The job log warns about an unknown system name | Some rows name a system that is not in Systems.csv. They were loaded into the wizard's system. |
Deep dive¶
- CSV schema reference — every file and column
- Schedule and run crawlers
- Ingest API