Assets
The Assets module manages company equipment from procurement through disposal — laptops and phones, vehicles, machinery, anything you need to track and account for. Beyond the basics it supports structured locations, a movement ledger, condition-on-return capture, scheduled inspections, and operator-certification gating for assignment.
Key features
- Asset register — searchable database of all company equipment
- Structured location — link each asset to an
orgNode(office, region, department, etc.) plus an optional sub-location detail (e.g. "Floor 2, Locker 3") - Check-out / check-in — sign equipment out to a person and/or location with an optional expected-return date and note; sign it back in with optional new location, condition rating, evidence photo, and notes
- Movement ledger — every check-out, check-in, transfer, assignment change is recorded with from/to state, actor, timestamp, and notes
- Condition-on-return — receiver records condition (new / good / fair / poor), optional photo, and notes on check-in; the asset's recorded condition is updated automatically
- Scheduled inspections — assign a default cadence per category (or override per asset); record outcomes (pass / pass with remedial / fail); fail drops the asset to "poor" condition and pauses scheduling
- Inspection reminders — daily cron at 08:15 UTC fires 30 / 14 / 7 / 0-day emails to the current holder and their line manager
- Operator certification gating — an asset category can require holders to possess specific certifications (active, not expired) before they can be checked out. Reuses the certification types from the Training module.
- List filters — Checked out, Inspection overdue / Due in 30 days, Issues, Warranty status
- Inline badges — overdue and due-soon inspections + currently-checked-out state visible directly on the asset row
- QR codes + barcode scanner — generate QR codes for each asset, scan from a phone camera
- Warranty tracking — monitor warranty expiry dates with automatic alerts
- Issue reporting — employees report problems with their assigned equipment, with threaded comments
- Activity log — complete history of every action taken on each asset
- CSV import/export — bulk import your existing register or export for reporting
- Image upload — attach photos of each asset
How it works
For employees
- Go to Assets from the sidebar
- The My Assets tab shows everything currently assigned to you, with category, condition, and current location
- Open any asset to see model, serial number, warranty status, movement history, inspection history, and any open issues
- Report an issue if something isn't working — add a description and photos
For asset managers
- Switch to the All Assets tab to see the full register
- Search, filter, and sort by category, status, assignee, condition, location, inspection state, or checked-out state
- Check out an asset — pick a holder, a destination location (or keep current), an optional expected return date, and an optional note
- Check in an asset when it's returned — optionally route it to a new location, record the condition on return, attach a photo, and leave a note
- Record an inspection — outcome (pass / remedial / fail), optional notes and photo. Pass + remedial schedule the next inspection from the category cadence; fail pauses scheduling and marks the asset as Poor condition
- Add new assets individually or via CSV import. CSV import keeps free-text location only — assign the structured node afterwards via the bulk-move dialog
- The movements timeline and inspections sections on each asset's detail sheet give a full chronological record
Locations
Each asset can be linked to an orgNode from your company structure. The same node picker the rest of Luna uses (offices, regions, departments, etc.) drives this — there's no separate "site" or "warehouse" concept, you use whatever node types you already have. The free-text Location detail field complements the node link for sub-locations (locker number, shelf, bay) that don't deserve their own node.
When an asset moves location — via check-out, check-in, bulk-move, or a manual edit — a row is written to the movement ledger. The detail sheet shows the timeline oldest → newest with check-outs (green), check-ins (amber), transfers (blue), and assigns/unassigns dotted in for completeness.
Inspections
Inspections are configured per asset category. Set a Default inspection cadence (months) on the category — e.g. 6 for half-yearly checks, 12 for annual. Override per asset if a particular item needs a different cadence.
Recording a pass schedules the next inspection date for cadence months out. A "pass with remedial" outcome does the same but lets you flag actions that need following up in the notes. A fail pauses scheduling — the asset stays in service but flips to Poor condition, and the next scheduled inspection isn't computed until the asset is re-checked.
The reminder cron runs daily at 08:15 UTC and emails the asset's current holder (if assigned) plus their line manager at 30, 14, 7, and 0 days from the due date. Each milestone fires at most once per cycle. Honours the company-level toggle for the asset_inspection_due template.
Operator certification gating
An asset category can require the holder to possess one or more specific certifications. Configure this in Admin > Asset Categories under "Required operator certifications" — pick from the certification types defined in the Training module.
When someone tries to check out or assign an asset in that category, Luna checks the holder's records for each required certification with status active and (if it has an expiry) a future expiry date. If any are missing, the assignment is rejected with an error naming the missing certifications.
This is enforced at the backend, so the same gating applies to CSV import, the API, and any future integrations — not just the UI.
Admin setup
Asset categories
Set up categories from Admin > Asset Categories. For each category, define:
- Name, code, description, asset type (hardware / software / furniture / vehicle / other), colour
- Default inspection cadence (months) — optional; sets the schedule for assets in this category
- Required operator certifications — optional; one or more certification types the holder must possess
Permissions
Assets uses a scoped permission model so a line manager can check assets out to their team without holding full asset-admin authority:
| Permission | What it allows |
|---|---|
| assets:manage | Umbrella perm — create / edit / delete assets, all bulk operations, full check-out / check-in / inspection authority. Legacy roles continue to work via this. |
| assets:assign | Check out / check in / assign assets to direct reports and node members (scoped) |
| assets:assign_all | Same, company-wide |
| assets:view_all | Read-only view of all assets (e.g. Compliance / Finance roles) |
| assets:manage_catalogue | Create and edit asset categories, inspection cadences, required-cert lists — without needing full asset-admin |
Employees always see their own assigned assets without any perm.
The scoped variants are checked against the holder. A manager with assets:assign (no _all) can check assets out to anyone they directly manage, plus anyone within a node where they hold a manager / lead / head role.
Related
- Training — defines the certification types used for operator gating
- Data Import — importing your existing asset register via CSV
- Reports — Asset Utilisation report includes inspection rollup, currently-checked-out counts, and overdue warnings
- Filing Cabinet — storing asset-related documents