# Importing your data

> Bring an existing asset register into AssetLab with the guided import wizard - templates, column mapping, and validation included.

Source: https://app.assetlab.ca/docs/start/importing-data

Most teams arrive with data - a CMMS export, a consultant's condition study, or the spreadsheet that has quietly run the department for years. The import wizard turns those files into live records without weeks of retyping.

## What you can import

The wizard covers some twenty record types, grouped in the order you should import them - each with a downloadable template, and dependent types unlock as their prerequisites arrive:

- **Users & access** - users and requesters
- **Foundation** - asset type groups, asset types, asset statuses, work categories, part categories, manufacturers, vendors, parts
- **Site hierarchy** - sites, buildings, locations
- **Asset classification** - system classes, system groups, systems, and **assets** (the most common starting point)
- **Maintenance & operations** - PM templates, PM schedules, work orders, projects
- **Documents** - bulk document upload

**Infrastructure features are not in this wizard.** Linear and spatial assets (roads, water, sewer) come in through the Infrastructure module's own import - see [Esri & GIS sync](/docs/infrastructure/esri-sync).

## Before you start

1. **Start from the onboarding workbook.** **Settings → Import** offers a **Download onboarding workbook** button - an Excel workbook with one tab per record type in import order, required columns marked, example rows, and dropdowns that keep cross-references consistent. Fill it in and upload the .xlsx directly; the wizard reads the tab that matches the record type.
2. **Or export from your current system to CSV or Excel.** One sheet per record type.
3. **Name your location columns consistently.** The wizard matches sites and buildings by name - "Building B" and "Bldg. B" become two buildings.
4. **Decide your classification mapping.** If the source has its own categories, map them to your [system classes](/docs/asset-management/classifications) up front.

## The wizard, step by step

Open **Settings → Import** and pick the record type.

### 1. Upload

Drop the file - CSV or Excel (.xlsx). For an Excel workbook the wizard reads the sheet named after the record type (the onboarding workbook layout), or the first data sheet otherwise, then reads the header row and samples the data.

### 2. Map columns

Each source column is matched to an AssetLab field - obvious matches are pre-filled, the rest you assign from a dropdown. Unmapped columns can be skipped, or - for **assets, work orders, sites, buildings, and systems** - captured into [custom fields](/docs/asset-management/custom-fields) so nothing is lost.

### 3. Configure auto-create

The **auto-create** switch (on by default) lets the import silently create referenced records that don't exist yet: sites, buildings, locations, manufacturers, asset types, and system classes, groups, and systems named in your rows. The wizard previews exactly what will be created before anything is written, and you can set a **default site** and **default building** as fallbacks for rows that leave those columns blank. Turn auto-create off when you'd rather the import fail on an unknown name than mint a "Bldg. B" duplicate.

### 4. Validate

Every row is checked before anything is written: missing required fields, unknown references, malformed dates. You get a row-by-row report; fix issues in the source file and re-upload.

### 5. Import

Rows are written. A row that matches an existing record **updates it in place**; new rows are created. There is no rollback - the corrected re-import *is* the correction mechanism: fix the source file, run it again, and matching rows update rather than duplicate.

> [!tip] Do a small pilot first. A 20-row import surfaces 90% of mapping problems at 1% of the cleanup cost - and since re-imports update in place, iterating on the same 20 rows is cheap.

## Field tips for asset imports

| If you have it | Map it to | Because |
|---|---|---|
| Install / in-service year | Installation date | Drives age, remaining life, and lifecycle forecasts |
| Replacement value | Replacement cost | Drives FCI and the replacement planner |
| Expected life (years) | Useful life | Otherwise defaults from the asset type |
| Condition rating | Condition | Seeds [condition history](/docs/asset-management/condition-assessments) |
| Serial / model numbers | Serial, Model | Enables warranty and recall lookups later |

## After the import

- Spot-check a sample of records against the source file.
- Open [Dashboards](/docs/asset-management/dashboards) - portfolio totals make systematic mapping errors obvious (a decimal-shifted replacement value jumps out immediately).
- Print [QR labels](/docs/asset-management/qr-codes) for the assets technicians touch most.

## Or set it up with an AI assistant

The wizard wants spreadsheet-shaped data. If yours isn't - a PDF condition study, five inconsistent exports, a consultant's report - or you have structure to design rather than columns to map, a connected assistant can read the sources and create the records for you, in the same dependency order this page uses. See [Set up & import with AI](/docs/ai/set-up-with-ai).

## Related

- [Import & export](/docs/manage/import-export) - ongoing exports and scheduled data pulls via the API.
- [REST API](/docs/reference/rest-api) - script your migration instead, using `bulk_create` endpoints.
