Skip to content

Custom Asset Fields

Ed Mozley edited this page Aug 20, 2026 · 1 revision

Recording anything β€” custom asset fields and import

Printers, monitors, headsets, televisions, projectors. The built-in asset details describe a computer, because that's what the inventory script reports β€” so anything that isn't a computer has nowhere to put the things that actually matter about it.

Custom fields are how you record those things. You decide what gets recorded, and against which kinds of asset. Adding a field takes effect immediately: no database change, no downtime, and nothing already recorded is touched.


The idea, in three words

Worth getting these straight before you start. Everything else follows easily once they click.

Field One thing you want to record. Resolution, Screen size, Wireless. Defined once for the whole system.
Field set A bundle of fields you attach in one go. Screen might hold Screen size and Resolution.
Asset type Television, Monitor, Printer. You attach sets to types.

So: a field goes in a set, and a set goes on a type.

The part that makes this worth doing is that a field is defined once and can appear in as many sets, on as many types, as you like. "Resolution" on a webcam is the same field as on a television β€” which is what lets you search for a resolution and find both, or export one column covering every screen you own. Fourteen separate "Resolution" fields could never be looked at together.

Settings β†’ Custom fields opens with How it all fits together β€” a read-only picture of every asset type, the sets attached to it and the fields inside them, plus a list of each field and everywhere it's used. When something isn't appearing where you expect, look there first.


Making a field

The quickest route is the top section, Fields by asset type: pick a type, click Add, and the field is on that type straight away. A set is created behind the scenes, so you never have to think about sets at all until you want to reuse a bundle.

