Assets Reference Public

Getting Started

Introduction Getting Started Enable the Assets module, let the migrations build and seed the catalog, grant the right people access, and switch on the reminder crons — then…

Guide version: r1 Module version: 1.0.0 Updated: 2026-07-22 Estimated time: 10 min 2 views
Introduction

Getting Started

Enable the Assets module, let the migrations build and seed the catalog, grant the right people access, and switch on the reminder crons — then register your first asset and endorse it to a user.

????
Who this is for. This page is for an administrator installing and configuring the module. Day-to-day users (custodians, employees receiving equipment) can skip ahead to Core Concepts & Data Flow once an admin has completed the steps below.

Prerequisites

  • PHP ≥ 8.2 and ERPat core ≥ 1.10.0 — the module manifest requires both.
  • Admin access to Settings → Manage Modules and to the Roles editor.
  • Staff users must exist. Assets can only be checked out (endorsed) to active staff users — not to locations or other assets — so create the people before the hardware. See Checkout & Check-in.
  • A ticking cron runtime if you want the return-due / warranty / audit reminders and the monthly depreciation compute to run — see Switch on the crons below.
  • Manufacturers and Suppliers are shared masters. The module reuses ERPat's core Brands table for manufacturers and the core Vendors table for suppliers — they work out of the box, no separate setup needed (details in Shared masters).
????
Upgrading from the old in-app Assets feature? Nothing is lost. The foundation migration creates the five legacy tables only if they are missing and repairs column drift on existing tenants; it never modifies or deletes existing rows. Old assets simply gain empty lifecycle columns (no status label until you set one, no endorsement history yet).

Activation — three steps

  1. Run the module migrations

    From the project root. The module's migrations are idempotent and reversible, and are tracked in their own migrations_assets table.

    php erpat migrate:modules
    # (or) php erpat migrate:latest
  2. Turn the module on

    Go to Settings → Manage Modules and enable Assets (listed under the Safekeep category — this sets module_assets = 1). A Safekeep group appears in the left sidebar for every user who also holds the asset permission.

  3. Grant permissions (for non-admins)

    In Roles, assign the Safekeep permission categories to the roles that need them. Administrators see everything by default. See Granting access below and the full matrix on Permissions & Roles.


What the migrations create

Three migrations run in sequence:

MigrationWhat it does
Foundation (reconcile legacy tables) Creates the five legacy tables if missing — asset_entries, asset_categories, asset_locations, asset_groups, asset_entry_comments — and repairs drift on older tenants (missing columns, indexes). Never destroys data.
Snipe-IT upgrade Adds nine new tables — asset_status_labels, asset_models, asset_depreciations, asset_custom_fields, asset_fieldsets, asset_fieldset_fields, asset_events (the chain-of-custody activity log), asset_maintenances, asset_accessories — plus the lifecycle columns on asset_entries (asset tag, status, model, endorsement state, audit dates, custom-field values, and more).
Seed Seeds the starter catalog described below. Idempotent — it matches by name/key/slug and never overwrites rows a tenant has already edited.

Seeded status labels (7)

Every asset carries a status label, and every label has one of four deploy types — Deployable Pending Undeployable Archived. The seed migration installs seven ready-made labels:

Status labelDeploy typeSeeded colorNotes
Ready to Deploy Deployable #1d97a6 (brand teal) Default for new assets
Deployed Deployable #5cb85c (green) In active use
Pending Pending #f0ad4e (amber) Awaiting something
In Repair Pending #f0ad4e (amber) Out for repair
Broken Undeployable #d9534f (red) Not usable
Lost / Stolen Undeployable #d9534f (red) Missing
Archived Archived #777777 (grey) Retired, out of circulation
⚠️
The one status rule that matters: an asset whose current label is not Deployable cannot be checked out — the server rejects it with "This asset's status is not deployable, so it cannot be checked out." Changing a status never auto-checks-in or auto-assigns anything; that gate is the only status-driven behavior. Full details on Status Labels.

Seeded categories, fieldsets and custom fields

