Asset Management

Importing assets from a CSV file

The three step CSV import, the template columns, the row limits, and how existing devices are matched instead of duplicated.

2 min read Updated 8 September 2026

Click Import CSV on the Assets page to load many devices at once. It is a three step flow: Upload, Review and fix, then Done.

The import assets from CSV dialog showing the template download and the drag and drop area

Start from the template

Click Template to download Raal-asset-import-template.csv with the exact columns Raal expects:

serial_number, model, manufacturer, category, status, warranty_start, warranty_end, warranty_provider, holder_business_email, holder_private_email, holder_name, holder_phone, location_country, location_address, notes, condition_grade, enrolled_in_mdm, assigned_at, device_in_use_from

Only model is required. Header names are matched loosely, so an export of your own that uses serial, brand, holder_email, mdm, grade, country or address will still be understood. enrolled_in_mdm accepts yes, no, true, false, 1 and 0.

Existing devices are updated, not duplicated

Rows are matched to your register by serial number. A row whose serial already exists updates that device. A row with a new serial, or no serial at all, creates one. This is what makes the import safe to re-run: exporting your register, fixing a column in a spreadsheet and importing it back does not double anything.

Limits

  • Up to 5,000 rows per upload.

  • The file must be 8 MB or smaller.

  • It has to be a real .csv file.

Fixing rows without re-uploading

Step 2 shows every row in an editable grid with Model, Category, Status, Serial and Holder business email, and a chip at the top reading something like "142 ready . 3 needs attention". Problems are listed under the row that has them: a missing model or category, an unrecognised category or status, or an invalid holder email.

Fix them in the grid. As the note says, "Rows with warnings are skipped unless fixed. Fix them here, no need to re-upload." Then click Import N assets.

What you get back

Rows are imported independently rather than all or nothing, so a handful of bad rows never blocks the good ones. Step 3 reports how many were processed and how many were skipped, and offers Download skipped rows (.csv), which is your original rows plus a skip_reason column. Fix that file and import it on its own.

Two things the import does quietly

  • An assigned_at date that arrives by import counts as a date a person set. Neither a delivery nor the nightly MDM sync will overwrite it later.

  • If a serial in your file matches a shipment you have already placed, the device and that order are linked, and the shipment appears in the device's activity trail dated when it happened.

Related articles