Kinds of information

  • Text β€” anything, optionally over several lines
  • Number β€” with an optional unit shown beside the box (", GB, kg) and a choice of decimal places
  • Date β€” a date, a time, or both
  • Yes / no β€” and not filled in stays a third, separate answer
  • Pick from a list β€” you supply the choices
  • Web address, Email address
  • Link to something else β€” a person, another asset, or a configuration item

The three switches

Offer as a column in the asset list β€” makes it available in the Table view's column picker. It isn't forced on everybody; each person turns it on for themselves.

Find assets by this field β€” search, including ⌘K, will match on its values. Good for serial and part numbers. Bad for free-text notes, which would make half the estate match half the queries.

No two assets may share a value β€” for a serial or MAC address. Checked within your own company, so two customers can each hold a PR0001.

If you type a name that already exists as a built-in field β€” Make, Serial number, Cost β€” you'll be warned. Every asset already has those as proper columns, and having both means the Add dialog asks twice and no report can put the two together.


Reusing fields with sets

Sets earn their keep when several types want the same handful of fields. Make Peripheral basics holding Serial number and Warranty end, attach it to Headset, Webcam and Keyboard, and all three record both. Add a fourth field to the set later and all three gain it at once, rather than you editing three types.

Types often want overlapping but not identical fields, and that's what more than one set is for:

Set Fields Attached to
Screen Screen size, Resolution Television, Monitor
Image Resolution Webcam, Projector

A webcam has a resolution but no screen, so it gets the second set. Resolution is still one field, appearing in both β€” so a search finds screens and webcams together.

Whether a field is required is set on its place in a set, not on the field itself, because a serial number may be compulsory for laptops and optional for keyboards.


Fields on some assets but not others

Ten televisions in meeting rooms. Three are being trialled as smart TVs and need an IP address, a MAC address and a Netflix switch. The other seven shouldn't grow three empty boxes.

Rather than splitting the type in two, make a set for the extra fields and add it to those three assets individually: open the asset, and under Other details use Add a set of fields.

The other seven don't get blank fields β€” they don't have the fields at all.

A set added to one asset shows as a small removable chip on that asset, so it's always obvious why it has fields its type doesn't.

Removing the set again hides the fields but keeps everything recorded in them. Add it back and the values are all still there, so an accidental click costs nothing.


Adding an asset by hand

Computers arrive on their own β€” the inventory script, Intune and vCenter all report in. Anything that can't report for itself is added by hand: on the asset list, click Add, beside Scan and Assign tags.

Name, type, status, location, then the built-in details. Pick a type that records custom fields and those fields appear in the dialog too, so a television goes in complete in one go.

Names must be unique. A second asset with a name you already use is refused, pointing you at the existing one β€” a duplicate would split that asset's history in two.

The hardware details the inventory script collects for itself β€” CPU, memory, BIOS, operating system β€” deliberately aren't offered here. On anything that does report, typing them in would only be overwritten by the next sync.


Importing a spreadsheet

Ten items is ten trips through a dialog. Settings β†’ Import takes a CSV instead β€” a supplier's stock list, an export from another system, or whatever somebody's been keeping in Excel.

1. The file

A CSV with a heading row. It reports how many rows and columns it found. Up to 5000 rows, and it says so rather than quietly importing the first 5000.

2. Where each column goes

It guesses, including matching a column to one of your own custom fields, and shows the first few values from your file beside each one so a wrong guess is obvious before it does any damage.

Columns you don't want are set to Do not import, and it says how many and which are being ignored β€” a column that silently goes nowhere is how half an import disappears.

Type, status, location and supplier are matched by name, so a column full of the words Printer and Monitor works as you'd expect. A name that doesn't exist is refused rather than invented β€” otherwise the first typo quietly creates an asset type called "Televsion".

3. What identifies a row

This is the setting that matters, and the one people skip.

You tick the columns genuinely unique to one piece of equipment β€” a name, an asset tag, a serial number. Each row is then looked up on those columns, in the order you ticked them:

Matches What happens
Nothing A new asset is created
Exactly one That asset is updated
More than one Nothing is changed. The row is set aside for you

Get it right and importing the same file next month updates what's there. Get it wrong β€” or leave it on something that isn't unique, like a model number β€” and you either duplicate the estate or merge things that were never the same item.

Picking one at random when several match is how records get quietly overwritten, so it doesn't.

Matching is always within your own company, so two customers can each have a "LAPTOP-01" without ever being confused.

4. Check, then import

A preview does every single check and writes nothing at all. It tells you, row by row, exactly what the real run would do.

The Import button stays switched off until you've run a preview, and switches off again if you change the mapping β€” because the preview is the only thing standing between a mis-mapped column and hundreds of wrong records.

Two other choices: whether the file's values replace what's already recorded or only fill in blanks, and what to do with a value that isn't on a list field's choices (set the row aside, or add it to the list).


Rows needing attention

A row that can't be imported is kept. Not thrown away, and not guessed at.

The Rows needing attention list shows each one with which file and row number it came from, exactly what was wrong β€” "No asset type called 'Printer'", "Screen size expects a number" β€” and what your file actually said, verbatim.

So you fix the spreadsheet and import it again, or create whatever was missing and re-run, rather than working out from scratch what went astray. Mark a row Done to take it off the list.

A failed row leaves nothing behind. If it got as far as creating an asset and then hit a problem, the whole row is undone β€” so "needs attention" never means "half of it worked".


Where the values turn up

Recording things is only half of it.

  • The asset itself β€” under Other details, grouped by set, with a "3 of 3 filled in" count. Blanks are tucked away until you ask for them.
  • The Table view β€” any field marked Offer as a column joins the column picker, sortable and filterable like any other.
  • CSV and PDF export β€” whatever columns you're looking at, custom ones included.
  • Search and ⌘K β€” for fields marked Find assets by this field. The result tells you which field matched.
  • Handover documents β€” switch any custom field on as a column, so a monitor is signed for with its size on the paperwork.
  • The REST API β€” every asset carries a fields object keyed by field name.
  • Asset history β€” changes to a custom field are audited exactly like built-in ones.

Things worth knowing

Nothing is ever deleted. Retiring a field, deleting a set, or removing a set from an asset all keep every value recorded. Put it back and the values return.

"Not filled in" is a real answer. A yes/no field has three states, and filtering to No won't sweep up every asset that simply hasn't got the field. This matters more than it sounds β€” it's the difference between "we checked and it's off" and "nobody has ever looked".

A field's kind can't change once values exist. You can rename it freely, and you can always change how it's presented β€” a date field can switch between date and date-and-time β€” but text can't become a number once answers have been given. The editor tells you before you try, rather than after.

The reference name is fixed. Each field has a short reference name used by imports and reports. Renaming the field's label never changes it, so a saved import mapping can't break because somebody reworded a heading.

Companies can have their own fields. On a multi-company install, a field created while working in a client company belongs to that company; one created in the default company is shared by all of them.

Link fields are read-only on the asset for now. They display, and an import can set them, but choosing a person or another asset by hand needs a picker that hasn't been built yet.

The asset tag can't be set by an import. It can be used to identify a row, but not written β€” it's unique per company and that check lives with the asset tag itself.


Permissions

Two separate rights, under System β†’ Roles:

  • Design custom asset fields and field sets β€” creating fields, sets, and attaching them to types
  • Import assets in bulk from a file β€” marked sensitive, because one import can create or overwrite thousands of records

Filling a field in on an asset is ordinary asset access, exactly like editing any other detail. So you can let somebody run an import without letting them redesign what an asset records, or the other way round.


See also

FreeITSM

Getting Started

Modules

Multi-tenancy (planned)

Blue sky thinking

Bugs resolved

Links

Clone this wiki locally