Six starter categories are seeded, each bound to its own fieldset (named "<Category> fields") so the right "Additional fields" appear on the asset form the moment you pick the category:

CategoryGroupFieldsetPrimary (required) fieldOther seeded fields
LaptopdevicesLaptop fieldsSerial numberBrand / model, Processor, Memory (GB), Storage
PhonedevicesPhone fieldsIMEIBrand / model, Storage, Operating system
MonitordevicesMonitor fieldsSerial numberBrand / model, Size (inches), Resolution
VehiclevehicleVehicle fieldsPlate numberVIN / chassis number, Make / model, Model year, Odometer at handover
Access cardaccessAccess card fieldsCard numberAccess level, Valid until
Employee IDaccessEmployee ID fieldsBadge numberID type, Issued on

Custom fields are deduped globally by their field key, so shared fields like serial_number and brand_model are single rows reused across several fieldsets. See Custom Fields & Fieldsets and Categories.

ℹ️
Not seeded: locations, depreciation profiles, asset models, and assets themselves all start empty — you create those yourself (the first-run checklist below walks through it).

Granting access in Roles

While the module is enabled, four Safekeep permission categories appear in the Roles editor. The base asset permit (labelled "Assets: Entries") is the master key — the whole Safekeep sidebar group and every screen in it require it; everything else layers on top.

Roles-editor categoryParent keyAlso includesUnlocks
Safekeep: Assets asset asset_create, asset_update, asset_delete, asset_manage_labels, asset_comment, delete_asset_comment, asset_checkout, asset_audit, asset_maintenance, asset_import, asset_export Viewing the module plus asset CRUD, labels, comments, the checkout/endorse lifecycle, audits, maintenance, import and export.
Safekeep: Categories asset_category asset_category_create / _update / _delete The Safekeep → Categories page (its Categories tab).
Safekeep: Locations location location_create / _update / _delete The Location tab on the Assets page. (Note the key is plain location — no asset_ prefix.)
Safekeep: Groups asset_groups asset_groups_create / _update / _delete, asset_groups_manage_labels The Groups tab on the Categories page.

The full permission-by-permission matrix, with suggested role presets (IT admin, custodian, auditor, finance, employee), lives on Permissions & Roles.


A tour of the Safekeep sidebar group

With the module enabled and the asset permission granted, the sidebar gains a Safekeep group with six items:

#Menu itemURLOpens
1Assetsams/assets The asset registry — a tabbed page whose Browse tab is the asset list, with the Models and Location tabs alongside (see below).
2Categoriesams/categories The Categories page — a tabbed page carrying Categories, Groups and Status Labels. Requires the asset_category permission.
3Depreciationsams/depreciations Straight-line depreciation profiles.
4Custom Fieldsams/custom_fields Custom field master, with a Fieldsets tab.
5Maintenanceams/maintenances The maintenance / repair log.
6Asset Reportsams/reports/maintenance_log The four reports — the menu item deep-links to the Maintenance log; the other reports are tabs on that page.

Catalog screens are tabs of those pages

Several catalog screens deliberately do not get their own sidebar entries — you reach them as in-page tabs:

  • On the Assets page (ams/assets), the tab strip reads Browse · Models · Location. The Location tab only appears for users holding the location permission; Models shows for everyone with asset.
  • On the Categories page (ams/categories), the tab strip reads Categories · Groups · Status Labels. The Groups tab only appears with the asset_groups permission and Status Labels with asset.
  • On the Custom Fields page (ams/custom_fields), the tab strip reads Browse · FieldsetsFieldsets is managed there.
ℹ️
Left Menu Customization: the module's default-menu slice mirrors the same six items, so "Restore to default" reproduces exactly the Safekeep group described above. If your install once showed separate sidebar links for Asset Entries, Asset Category, Asset Location, Asset Vendors, Asset Brands or Asset Groups, those are pre-modularization names — core migrations remap saved menus automatically.

Shared masters: Manufacturers and Suppliers

