Fleet Management

Vehicles, forklifts, construction equipment โ€” registration, mileage-based PM, drivers, fuel

10 min read

Fleet Management is a Business-tier module that extends Assets with a dedicated layer for rolling equipment: cars, vans, light & heavy trucks, forklifts, construction equipment, trailers, buses and motorcycles. Each vehicle is still an Asset under the hood โ€” but with a richer profile (VIN, license plate, fuel type, capacities) and automatic odometer + engine-hour meters wired in for mileage-based PM.

When to use Fleet

Use Fleet whenever the equipment moves on its own power and you need to track mileage, fuel, or driver assignments. Stationary equipment (production lines, HVAC, electrical, plumbing, buildings) stays in the standard Assets module.

Register a vehicle

  1. Open the Fleet section from the sidebar (under ASSETS & LOCATIONS)
  2. Click the '+ Add vehicle' button (top right)
  3. Fill the Basics card: name (required) + vehicle type + fuel type
  4. Add identification details if you have them: VIN, license plate, brand, model, year, color, first registration date
  5. Capture capacities for trucks/heavy equipment: PTAC, PMA, seating, payload, tank capacity
  6. Save โ€” the asset is created with category 'Vehicles' and two meters are automatically attached

Automatic meters

Every vehicle you create gets two ready-to-use meters attached to it:

Odometer (km)

Tracks distance travelled. Can be reset (engine swap, new dashboard). Use this for mileage-based PM triggers.

Engine hours (h)

Tracks runtime. Cannot be reset by default. Use this for hour-based PM on forklifts, generators, construction equipment.

Submit readings from the vehicle detail page (Open in Assets โ†’ Meters tab) or via QR code scan in the field. Mileage-based PM trigger every 10 000 km or 250 engine hours, whichever comes first โ€” define it in Preventive.

Permissions & roles

Fleet uses the standard CMMS RBAC system. Four permissions are seeded by default on the system roles:

ADMIN, MANAGER

Full Fleet CRUD (read, create, update, delete)

MAINTENANCE_PLANNER

Read, create, update โ€” register vehicles + edit fuel/odometer; cannot delete

SUPERVISOR

Read + update โ€” edit vehicle info in their team scope

TECHNICIAN, REQUESTER, VIEWER

Read-only โ€” consult vehicle profile, no editing

Custom roles (e.g. SHIFT_LEADER, QC_INSPECTOR) start without Fleet access. An admin can grant fleet:read / fleet:create / fleet:update / fleet:delete via /people/roles.

Data visibility

Vehicles follow exactly the same visibility rules as standard Assets โ€” they respect the company's data scope (ALL, TEAM, ASSIGNED), location subtree restrictions and multi-team assignment. A technician with TEAM scope only sees vehicles assigned to their team.

Business tier

Fleet Management is included in the Business tier ($99/mo, Founding $49). Starter and Core tenants see the upgrade card when they navigate to /fleet. Vehicle profiles you create on Business are preserved if you later downgrade โ€” only writes are blocked, reads keep working.

Fuel log & consumption (M2)

Track every pump visit and let FreeMaint compute fuel economy automatically. Each fuel entry feeds two metrics: rolling 30-day l/100km and cost per km. If you fill in the odometer, the reading is auto-pushed to the vehicle's ODOMETER meter (with the same monotone guard as standard meter readings).

  1. Open the vehicle detail page from /fleet/:id
  2. Scroll to the "Fuel" card and click "Add fuel entry"
  3. Fill volume (litres) โ€” required; price per litre is optional but unlocks cost-per-km math
  4. Fill the odometer reading at the pump โ€” strongly recommended, auto-syncs the ODOMETER meter
  5. Optional: station name, payment method, receipt photo URL, notes
  6. Save โ€” the rolling summary refreshes; from the second entry onwards, l/100km is computed tank-to-tank

