Import assets
Add or update many devices at once from a CSV file. Map your columns, let schoolOS check every row in the background, fix the rows that need it, then import the rest.
Open the Assets tab of Admin › Account › Import Data to bring in many devices at once from a spreadsheet saved as CSV: your first rollout, a summer shipment of Chromebooks, or a cleanup of what you already have. Each row becomes a device on Assets, or updates one that's already there. Someone who can add assets but can't open Admin imports from Assets instead, with the same steps. If your devices are in Google Devices, Jamf Pro, Microsoft Intune, Mosyle or PDQ Connect, you can connect it from the same tab instead, and it keeps them current on its own; see Connect a device management system. With Apple School Manager connected, you can also import your Apple devices straight from it, with their order details; see Import devices.
The page is titled Import Assets. It works in four steps: upload (where you also choose what a blank cell does and, with more than one department, the department), map your columns, let schoolOS check the file in the background, then import the rows that passed. Facilities imports to Assets › Inventory the same way, from Import from CSV on that list: there the rows are checked and imported right away instead of in the background.
Before you start#
Set these up first, because the import checks your file against them:
- Locations. A row's location must already exist; a room it names is created in that location when the location doesn't have it yet.
- Statuses. A status in your file must already exist.
- People, if you fill in owners. An owner must be an active person in your account.
Asset types, manufacturers and models don't have to exist. A name the import doesn't know is added for your account as it goes, matched without regard to capitalization. That's convenient, but a typo like "Chromebok" becomes a new asset type, so the import tells you first: before you import, the status page lists every asset type, manufacturer and model the file will add, with how many rows use each ("2 new models: Dell Latitude 5450 (12 rows), Acer C734 (1 row)"). The finished import's results list them again. If one is a typo, fix it in your file and upload it again, or merge the duplicate afterward on Admin › Assets › Manufacturers or Admin › Assets › Models.
You need Add assets (assets.create) to upload and import, and View assets (assets.view) to see the history.
Get the template#
Select Download Template. You get device-import-template.csv: one header row with every standard column, plus a column for each of your asset fields. Fill it in with one device per row.
The bottom of the upload page, Available Fields, lists every column, its key and what it expects. Fields marked Required are needed to add a new device; a file that only updates devices you have doesn't need them.
The columns#
| Column | Required | What it takes |
| --- | --- | --- |
| Asset Tag | No | The device's tag. A tag you already have updates that device. Leave it blank for a new device and schoolOS gives it the next tag from Asset Tags. |
| Serial Number | No | Can repeat: two devices may share a serial. With no tag, a serial on exactly one of your devices updates that device. Placeholders like "To be filled by O.E.M." or "0" never match. A column named Serial, SN or Device ID maps here too. |
| Name / Label | New devices | What people see on the asset. |
| Asset Type | New devices | Like Laptop or Tablet. Added if it's new. |
| Manufacturer | No | Added if it's new. |
| Model Name | No | Needs a manufacturer on the same row. Added under that manufacturer if it's new. |
| Status | No | Must match a status you have. Blank on a new device means the system's active status; blank on an update keeps the device's status, even with Overwrite. |
| Pool | No | None or Spare, in any case. Loaner, from before the Loaner pool joined Spare, imports as Spare. Blank keeps a device's pool (with Overwrite, puts it back in None); a new device starts in None. Anything else stops the row and names the choices. |
| Location | No | A location's name or abbreviation. It can carry the room too, as AHS / 104, AHS › 104 or AHS-104 (a flat name is split only on a building you have, and on a space only before a room number, so District Office stays one place); the room part lands in Room. Blank sends a new device to your default location and leaves an updated device where it is. |
| Room | No | A room in that row's location. A room the location doesn't have yet is created with the device, named as written, with its number read off a name that starts with one. Validate says which rooms the import will add. |
| Assignee (Email) | No | Assigns the device to a person by email. A column named Owner, Owner Email or Assignee maps here too. |
| Assigned Room | No | Assigns the device to a room instead of a person: Location / Room, like Lincoln Elementary / Room 204, or a location's name for the whole location. The device is placed there. Leave Assignee (Email) blank on that row. An export writes this column the same way. See Assign a device to a room. |
| Purchase Date | No | A date: YYYY-MM-DD is best; MM/DD/YYYY (month first), March 15, 2024 and Excel dates work too. See Dates and numbers. |
| Purchase Price | No | A number, like 1299.00, 1,299.00 or $1,299.00. Use a period for decimals. |
| Warranty Expiration | No | Same date formats. Can't be before the purchase date. |
| AppleCare Agreement Number | No | The Agreement Number on the AppleCare certificate. Blank keeps the device's agreement. |
| AppleCare Coverage End Date | No | The last covered day. Any date the import reads, or DD/MM/YY as the certificate writes it. Blank keeps the device's date. |
| Support End Date | No | When the manufacturer stops updating the device (a Chromebook's Auto Update Expiration). Same date formats. Not the warranty: see Support End Date and Warranty Expiration. A column named AUE, Auto Update Expiration or End of Life maps here too. |
| MAC Address | No | The Wi-Fi MAC address, six pairs of hex digits like 3C:22:FB:1A:2B:3C. |
| Funding Source | No | Free text. It counts toward that funding source. |
| Notes | No | Any text. |
| Linked To | No | The asset tag of the cart or kit the device belongs to. The device takes that asset's location. |
Your own asset fields follow, each under its name. A field marked required when creating an asset must be filled in on rows that add a device. An update doesn't need them.
Where this table says a blank keeps the device's value, that's the Update choice. With Overwrite, a blank in a column you mapped clears it, except Asset Tag, Serial Number, Name / Label, Asset Type, Status, Location and Linked To. See Update or Overwrite.
Dates and numbers#
Every date column, including your own date fields, takes:
| Write it like | Read as |
| --- | --- |
| 2024-03-15 or 2024/03/15 | March 15, 2024. The safest choice: it can only mean one day. |
| 3/15/2024, 03-15-2024 or 3/15/24 | Month first, always. A two-digit year from 00 to 69 is 2000–2069; 70 to 99 is 1970–1999. |
| March 15, 2024, Mar 15 2024, 15 March 2024 or 15-Mar-2024 | The month is spelled out, so there's no doubt. |
| 2024-03-15T14:30:00Z | A date with a time: only the date is kept, as written. |
| 45366 | A date Excel saved as a number (2024-03-15). |
Slash dates are month first, so 03/04/2024 is March 4. A date that can only be day first, like 15/03/2024 (there's no month 15), is read as March 15 and the row gets a warning, so you can check it. When a column has day-first dates like that, its other slash dates that could go either way, like 03/04/2024, get a warning too: the file may be day first throughout. A warning never stops a row. A day that doesn't exist, like 2024-02-30, does.
Purchase Price and your own number and decimal fields take a number like 1234.50, 1,234.50 or $1,234.50, with a currency sign or code before or after it. Use a period for decimals and commas only between thousands: 1.234,50 or 12,5 stops the row instead of being guessed. So does a price like 1.000 or €1.234, which could mean one or one thousand: write 1000 or 1.00. A number field (not decimal) needs a whole number. Purchase Price can't be negative.
Leave a cell empty for no value. Text like N/A, TBD, none or - stops the row with a note to leave the cell empty.
AppleCare columns#
An AppleCare certificate lists each device's Agreement Number, Device ID, Product Description and Coverage End Date. You can import it as it is: "Agreement Number" and "Coverage End Date" map to the two AppleCare columns on their own, and "Device ID", the device's serial number, maps to Serial Number. The Product Description (the model) is skipped.
The certificate writes dates day first with a two-digit year: 25/01/22 is January 25, 2022. In this column the import reads a slash date with a two-digit year that way. Every other date reads as it does everywhere else in the import (see Dates and numbers): 01/25/2022 is month first, and 25/01/2022, which can only be day first, is read that way with a warning. A two-digit-year date that can't be the certificate's, like 01/25/22, is read month first, with a warning. When you can, use 2022-01-25.
Each row finds its device by serial number (see New or updated) and sets only its AppleCare agreement and end date. Nothing else on the device changes: its name, owner, location, purchase date and notes stay as they are. Before you import, the status page says how many devices the file updates and which fields change. A serial number that isn't on any of your devices would add a new device, which needs a name and type, so that row waits in Needs Review instead.
Once imported, AppleCare shows on each device's page and on the list; see Track AppleCare coverage.
Upload your file#
Above the file box, choose the department (when you can import into more than one) and what a blank cell does. Then drop the CSV onto Drop your CSV here, or select it to browse. Only .csv files work: in Excel or Google Sheets, save or download as CSV first. The box shows the file's name, size and number of rows. A file can have up to 500,000 rows and be up to 1 GB; split a larger one and import each part. A file over 48 MB goes up in pieces when you queue it, and Queue Import shows how far it's got ("Uploading 40%"); keep the page open until it's done.
Select Continue to Field Mapping, or Choose a different file to start over.
The department#
When your account has departments turned on and you can work in two or more, the upload step asks for the Department. It lists only the departments you can work in, and starts on the one you came from: importing from a department's asset list starts on that department, and the Inventory import starts on Facilities. With one department there's nothing to choose, and the import uses it.
- Every new device goes in that department, with its kind of list: Facilities' devices are on Assets › Inventory, every other department's on Assets.
- Updates only change that department's devices, and devices that aren't in any department. A row whose tag or serial number is on another department's device waits in Needs Review with "This device belongs to Facilities" (or whichever department it is), so a file never changes another team's devices by accident.
- The department decides the fields offered, so choosing another one after picking a file clears the file; pick it again.
The import checks that you can work in the department you chose, and refuses one you can't. The status page shows the department beside the Job ID.
Update or Overwrite#
When a cell is blank decides what an empty cell does to a device the row updates:
| Choose | A blank cell | Use it when | | --- | --- | --- | | Update (the default) | Keeps what's in schoolOS. | You're adding or fixing a few columns, like new locations or AppleCare dates. Nothing you leave empty is lost. | | Overwrite | Clears that field on the device. | The file is the record now, like a cleanup where an empty Notes or PO Number should be empty in schoolOS too. |
In both, a column the file doesn't have, or one you skip when mapping, is never touched. New devices are the same either way.
Overwrite never clears what identifies a device or what every device must have: Asset Tag, Serial Number, Name / Label, Asset Type, Status and Location keep their value when the cell is blank, and the preview says so ("A blank Name keeps what's there"). Linked To keeps its link. A device has a person or a room, never both: a blank Assignee (Email) clears the person and keeps a room assignee, a blank Assigned Room clears the room assignee and keeps the person.
Before anything is written, the preview names what Overwrite will clear and on how many devices: "Overwrite clears Notes, PO Number on 42 devices where the file leaves them blank." When you import, a confirmation repeats it; select Overwrite to go ahead, or Cancel and start again with Update.
For example, to fix purchase records after an audit, export the devices, correct PO Number and Purchase Price, and empty the cells that were wrong. Import with Overwrite and map only those two columns plus Asset Tag: the emptied cells clear, and nothing else on the devices changes.
Map your columns#
Map your columns lists each column in your file with a sample value. schoolOS matches columns to fields by their name or key, and by common names: "Tag" or "Barcode" for Asset Tag, "Serial" or "SN" for Serial Number, "Make" or "Brand" for Manufacturer, "Price" or "Cost" for Purchase Price, "Location" or "Site" for Location, "Room" or "Room Number" for Room. An Auto-matched badge shows it did.
For each row, Target Field in schoolOS says where the column goes. Change it to:
- — Skip this column — to leave the column out. Remove does the same. Removed columns move to Removed Fields, where Restore puts back the suggested match.
- A field under Required Fields, Optional Fields or Custom Fields.
- Custom Field: "…" to make a new asset field from the column. See below.
Map Asset Tag or Serial Number and that's enough to update devices you already have: map just the columns you want to change. Without either, a red note lists the fields a new device needs. When you're ready, select Queue Import, which also shows the row count.
Columns that become custom fields#
Every column schoolOS can't match starts as — Skip this column —, so nothing you didn't ask for is kept. To keep one, set it to Custom Field: "…": the column becomes a new asset field for your whole account, with every value in it. Leave helper columns, like an old inventory ID, skipped.
For a new custom field, pick its Field Type: Text, Number, Decimal, Date, Boolean or Email. schoolOS guesses from the sample value.
Map, make a field, or skip?#
| Set the column to | Choose it when | | --- | --- | | A standard field | It holds something schoolOS already tracks, under a name it didn't recognize: "Bldg" for Location, "Tag #" for Asset Tag. | | An asset field you already have | You added the field on Admin › Assets › Asset Fields first. Do that for a dropdown, or a field that should be required or searchable: the import can't set those up. | | Custom Field: "…" | The values are worth keeping on every device and no field holds them yet, like an insurance policy number. The new field is text, a number, a date, a yes or no, or an email, not required and not searchable. You can change that last part later on Admin › Assets › Asset Fields. | | — Skip this column — | It only mattered in the old spreadsheet: row numbers, a "checked" column, formulas. |
A new field is added for your whole account, so skip anything you wouldn't want on every device's form.
What happens in the background#
After Queue Import, the file is saved and checked in the background, so you can leave the page. The status page shows the job's Job ID and its counts: Total, Pending, Ready, Imported, Needs Review and Failed. It refreshes itself while the job runs.
When the check is done, a note says how many devices the ready rows will update and add, the only fields the updates change ("This import will update 240 devices. The updates change only AppleCare Agreement Number, AppleCare Coverage End Date."), and what a blank cell does. With Overwrite it's a warning that names the columns blank cells clear and on how many devices, and Import Valid Rows asks you to confirm. The status page shows When a cell is blank: Update or Overwrite. Another note lists the asset types, manufacturers and models the ready rows will add to your catalog, if any, with how many rows use each. Then:
- Import Ready means every row passed. Select Import Valid Rows to save them.
- Import Ready With Review means some rows need fixing. You can import the ready ones now with Import Valid Rows, fix the others, or both.
Nothing is saved to Assets until you select Import Valid Rows. When the import finishes, its results list what it added to the catalog, and View Imported Assets opens Assets filtered to this import.
New or updated#
Each row is matched to a device you already have, ignoring capitalization:
- By Asset Tag, when the row has one that's on a device.
- Otherwise by Serial Number, when exactly one device in your account has it. A tagless device matched this way takes the row's tag, if it has one. When the row has a tag no device has, only tagless devices count: devices with other tags are other devices, so the row adds a new device even though the serial repeats.
A placeholder serial ("To be filled by O.E.M.", "Default string", "None", "0", all zeros) is treated as no serial and never matches.
A matched row updates that device. Any other row adds a new device, and needs a Name / Label and Asset Type; without them it waits in Needs Review with "New device: needs a Name and Asset Type".
An update changes only what the row fills in, and, with Overwrite, clears what it leaves blank:
- A column the file doesn't have leaves the device's value as it is. So does a blank cell with Update. To clear a field, choose Overwrite.
- Fields worked out from another follow it: the owner's name comes with the owner's email, the room is kept unless the device moves to another location, and an Assigned Room replaces a person (or a person replaces a room).
These stop a row, so it waits in Needs Review:
- A tag or serial number on a device in another department than the import's: "This device belongs to Facilities".
- A serial number on two or more of your devices that the row can't choose between: add the Asset Tag to choose one. The row is skipped with that reason rather than guessed.
- An asset tag that appears twice in the file stops both rows. So does a serial number that appears twice on rows without a tag; rows with their own tags are separate devices.
When a row adds a device without a tag, the tag comes from Asset Tags, and the next tag moves on. An update keeps its device's tag.
For example, to move 600 Chromebooks to new schools after a boundary change, export them from Assets, keep just Asset Tag and Location, change the locations, and import it. Every row updates its device's location, and everything else stays as it was. Or, to record AppleCare, import the certificate as it comes (see AppleCare columns).
Fix rows that need review#
Rows needing review lists each problem row with what's wrong, like Status "Spare" is not configured or Room "204" was not found for the selected location. They come 50 at a time. Ready rows with a warning, like a date read day first (see Dates and numbers), are listed after them with the warning in amber. They still import as they are; fix one only if the warning shows it was read wrong.
Select Fix This Page to edit those rows right on the page. Lists like status, asset type, manufacturer and model offer your real values. Then:
- Select Recheck Rows. After any edit you must recheck before importing.
- Select Retry Fixed Rows to send them back through the import.
Back to Import Status returns without retrying. To fix the rows on the next page, go back and move to it first.
Or fix the problems in your file, discard this import, and upload again.
Which should I choose?#
| Choose | When | | --- | --- | | Import Valid Rows now, fix the rest later | Most rows passed and the problems are one-offs, like a room number typed wrong on a few rows. Devices get on the list today. | | Fix This Page and Retry Fixed Rows | A handful of rows, each with its own problem. Quicker than editing the file. | | Discard, fix the file, upload again | The same problem runs through many rows, like a status your account doesn't have, or the catalog note lists a typo like "Chromebok". One change in the spreadsheet fixes them all, and nothing half-imported is left behind. |
For example, a 3,000-row summer shipment comes back with 2,950 ready and 50 needing review, all Status "Spare" is not configured. Spare is a pool in schoolOS, not a status. Rather than fix 50 rows by hand, discard the import, move those values to a Pool column in the file, and upload again.
Start over#
- Discard and Start Another Import removes this job and its checked rows, after you confirm with Discard Import. It's offered only while nothing from the job has been imported.
- Start Another Import appears once rows have been imported. It keeps the job in history and takes you back to the upload step.
Import history#
Import History, at the top of the upload step, lists your account's last 50 device imports. Each shows its file, Status, the row counts and when it was Created. Status reopens its status page; View Assets opens Assets filtered to that import. Refresh reloads the list.


Was this article helpful?
Related articles
- Import your dataOne page to bring your locations, people, assets, tickets and help articles into schoolOS, with how many of each you have. What to import first, file or connection, and whether to bring it in once or keep it in sync.
- Apple School ManagerConnect Apple School Manager to import the Apple devices your district bought, with their order details, and keep AppleCare coverage current on devices already in schoolOS.
- DepartmentsDecide where each kind of request goes: departments that work in schoolOS with their own tickets, and departments that work elsewhere, with a contact card or a forwarded email.
- Asset tagsChoose the tag the next new asset gets, like MCHS0001, and how schoolOS counts up from there for every asset after it.
- Asset typesThe kinds of assets you track, like Laptop, Tablet or Projector. See the ones schoolOS provides, add your own, rename them and remove the ones you don't use.
- Asset statusesSee the statuses every asset can have, like Active, In Repair or Lost, add your own, and choose each one's color and what it means.
- ManufacturersThe makers of your devices, like Apple, Dell or Lenovo. See the ones schoolOS provides, add your own, and rename or delete them.
- ModelsThe device models you own, like MacBook Air 13 or Chromebook 3100, each under its manufacturer. See the ones schoolOS provides, add your own, and rename or delete them.
- Asset fieldsAdd your own fields to assets, like a cart number or a condition, choose whether they're required and searchable, and set the order they show in.
- LocationsAdd, edit and delete your schools and buildings, manage their rooms, and choose the default location where people and assets land when they arrive without one.
- Import peopleAdd or update staff and students from a CSV, a nightly SFTP file, or your SIS over OneRoster. How matching, roles and locations work.
- AssetsThe list of every IT device in your district. Search and filter, choose columns, save views, edit many devices at once, export to CSV, and open a device's own page.
Updated October 29, 2026