Two catalogs the module uses are not owned by it — they are ERPat-wide masters served by core controllers:

  • Manufacturers are the shared Brands master, reachable at ams/brands. Only brands whose "Available in Assets" flag is set to Yes appear in the asset and model manufacturer pickers — set it on the brand itself. (The Snipe-IT CSV importer sets the flag automatically on manufacturers it creates or matches.)
  • Suppliers are the shared Vendors master, reachable at ams/vendors — used on assets (purchase vendor) and maintenance records (who did the work).

Both carry their own core permissions (brand, vendor) in the Roles editor, separate from the Safekeep categories above. Changes you make there affect every module that shares those masters.


Settings → Asset Entries Configuration

One core settings screen tunes the module's comment stream. Go to Settings and open Asset Entries in the components group — the page is headed "Asset Entries Configuration":

SettingControlWhat it does
Sort Asset Entry Comments Dropdown — Ascending / Descending (default: Descending) "Choose how to sort comments — ascending (oldest first) or descending (newest first)." Controls the comment order on the asset detail page.
Allowed users to mention Multi-select user picker "Select which users can be mentioned in asset entry comments."

Saving records the system-log event "Asset entries settings updated".


Switch on the crons

The module ships four scheduled jobs on ERPat's Advanced Cron runtime. They only run if your server cron is ticking the runtime (or you tick it manually):

php erpat cron:list        # confirm the four asset jobs are registered
php erpat cron:tick        # run whatever is due right now
php erpat cron:run compute_asset_depreciation   # force a single job
Job (slug)ScheduleWhat it does
compute_asset_depreciation Monthly — 1st of the month, 01:10 Recomputes straight-line book values for assets bound to a depreciation profile. Book values in the Depreciation schedule report update at most monthly.
remind_asset_return_due Daily, 07:00 Notifies assignees: "An asset assigned to you is due to be returned".
remind_asset_warranty_expiry Daily, 07:30 Notifies: "An asset's warranty is about to expire".
remind_asset_audit_due Weekly — Mondays, 08:00 Notifies: "An asset assigned to you is due for audit".

The reminders, the two dashboard widgets ("Assets assigned to me" and "Assets needing attention") and the related settings keys are covered in full on Widgets, Reminders & Settings.


First-run checklist

????
Purpose: go from a fresh install to your first endorsed asset.
Who: an administrator (or a role holding the Safekeep parents plus asset_create and asset_checkout).
Preconditions: migrations run, module enabled, at least one active staff user.
  1. Enable the module

    Run php erpat migrate:modules, then enable Assets under Settings → Manage Modules. Confirm the Safekeep group appears in your sidebar.

  2. Verify the seeded catalog

    Open Assets → Status Labels tab — you should see the seven seeded labels with Ready to Deploy as the default. Open Custom Fields and its Fieldsets tab — the six seeded fieldsets ("Laptop fields" through "Employee ID fields") should be listed.

  3. Grant roles

    In Roles, give your IT/admin roles the four Safekeep categories. Employees who will receive equipment need at least the base asset permit — every Safekeep screen, including the asset page with its Confirm receipt button, sits behind it. (The cron reminder notifications reach assignees regardless, but without asset they cannot open the asset.) Details: Permissions & Roles.

  4. Shape your categories and models

    On the Assets page, review the Categories tab (rename, nest, or add categories — each can bind a fieldset), then build your hardware catalog under the Models tab. Model defaults (category, manufacturer) auto-fill the asset form. See Asset Models and Categories.

  5. Adjust statuses and supporting masters

    Add any extra status labels your process needs, plus locations and depreciation profiles (none are seeded).

  6. Add your first asset

    Assets → Browse → Add entry. Pick a category to reveal its "Additional fields", give it an Asset Tag, and set the Status to Ready to Deploy. Field-by-field help: Adding & Editing Assets. (Have a Snipe-IT export or a spreadsheet? Use Import instead.)

  7. Check it out

    Open the asset and use Check out asset to endorse it to a staff user with a due date. The assignee then uses Confirm receipt, and every step lands in the asset's Activity chain-of-custody log. Walkthrough: Checkout & Check-in and the end-to-end SOPs.

Next steps

Was this guide helpful?

Report a content problem