Consumption math (l/100km, cost/km) is recomputed on every read โ€” never stored โ€” so editing or deleting an entry instantly fixes the summary. If the odometer reading is regressive (lower than the latest stored), the meter sync logs a warning and skips, but the fuel log itself is still saved.

Driver profiles (M3a)

Attach a driver profile to any user to track their driving licence: class (B/BE/C/CE/D/DE/โ€ฆ), licence number, issue date, expiry date, and issuing authority. Drivers without a system login are supported via passive users โ€” create them once, never invite them.

  1. Open the user detail page from /people/users/:id
  2. Scroll to the "Driver profile" card (visible to Business+ tier only)
  3. Click "Add driver info" โ€” fill licence class, number, expiry date
  4. Save โ€” the user is now a driver and shows up in /fleet/drivers
  5. Editing the expiry date later re-arms the expiry-alert cron (sends fresh 30/15/7-day warnings)

The driver profile is 1:1 with the user โ€” one row per person, edited via PUT (upsert). Delete the profile to stop tracking; the user account itself stays intact.

Vehicle documents (M3b)

Centralize every paper a vehicle needs: insurance, registration, technical inspection (CT), tax sticker, low-emission sticker, operating permit. Each document carries an issue date, expiry date, provider, policy/serial number, file URL (MinIO upload) and free-text notes.

Insurance

Annual policy from your insurance company โ€” track renewal date

Registration certificate

The vehicle's carte grise / V5C โ€” permanent, no expiry to track

Technical inspection (CT)

Periodic safety check โ€” every 2 years in EU, varies by country

Tax sticker / Low-emission sticker

Annual vehicle tax, Crit'Air (FR), LEZ (UK), Umweltzone (DE)

Operating permit / Other

Special permits (ADR for hazmat, taxi, ride-share) and any other paper you need to track

Documents are sorted by expiry date ascending โ€” the most urgent renewal is always on top. A red "Expired" badge shows up automatically when the expiry passes. Editing the expiry date resets the alert state, so the daily cron will warn you again at the new 30/15/7-day windows.

Expiry alerts (M3c)

A daily cron at 04:00 UTC scans every driver licence and vehicle document and fires alerts 30, 15, and 7 days before the expiry date. Alerts land in the bell (in-app), mobile push, and email โ€” admins choose which channels via /settings/notifications.

In-app bell

Always-on notification with a deep link to the vehicle or driver profile

Mobile push

Sent to every registered device (Android + iOS) โ€” disable per-user in personal settings

Email

Styled HTML email with localized doc-type label, expiry date, and a CTA button

Default recipients are ADMIN + MANAGER roles, plus the driver themselves on licence alerts. Configure recipients and channels per event at /settings/notifications under the "Fleet Management" category. Past-due rows are surfaced via UI badges but not re-spammed by the cron.

Fleet dashboard (M4)

A single read-only page at /fleet/dashboard surfaces fleet-wide operational state in one bundled payload โ€” no client-side fan-out. Five KPI cards (vehicle count, documents expiring 30d with past-due sub-line, licences expiring 30d with past-due sub-line, fuel spend 30d, average consumption 30d) sit above two clickable lists: upcoming expiries (next 30 days, combining vehicle docs and driver licences sorted by date) and top 5 spenders (last 30 days by fuel cost).

Fleet-wide average consumption is **weighted by distance** (total litres burned รท total kilometres ร— 100), never the simple mean of per-vehicle averages โ€” short-distance vehicles do not skew the headline number. A vehicle counts only if it has a vehicle profile attached (an asset categorised as Vehicles without a profile is excluded so ghost-vehicles after a profile-only delete do not pollute the KPIs).

What's coming next

  • M5 (deferred until concrete client signal) โ€” DVIR mobile checklists, fuel-card integrations, telematics import (Samsara / GeoTab / generic GPS); requires specific provider choice per sub-feature

GPS / IoT telematics integration (Samsara, GeoTab) is intentionally not on the roadmap โ€” we focus on the operational tracking side, not the hardware.

Was this page helpful?