Actions and results
What each Fleet button and automatic behaviour does, with worked numbers and what the system refuses.
On this page (62)
DashboardVehicle formVehicle 360DriversAssignmentsReservationsCalendarDriver appTripsOdometerFuelFuel Card StatementsVehicle ChecklistsDaily LogsService RequestsWork order recordPreventive MaintenanceBreakdownsTyresBatteriesWorkshopDocumentsInsuranceFinesAccidentsClaimsFleet ExpensesFuel CostsMaintenance CostsLease CostsTCOCost AllocationReplacement PlanningReport pagesVehicle UtilizationCost / KMFuel EfficiencyMaintenance reportDowntimeDriver reportReport pages (Expiry)All ReportsPivotGraphsConfiguration (all lists)Vehicle CategoriesVehicle Categories / Makes / Fuel cardsMakes / ModelsFuel Types / Service Types / Cost CategoriesVehicle StatusesMaintenance PlansDocument Types / Permit TypesInspection TemplatesFuel CardsToll & ParkingAlert RulesApproval RulesCountry ProfilesOther ListsFleet SettingsTelematics ProvidersFeature switches
Dashboard
| Action | When | What you do | What happens |
|---|---|---|---|
| KPI tiles and pills | Test company with 8 vehicles: 3 Available, 2 Assigned, 1 In use, 1 Under maintenance, 1 Sold | Open Fleet > Dashboard; compare each tile and pill count with Vehicles list tabs | Total 7 (sold excluded), Active 6 (Available + Assigned + In use + Reserved), Available 3, Under Maintenance 1 (Under maintenance + Breakdown), pills match; Fuel Cost This Month = sum of this month's fuel cost lines |
| Board filters and search | As above | Pick a branch, then category, driver, status; type part of a plate; click Due for Service pill; toggle list view; Show more | Cards narrow each time; list view shows the same vehicles; Show more adds 16; 'No vehicle matches.' when nothing |
| Fuel cost tile hidden without permission | User with fleet.view only | Open Dashboard | No 'Fuel Cost This Month' tile, no cost trend card; maintenance cost line missing from At a Glance |
| Recent alerts | A vehicle with insurance expiring in 10 days, one with an overdue service | Look at Recent Alerts and Maintenance Due / Document Expiry; click an alert | Alert shows title, vehicle, due text (10 days: severity warning; 7 days or less serious; expired critical); click opens Vehicle 360 |
Vehicle form
| Action | When | What you do | What happens |
|---|---|---|---|
| Register a vehicle | fleet.create | New Vehicle; plate 'a 12345', Registered in UAE, Dubai; model Hilux (category / fuel filled from model); odometer 15000; Save | Code VHC-000001 (next number), plate stored 'A 12345', status Available, opening odometer reading 15,000 (source Manual, note 'Opening reading'), activity 'Vehicle registered', Vehicle 360 opens |
| Duplicate plate / VIN refused | Vehicle A 12345 Dubai exists | New vehicle with the same plate + emirate; then a different plate with the same VIN | 'Plate A 12345 is already on VHC-000001.' and 'VIN ... is already on VHC-000001.'; same plate in Sharjah is accepted (region differs) |
| Edit conflict | Vehicle open in two browsers | Edit and save in browser 1; edit and save in browser 2 | Browser 2 refused 'Somebody else changed this vehicle. Reload it and try again.' |
Vehicle 360
| Action | When | What you do | What happens |
|---|---|---|---|
| KPI strip and tabs | Vehicle with fills, trips, a work order, documents | Open the vehicle; click each smart button; open each tab | Odometer (engine hours for heavy categories), Fuel level, Utilization, Next Service, Insurance / Registration expiry (amber within 30 days); tab counts match the lists; Details tab shows VIN, chassis, residual value, useful life |
| Utilisation arithmetic | Working hours a day = 10; this month 2 days elapsed; trips 4 h on day 1 and 12 h on day 2 | Open Vehicle 360 on the 2nd | Utilization (MTD) = (4 + min(12,10)) / (2 x 10) = 70%. With no trips / telemetry it falls back to time assigned to a driver |
| Cost summary and cost per km | fleet.cost.view; this year fuel 1,368, maintenance 520, insurance 3,200; depreciation 13,500; distance 6,000 km | Open Overview > Cost Summary | Lines per category incl. Depreciation 13,500 (120,000 price, 30,000 residual, 60 months = 1,500 / month x 9 months); Total 18,588; Cost per KM 3.10; Cost per Month = total / months |
| Change status | Vehicle Available, no assignment | Change status > Out of Service, Why 'Waiting body parts' | Status Out of Service, activity 'Status changed to Out of Service' with the reason; assignments now refused 'VHC-000001 is out of service.' |
| Dispose without approval rule | Approval rule 'Vehicle disposal' switched off; no active assignment | Sell / scrap / return: Sold, sale value 45,000, buyer, reason; Save | Status Sold, current driver cleared, activity 'Vehicle sold' '45000.00 to <buyer>'; vehicle leaves the board and Vehicles 'In the fleet' tab; appears in 'Sold / scrapped'; all history kept |
| Dispose with the default approval rule | Default seed rule: Vehicle disposal from AED 0, approver fleet.configure | Request disposal as user A | disposal_state pending, approvers with fleet.configure notified 'Approve disposal of VHC-... (Sold)', vehicle status unchanged |
Drivers
| Action | When | What you do | What happens |
|---|---|---|---|
| Driver from HR | HR employee with a driving-licence identifier (number, expiry 2030-05-01) and a user | New Driver; pick the employee; Save | Name, phone, e-mail, login, code (employee no.) and licence filled from HR; status Active; Days left counted from Dubai today |
| Effective status | Driver A licence expired yesterday; driver B on approved HR leave today; driver C Suspended | Open Drivers | A 'Licence Expired', B 'On Leave', C 'Suspended'; a pending (not approved) leave does not change status |
| Licence data hidden | User with fleet.view but not fleet.driver.view | Open Drivers; open a driver; try Save | List shows name, status, vehicle, phone, licence expiry; licence number, categories, permit, medical are not returned; saving refused (needs fleet.driver.view) |
Assignments
| Action | When | What you do | What happens |
|---|---|---|---|
| Primary assignment hands over | VHC-1 held by driver A (primary); driver B free | Assign VHC-1 to B, Primary, From now | B's assignment Active; A's ended at that moment with note 'Handed over under ASG-...'; vehicle Assigned to B; if B had another primary vehicle that one is ended 'Moved to VHC-1' and settles to Available |
| Planned assignment started by the clock | Assign with From = now + 1 hour | Save; wait for the 5-minute clock after the time | Status Planned first; then Active automatically; a Temporary with Until in the past is ended 'Ended at its end date' |
| Refusals | Driver on approved leave 2026-10-01..10; truck with driver licence B only | Assign the driver for 2026-10-05; assign the B-licence driver to a truck | '<name> is on approved leave 2026-10-01 to 2026-10-10.'; '<name>'s licence categories (B) do not cover a truck.' |
| Cross-branch rule | Fleet Settings Cross-branch = Not allowed; driver in Abu Dhabi branch, vehicle in Dubai branch | Assign | 'This vehicle belongs to another branch, and cross-branch assignment is not allowed.'; with 'Needs approval' the assignment is Planned with Approval pending |
| End an assignment | Active assignment, start odometer 15,200 | End; Odometer at return 15,650 | Status Ended, Km 450, reading recorded with note 'End of ASG-...', driver removed from the vehicle, vehicle Available; activity 'Returned by <name>' |
Reservations
| Action | When | What you do | What happens |
|---|---|---|---|
| Book and approve (two people) | Default rule 'Pool vehicle reservations' needs fleet.assign; user E (fleet.view + fleet.log) and coordinator C | E books VHC-3 for tomorrow 08:00-17:00; C approves | E's booking Requested and C notified; after approval status Reserved, E notified 'Reservation RSV-... approved: VHC-3 · plate'; vehicle Reserved when pickup is within 2 hours |
| Book by category | Two free cars, one already booked | Book 'Any vehicle of this kind' = Car; approve | First free car (by code) is taken at approval; if none free 'No vehicle of that kind is free then.' |
| Check out and return | Reserved booking | Check out: odometer 22,000, fuel 80; Return: odometer 22,180, Damage 'Scratch rear bumper', refill ticked | Checkout: a Pool assignment created and active, vehicle In Use. Return: assignment ended, distance 180, vehicle Available, service request SRQ-... (Body damage, source Driver) raised; activity 'Returned from RSV-...' '180 km - refill required' |
| Own bookings only | User E (no fleet.assign) and others' bookings exist | E opens Reservations | Only E's bookings listed; cancelling someone else's (API) -> 'Only the person who asked, or a fleet coordinator, can cancel it.' |
Calendar
| Action | When | What you do | What happens |
|---|---|---|---|
| Entries and click-through | Service due, scheduled work order, document expiry, reservation over 3 days, lease ending this month | Open Calendar month, week and list; toggle kinds; click each entry | Each kind with its colour and count; the reservation spans its 3 days; clicking the work order opens it, reservation goes to Reservations, others open Vehicle 360 |
Driver app
| Action | When | What you do | What happens |
|---|---|---|---|
| Not a driver | User without a driver profile | Open My Vehicle (Driver App) | 'You are not set up as a driver. Ask the fleet team to add your driver profile.' |
| Online actions | Driver with an assigned vehicle | Start Trip (odometer 22,150, JAFZA); End Trip (22,230, toll 8, parking 10); Fuel Entry 45 L / 128.25; Report Issue | Each shows 'Saved.'; trip TRP-... started then completed 80 km; fill recorded source Driver app; service request raised; vehicle card refreshes |
| Offline queue and replay | Phone or browser offline (DevTools offline) | Do a Fuel Entry and Start Trip offline; go online; press Send now twice | Banner '2 item(s) waiting to be sent'; message 'Saved on this phone - it will be sent when you are back online.'; after sync 'Sent 2 item(s).'; records appear once (client id replay) and are marked offline with the capture time |
| Not my vehicle | Driver D1 sends a fuel item for D2's vehicle (API) | POST driver/sync | Item result ok=false with 'VHC-... is not assigned to you.'; the other items in the batch still apply |
Trips
| Action | When | What you do | What happens |
|---|---|---|---|
| Start and end with cost | Vehicle normal consumption 8.0 L/100 km, last fill 2.85 AED/L; trip start odometer 50,000 | New Trip, Start it now; End: end odometer 50,180, fuel used blank, toll 8, parking 10 | Distance 180 km; fuel used 14.4 L; fuel cost 41.04; total 59.04; cost / km 0.33; cost ledger gets Toll 8.00 and Parking 10.00 (not fuel - fills already carry it); vehicle back to Assigned / Available |
| Cannot change a finished trip | Completed trip | Open and save; Cancel (API) | 'A finished trip cannot be changed.' / 'A finished trip cannot be cancelled.' |
Odometer
| Action | When | What you do | What happens |
|---|---|---|---|
| Flagged readings kept | Vehicle at 50,000 (reading at 08:00); Unusual jump setting 1,500 | Use three fresh test vehicles each with a 50,000 reading at 08:00 yesterday: record 49,900 on the first; 52,000 at 10:00 yesterday on the second; 51,700 at 08:00 today (24 h later) on the third | Lower: flag 'Reading lower than previous'; 2,000 km in 2 h: 'Impossible distance'; 1,700 in 24 h: 'Unusual jump'. All Needs review; vehicle odometer stays 50,000; activity 'Odometer reading needs review' |
| Review a reading | Flagged readings | Accept the 'lower than previous' reading 49,900; reject another | Accepted lower reading SETS the vehicle odometer to 49,900 (cluster replaced); rejected reading is excluded from distance and next checks; 'This reading is not waiting for review.' on a second click |
Fuel
| Action | When | What you do | What happens |
|---|---|---|---|
| Log a fill and efficiency | Previous full fill at 45,000 km | Log Fuel: 48 L, price 2.85, odometer 45,600, full tank | Total 136.80; distance 600; KM / L 12.5; L / 100 km 8.0; cost per km 0.2280; fuel cost line 136.80 on the vehicle; activity 'Fuel log added' '48 L at ENOC ...' |
| Potential anomalies | Vehicle tank 60 L; normal 8.0 L/100 km (3+ measured fills); anomaly 20% | Log 64 L; log a fill giving 10.5 L/100 km; repeat a receipt number at the same station; use a card linked to another vehicle | Flags: 'Quantity inconsistent with tank capacity' (64 > 63), 'Consumption above normal' (10.5 > 9.6), 'Duplicate receipt', 'Fuel card mismatch'; Review = Needs review; fuel reviewers notified 'Potential fuel anomaly on VHC-... - needs review'. Wording never says fraud |
| Review a flagged fill | A flagged fill entered by user A | User B (fleet.fuel.view + fleet.edit): Ask the driver; another: Clear | Queried: driver's user notified 'Please confirm fuel entry FUE-...'; a queried fill is left out of 'normal consumption'. Cleared: Review cleared. User A reviewing own fill -> 'Somebody other than the person who entered it reviews it.' (unless A has fleet.configure) |
| Posting a fill | Fleet Settings 'Post fleet costs...' ticked, accounts blank | Log a cash fill 136.80; a card fill; an On account fill | Cash: journal Dr fuel expense (found by name 'fuel' / 'vehicle running' or the expense role) / Cr cash 136.80, source fleet, with branch / cost centre / project dimensions; card: Cr the card account (payable role); On account: no journal; ledger 'Posted' Yes for the first two |
Fuel Card Statements
| Action | When | What you do | What happens |
|---|---|---|---|
| Import and reconcile | Card 9988776655444321 linked to VHC-1; fill of 49 L / 142.50 at 07:45 | Import 'TX-TEST-1, card, 2026-10-02T07:50, 50 L, 145.00'; import the same file again | First: Imported 1, matched 1; status Differences with 'Amount differs by 2.50' (litres within 3%, time within 6 h). Second: 'skipped 1 already imported' |
| Unmatched lines | Line for a card not linked to a vehicle; line with no matching fill | Import; on the linked-card line press Record as fill; Ignore the other | Not linked: Unmatched 'The card is not linked to a vehicle.' and Record as fill refused 'Link the card to a vehicle first.'; Record as fill creates FUE-... (source Import, paid by card) and the line becomes Matched; Ignore -> ignored |
Vehicle Checklists
| Action | When | What you do | What happens |
|---|---|---|---|
| Checklist result and follow-up | Pre-Trip template | Start a checklist: Brakes Not OK 'spongy'; Horn Not OK; Submit | Result Failed (brakes is a safety item: brakes, tyres, lights, seatbelt, hydraulics); a High priority service request 'Inspection INS-...: Brakes - spongy; Horn' with the photos; only non-safety items Not OK -> 'Pass with issues', normal priority |
Daily Logs
| Action | When | What you do | What happens |
|---|---|---|---|
| Daily log | Forklift VHC-6 | New daily log: start 1,200, end 1,260, hours 7.5, issues 'Hydraulic leak' | Km 60; end reading recorded (Daily log); a Repair service request from the driver is raised |
Service Requests
| Action | When | What you do | What happens |
|---|---|---|---|
| Decide a request | New request SRQ-1 | Approve; on another Reject; on another Create work order | Approved / Rejected with decided by; Create work order makes WO-... (service Repair, or Minor service for a Service request) linked, request 'Work order created' and the record opens; second create -> 'This request already has a work order or is closed.' |
Work order record
| Action | When | What you do | What happens |
|---|---|---|---|
| Lines and totals | Draft WO | Add part 2 x 45 (from stock), labour 1.5 h x 120, outside work 1 x 250; Save | Parts 90.00, Labour 180.00, Outside work 250.00, Total 520.00; amounts shown before save update live |
| Submit under the approval limit | Default rule: work orders from AED 5,000; WO total 520 | Submit | Straight to Approved (approval 'not needed'); Schedule / Start work appear |
| Approval above the limit (maker-checker) | WO total 6,200 created by workshop user W; manager M has fleet.workorder.approve | W submits; W tries Approve; M approves | After submit 'Waiting for approval' and approvers notified 'Approve work order WO-... (6200.00) for VHC-...'; W refused 'You cannot approve this.' (or 'Somebody other than the person who asked has to approve it.' if W holds the permission); M approves -> Approved, Approved by M |
| Reject and resubmit | Pending WO | Approver rejects; requester edits and submits again | Approval Rejected, status stays Draft, Submit shows again; resubmit asks again |
| Start, waiting parts, schedule | Approved WO | Schedule 2026-10-05; Start work; Waiting parts; Start work again | Scheduled (activity 'Maintenance scheduled'); In progress and vehicle Under Maintenance (activity 'Work started'); Waiting parts; back to In progress; Start from Draft -> 'Approve or schedule the work order first.' |
| Issue parts from stock | Oil filter OF-TEST: 10 on hand in WH-MAIN at FIFO cost 40; line 2 from stock | Issue parts from stock | Internal picking (done) WH-MAIN stock -> inventory usage; line issued at 2 x 40 = 80.00 (Inventory cost, not the typed 45); journal 'Fleet parts WO-... VHC-...' Dr maintenance expense 80 / Cr stock account 80 with the vehicle's dimensions; Parts used list shows Issued Yes; on hand 8 |
| Issue refused | Part qty 20, only 8 on hand; a lot-tracked part; a service product | Issue parts | 'Only 8 of OF-TEST is available at WH-MAIN.'; 'XYZ is tracked by lot or serial - issue it from Inventory, then add it here at its cost.'; 'This part is not a stocked product.' |
| Raise purchase order to the garage | External WO with vendor, outside work 250 and labour 180 (not from stock) | Raise purchase order | A Purchase order to the vendor with the not-from-stock lines (product FLEET-REPAIR 'Vehicle repair service' created if missing, VAT 5%, notes 'VHC-... plate - description', branch / cost centre / project); WO shows its number; second press -> 'This work order already has a purchase order.'; without vendor 'Choose the garage (vendor) first.' |
| Complete | In progress WO started 09:00, a from-stock part not yet issued | Complete at 15:30, odometer 50,050, findings | Remaining stock parts issued automatically; downtime 6.5 h; reading 50,050 (Service); status Completed; cost line Maintenance = parts + labour + outside (520) on the completion date; linked service request Resolved, breakdown resolved; vehicle back to Available / Assigned; 'Work order WO-... completed' alert |
| Cancel | WO with an issued part; another without | Cancel each | With issued part: 'Parts have been issued - return them to stock in Inventory before cancelling.'; without: Cancelled, its cost lines removed, vehicle status settles |
Preventive Maintenance
| Action | When | What you do | What happens |
|---|---|---|---|
| Due states (km) | Plan Oil change every 10,000 km / 180 days, warn 500 km / 14 days; last oil change completed at 40,000 km today | Set odometer 49,000, then 49,600, then 49,950, then 50,050; open Preventive Maintenance (tick 'Show plans not yet due') | 49,000: Not due (1,000 left); 49,600: Due soon (400 <= 500); 49,950: Due (50 <= 500 / 5); 50,050: Overdue (-50). Due at km 50,000 |
| Due by date / hours, and which plans apply | Six-monthly inspection (182 days); 250-hour plan for Heavy; a forklift and a car | Open the board | Car: days measure from its last inspection (or when it joined the fleet - not from an old purchase date); the hours plan applies only to engine-hours categories; road km plans not applied to the forklift |
| Clock raises a request | Plan with 'Raise a service request when due' on, vehicle on the road, nothing open | Run the daily scan (next Dubai midnight, or staging tick) | Service request SRQ-... source Maintenance Plan, description 'Oil change due at 50,000 km or by DD Mon YYYY', priority High when overdue; one per plan; once the work order completes the open request it raised is resolved 'No longer due...' |
Breakdowns
| Action | When | What you do | What happens |
|---|---|---|---|
| Breakdown to repair | Vehicle on a trip | Report breakdown with recovery and tow 350; Recovering; Work order; complete the work order | Vehicle Breakdown, trip notes 'Breakdown BRK-...', Urgent service request, alert 'Breakdown: VHC-... at <place>'; Recovering; WO (Repair, Urgent) and status In repair; completing the WO resolves the breakdown and adds a 350.00 Tow / recovery maintenance cost; vehicle Available |
| Resolve without work order | Open breakdown at 10:00 | Resolve at 13:30 with no downtime given | Downtime 3.5 h; tow cost recorded; vehicle back to Available when no open work order |
Tyres
| Action | When | What you do | What happens |
|---|---|---|---|
| Tyre lifecycle and cost per km | Tyre cost 450 in stock; vehicle at 20,000 km | Fit Front Left; drive to 50,000; Rotate to Rear Right; Remove; History | First fit charges 450 Tyres cost to the vehicle; KM used 30,000; cost / km 0.0150; rotation swaps with the tyre at Rear Right (both get events); history shows purchased, installed, rotated, removed with odometer and user |
| Low tread | Installed tyre | Check: tread 2.5 | Shows in Low tread tab; alert 'Tyre tread low on VHC-... (2.5 mm)' |
Batteries
| Action | When | What you do | What happens |
|---|---|---|---|
| Fit a battery replaces the old one | Vehicle with battery BAT-1 installed | New battery BAT-2 cost 420 fitted to the vehicle | BAT-2 Installed, BAT-1 Replaced with replacement date today and no vehicle; 420 maintenance cost; activity 'Battery fitted' |
Workshop
| Action | When | What you do | What happens |
|---|---|---|---|
| Workshop drives work orders | Workshop with vendor, warehouse WH-2 and labour rate 120 | New WO with this workshop; add a labour line with no rate | WO vendor, kind and parts warehouse taken from the workshop; labour rate 120 used; deleting a workshop used by a WO switches it off ('It is used by existing records, so it was switched off instead.') |
Documents
| Action | When | What you do | What happens |
|---|---|---|---|
| Status by expiry | Today 2 Oct 2026 | Save documents expiring 2026-09-30, 2026-10-20, 2027-01-31 | Expired, Expiring soon (18 days), Valid; Days left -2 / 18 / 121; the daily clock moves them as days pass |
| Renew Mulkiya | Mulkiya expiring 2026-11-30, type renews every 12 months | Renewing; then Renew with fee 450 | Renewing -> status Renewal in progress; Renew creates a new document issued 2026-11-30, expiring 2027-11-30, fee 450 as a Registration cost; the old one is kept (renewed) and drops out of lists and the vehicle's dates; its alerts stop |
| Missing mandatory documents | UAE-plated vehicle without Mulkiya or Vehicle Testing; no live policy | Vehicle 360 > Documents | Red line 'Missing for this country: Registration / Mulkiya, Motor Insurance (UAE), Vehicle Testing' (KSA types not listed for a UAE plate); a live insurance policy satisfies the insurance group |
| Read with AI preview | PDF with text 'Policy No ... Expiry 31/12/2026' | Read with AI; upload; check fields; Save document | Preview note 'Read by ... - confidence N%. Check every field.' (or 'Read from the PDF's text - check every field.'); fields pre-filled incl. suggested vehicle by plate / VIN and type; nothing saved until Save; audit 'fleet.document.extract' |
Insurance
| Action | When | What you do | What happens |
|---|---|---|---|
| Policy as cost and expiry | fleet.edit | New policy 2026-01-01..2026-12-31 premium 3,200 | Insurance cost 3,200 dated 2026-01-01; Vehicle 360 Insurance Expiry 31 Dec 2026; policy appears on the driver app documents; status Expiring soon from 1 Dec |
Fines
| Action | When | What you do | What happens |
|---|---|---|---|
| Driver at the time | Assignment of VHC-1 to driver A covering 28 Sep 22:15 | Record a fine at that time with the driver blank | Driver A filled; with a trip running then, the trip's driver wins |
| Shared fine recovered through salary | Fine AED 600 Speeding, Shared, share blank, Recover through salary; approver M with fleet.fine.approve (default rule) | Save; M approves deduction (period default this month); HR marks Deducted by HR; Paid | Driver share 300.00, Salary deduction Pending approval -> Queued with period 2026-10 and HR users (hr.employee.view) notified 'Payroll deduction 300.00 for <driver> (2026-10)' -> Deducted. Once paid the fines cost line = 600 - 300 = 300.00 |
| Who pays and cost | Three paid fines of 600 | Company pays; Driver pays without salary recovery; Shared with deduction still pending | Company: cost 600; Driver: share 600, cost 0 (no line); Shared pending: cost 600 until the deduction is approved, then 300. Unpaid fines are not a cost |
| Salik / toll violation | Violation Toll / Salik AED 100 (test), authority 'Salik', reference SLK-TEST-1 | Record; record the same reference again | Saved; duplicate -> 'This fine is already recorded as FIN-...' |
Accidents
| Action | When | What you do | What happens |
|---|---|---|---|
| Report an accident | fleet.log | Report with injuries ticked and estimate 8,000 | ACC-... Open; a High 'Body damage' service request from Accident; alert 'Accident: VHC-... - injuries reported' to fleet.accident.view holders; activity 'Accident reported' |
| Claim and repair from the accident | Open accident | Insurance claim; Repair work order; Close | Claim CLM-... draft with estimate 8,000 and the live policy linked, accident Claim submitted; repair WO (Body work, External Garage, High), accident Repairing; second claim -> 'This accident already has a claim.'; Close -> Closed |
Claims
| Action | When | What you do | What happens |
|---|---|---|---|
| Claim to money received | Claim from the accident above | Submit; Approved 7,000; Money received 3,000; Money received 4,000 | Submitted; Approved 7,000; Received 3,000 then 7,000 (added up), status Paid; ONE maintenance cost line of -7,000.00 'Insurance recovery ...' reduces the vehicle's TCO |
Fleet Expenses
| Action | When | What you do | What happens |
|---|---|---|---|
| Expense below the approval limit is approved at once | User A has fleet.edit + fleet.cost.view; default rule 'Fleet expenses from AED 2,000'; post_costs off | New expense: vehicle VHC-00001, Cleaning, amount 1,999.99, VAT 95.24, Paid by Cash, Save | Number FEX-00001, status Approved at once; one ledger line Cleaning 1,999.99 (VAT not added) dated today with the vehicle's branch / cost centre / project; vehicle activity 'Cleaning expense added'; no journal (posting off); audit entry written |
| Expense at the limit waits for a second person | As above | New expense Toll 2,000.00 (exactly the limit); look at the list and the Waiting approval tab | Status Waiting approval (rule applies from amount >= 2,000); NO ledger line yet; everyone with the approver permission except A is notified 'Approve fleet expense FEX-00002: 2,000.00 for VHC-00001' (24 h due) |
| Approve by another person | Expense FEX-00002 Waiting approval; user B holds fleet.workorder.approve | B opens Costs > Fleet Expenses > Waiting approval and clicks Approve | Status Approved, Approved by = B; ledger line Toll 2,000.00 now exists and dashboard / TCO include it; the approval notification is resolved; activity 'Toll expense added' |
| Nobody approves their own expense | A created FEX-00002 and also holds the approver permission | A clicks Approve on their own expense | Refused: 'Somebody other than the person who asked has to approve it.'; status unchanged; no ledger line |
| Approver permission is needed | User C has fleet.cost.view but not the approver permission | C clicks Approve (or calls the approve action) | Refused: 'You cannot approve this.'; status unchanged |
| Reject and resubmit | Expense Waiting approval | B clicks Reject; then A opens the Rejected expense, lowers the amount to 1,500 and saves | After Reject: status Rejected, no ledger line. After the edit: amount below the limit so it is Approved at once and booked (a rejected expense may be changed and sent again; a Rejected one over the limit goes back to Waiting approval) |
| Approved expense is locked | Approved expense FEX-00001 | Open it, change the amount, Save | Refused: 'An approved expense cannot be changed.' |
| Posting a paid-on-the-spot expense | Fleet Settings: post fleet costs ON, account for Cleaning = 5430, cash account 1010; branch + project on the vehicle | Create Cleaning 150.00, Paid by Cash (below limit) | Journal: Dr 5430 150.00 / Cr 1010 150.00, source Fleet, with branch, cost centre, department and project dimensions; ledger line shows Posted = Yes; expense remembers the journal id |
| Vendor bill and employee-paid are not double posted | Posting ON | Create Parking 80.00 Paid by 'Vendor bill (entered in Purchase)'; create another Paid by Company card 80.00 | Vendor bill: ledger line exists but NO journal (Purchase carries it). Company card: Dr parking expense 80.00 / Cr the card account (Fleet Settings 'Fuel card / company card' code, else the payable role) |
| VAT is information only | No posting | Expense amount 105.00, VAT 5.00 | Cost line is 105.00 (not 110.00); VAT stored on the expense only |
| Tabs and search | Expenses in all four states | Click each tab; search 'RCPT-7781'; sort by Amount | Tabs filter by status with counts; search matches number, paid to, reference, description; paging by the server |
Fuel Costs
| Action | When | What you do | What happens |
|---|---|---|---|
| Fuel ledger follows fuel fills | Two fills: 45 L at 128.25 and 30 L at 85.50 on VHC-00001 this month | Open Costs > Fuel Costs | Two lines (category Fuel, From fuel, reference FUE-...), Amount 128.25 and 85.50; click a row opens the Vehicle 360; no create button; dashboard 'Fuel Cost This Month' is the sum 213.75 |
Maintenance Costs
| Action | When | What you do | What happens |
|---|---|---|---|
| Maintenance and tyres together, recoveries as minus | Work order parts 400 + labour 250; tyre purchase 900; insurance claim received 7,000 (recorded as minus line) | Open Costs > Maintenance Costs | Lines for Maintenance 650 (one line per work order), Tyres 900 and Maintenance -7,000.00; no fuel or insurance lines; net on the page = 650 + 900 - 7,000 = -5,450 |
Lease Costs
| Action | When | What you do | What happens |
|---|---|---|---|
| A lease charges every month it has run | Today 2 Oct 2026; vehicle OWNED | New lease: Type Lease, Start 2026-03-10, End 2028-03-09, Monthly rate 2,500; Save; scroll to 'Lease and rental charges' | Number LSE-00001; vehicle ownership becomes Leased; 8 charge lines (March to October) of 2,500 = 20,000; the March line is dated 10 Mar, the others on the 1st (no proration of the first month, and October is charged on 1 Oct); saving again or the daily scan adds nothing twice |
| Status from dates | Today 2 Oct 2026 | Save three leases ending 2026-09-01, 2026-11-15 and 2027-10-02 | Ended, Expiring (44 days left, within 60) and Active; tabs count accordingly |
| Mileage allowance, yearly | Lease start 2026-01-01, 30,000 km per year, excess 0.50 per km, start odometer 50,000, vehicle now at 74,000, today 2 Oct 2026 | Open Lease Costs and read 'Mileage used' and 'Excess charge' | Days elapsed 274 / 30.4 = 9.01 months x (30,000 / 12 = 2,500) = allowed 22,533 km; used 24,000; shows '24000 / 22533 km (106.5%)'; excess 1,467 km x 0.50 = 733.50 |
| Mileage allowance for the whole contract and per month | Same vehicle | Change Allowance per to Whole contract with limit 90,000; then to Month with limit 2,500 | Whole contract: allowed 90,000, used 24,000 = 26.7%, excess 0.00. Month: per-month 2,500 (not divided by 12) x 9.01 = 22,533, same as the yearly case. No limit entered: shows '—' and no excess |
| Lease mileage alert | Alert rule 'Lease mileage nearing its limit' active | Run the daily scan with used 90% and again at over 100% | One notification at 90 and one at 100 (each once per lease) |
| End a contract today | Active lease to 2028-03-09 | Click End, confirm 'End this contract today?' | End date set to today (never later than the old end), status Ended; months already charged stay; no more monthly charges; End button disappears; running End again on an ended lease is not blocked |
| Lease dates and permission | User with fleet.cost.view but no fleet.edit | Save a lease with End = Start; then try saving as the view-only user | 'The contract ends after it starts.'; view-only user is refused by the server (fleet.edit needed to save or end) |
TCO
| Action | When | What you do | What happens |
|---|---|---|---|
| Cost of owning one vehicle over a period | Vehicle owned: price 120,000, residual 30,000, life 60 months, bought 2025-03-15. Ledger 1 Jan - 30 Sep 2026: Fuel 3,000; Maintenance 1,200; Tyres 800; Insurance 2,400; Registration 450; Toll 120; Fines 200; Cleaning 80. Odometer 45,000 before 1 Jan, 52,500 at end | TCO, From 2026-01-01 To 2026-09-30 | Depreciation = (120,000 - 30,000) / 60 = 1,500 a month x 9 = 13,500. Columns: Fuel 3,000; Maintenance & tyres 2,000; Insurance 2,400; Registration toll parking 570; Fines 200; Depreciation 13,500; Other 80; Running cost 21,750 (sum). Purchase column is blank/0 because the purchase was before the period. Distance 7,500; Cost / km 21,750 / 7,500 = 2.90; Cost / month 21,750 / 9 = 2,416.67 |
| Whole life of each vehicle | Same vehicle, today 2 Oct 2026 | Tick 'Whole life of each vehicle' | Period becomes 2025-03-15 to today; depreciation 19 months x 1,500 = 28,500 (the 2 Oct day is before the 15th so the current part-month is not counted); Purchase column shows 120,000 (purchase falls inside the period) but it is NOT part of Running cost |
| Part months in depreciation | Same vehicle | Period 2026-01-20 to 2026-09-30, then 2026-01-20 to 2026-09-10 | First: 8 whole months + 1 (end day 30 is on or after start day 20) = 9 x 1,500 = 13,500. Second: 8 months + 0 (10 is before 20) = 8 x 1,500 = 12,000 |
| Depreciation stops: fully depreciated, sold, leased | A: bought 2020-01-01 (60-month life); B: same as the first vehicle but sold 2026-06-30; C: ownership Leased | TCO 2026-01-01 to 2026-09-30 | A: 0 (all 60 months done before the period). B: stops at the sale date, 6 months x 1,500 = 9,000. C: no depreciation at all (only Owned and Financed vehicles with a purchase date and price depreciate; its lease cost is in the Lease / rental column) |
| Cost / km differs between TCO and Cost / KM | Vehicle of the first TCO case | Open Reports > Cost / KM for the same dates | Cost / KM uses ledger costs only: 8,250 / 7,500 = 1.10 (no depreciation) while TCO shows 2.90. Both are right by their own definition - testers must not report one as a mismatch |
| No distance, no cost per km | Vehicle with no odometer readings in the period | Open TCO | Distance 0 and Cost / km shows '—' (no division by zero); Cost / month still shows |
| Sort, export and totals | Three vehicles | Click Running cost heading twice; click Export | Rows sort highest first then lowest; CSV named tco has the same columns and rows; Total row adds money columns and distance (not Cost / km) |
| Permission | User with fleet.cost.view only | Open TCO and the menu | TCO entries are hidden; direct call refused (fleet.tco.view needed) |
Cost Allocation
| Action | When | What you do | What happens |
|---|---|---|---|
| Group by branch | Ledger 1 Jan - 30 Sep: Dubai branch Fuel 3,000 + Maintenance 1,000; Sharjah branch Fuel 1,500; one line with no branch 200 | Allocate by Branch, 2026-01-01 to 2026-09-30 | Rows largest first: Dubai (Fuel 3,000, Maintenance 1,000, Total 4,000), Sharjah (Fuel 1,500), '(none)' (200); category columns only for categories present; header Total 5,700 |
| Other groupings | Same ledger with projects, drivers and customers on expense lines | Switch Allocate by to Project, Driver, Customer, Cost category | Each grouping shows its own names (project 'PRJ-100 - Name', driver name, customer name) and the same grand total each time; Cost category groups by category |
| Period rules | Any | From after To; period over ten years | 'The period starts before it ends.' and 'Choose a period of at most ten years.' |
Replacement Planning
| Action | When | What you do | What happens |
|---|---|---|---|
| Score to suggestion | Four vehicles. A: year 2019 (age 7 in 2026), odometer 260,000, 12-month maintenance 2,000, price 60,000 residual 6,000 bought 2019-10-01. B: year 2021, 160,000 km, 3 breakdowns. C: year 2021, 150,000 km. D: year 2024, 40,000 km | Open Replacement Planning | A: age 7 = +2, 260,000 km = +2, book value = 60,000 - 54,000 = 6,000 and maintenance 2,000 > 30% of 6,000 (1,800) = +2, so score 6 = REPLACE with reasons. B: +1 age 5, +1 km, +1 breakdowns = 3 = REPLACE SOON. C: +1 +1 = 2 = REVIEW. D: 0 = KEEP |
| Thresholds and exclusions | Vehicle with maintenance exactly 30% of book value; a sold vehicle; 240 hours downtime | Open the page | Exactly 30% adds nothing (must be above); sold / scrapped vehicles are not listed; 240 or more downtime hours adds +1; 3 or more breakdowns in 12 months adds +1; the suggestion never changes the vehicle's own Replacement status |
Report pages
| Action | When | What you do | What happens |
|---|---|---|---|
| Defaults, sort, export | Any report | Open Fleet Summary; click a heading; click Export | Dates default 1 Jan this year to today; headings sort asc/desc with an arrow; Export downloads a CSV of the sorted rows; 'Nothing in this period.' when empty |
| Fleet Summary arithmetic | Category Car: 3 vehicles (2 on the road, 1 in workshop), ledger cost 6,000, odometer distance 10,000 km | Open Fleet Summary | Row Car: Vehicles 3, Active 2, In maintenance 1, Sold 0, Distance 10,000, Cost 6,000.00, Cost / km 0.60; sold vehicles are counted in 'Sold / scrapped'; totals add counts, distance and cost |
| Accidents and Fines totals | Two accidents (estimated 4,000 and 2,500); three fines 300, 400, 100 with driver share 150, 0, 100 | Open Accidents, then Fines | Accidents total 6,500; Fines Amount total 800 and Driver share 250; only records with a date inside the period |
Vehicle Utilization
| Action | When | What you do | What happens |
|---|---|---|---|
| Utilization and downtime percentages | Period 1 - 30 Sep (30 days), working hours 10 a day. Trips: three days of 8 h, two days of 12 h. Work order downtime 36 h | Open Vehicle Utilization | Used hours: 3 x 8 + 2 x min(12, 10) = 44 / (30 x 10 = 300) = 14.7, shown 15%; Downtime 36 / (30 x 24 = 720) = 5.0%; Idle = 100 - 15 - 5 = 80.0%; footer shows the average utilization |
Cost / KM
| Action | When | What you do | What happens |
|---|---|---|---|
| Cost per km and ordering | V1 cost 1,800 over 3,000 km; V2 cost 2,500 over 2,000 km; V3 cost 400 with 0 km | Open Cost / KM | Order V2 (1.25), V1 (0.60), V3 blank '—'; total row: cost 4,700, distance 5,000, Cost / km 0.94 |
Fuel Efficiency
| Action | When | What you do | What happens |
|---|---|---|---|
| Averages | Vehicle with two measured fills at 9.00 and 11.00 L/100 km (11.11 and 9.09 km/L); rated normal 9.5 | Open Fuel Efficiency | L / 100 km = (9 + 11) / 2 = 10.00; KM / L is the average of the stored per-fill values = about 10.10 (not 100 / 10.00); Normal 9.50 shown; fills without a measured consumption are left out |
Maintenance report
| Action | When | What you do | What happens |
|---|---|---|---|
| Work order totals | WO1 parts 400, labour 250, outside 0, downtime 6 h; WO2 parts 0, labour 300, outside 1,200, downtime 30 h; WO3 cancelled parts 999 | Open Maintenance report | One row: Work orders 2, Parts 400, Labour 550, Outside 1,200, Total 2,150, Downtime 36; the cancelled order is ignored |
Downtime
| Action | When | What you do | What happens |
|---|---|---|---|
| Downtime and time between failures | 30-day period; completed work order downtime 36 h; 3 breakdowns, one without a work order (4 h) with tow costs 150, 0 and 200 | Open Downtime | Downtime 36 + 4 = 40 h; Breakdowns 3; Breakdown cost 350.00; Mean time between failures = 30 x 24 / 3 = 240.0 h; no breakdowns shows '—' |
Driver report
| Action | When | What you do | What happens |
|---|---|---|---|
| Counts only, no score | Driver with 12 completed trips (1,450 km), 2 fines (AED 700) and 1 accident in the period | Open Driver report | Row shows Trips 12, Distance 1,450, Fines 2, Fine amount 700.00, Accidents 1; note 'Counts of recorded events - no score of any person.'; only active drivers listed |
Report pages (Expiry)
| Action | When | What you do | What happens |
|---|---|---|---|
| Expiry ignores the dates | Documents expiring in 20, 100 and 200 days, plus one expired | Open Expiry; change From / To | Shows items expired or expiring within the next 120 days (the 20-day, 100-day and expired ones); the dates on the page do not change the result |
All Reports
| Action | When | What you do | What happens |
|---|---|---|---|
| Catalogue and permissions | User with fleet.view and fleet.fuel.view only | Open All Reports; open Fuel Efficiency; try Cost / KM | 27 tiles; tiles for reports needing other permissions are greyed 'Needs another permission' and cannot be opened; '← All reports' returns to the grid |
Pivot
| Action | When | What you do | What happens |
|---|---|---|---|
| Cost by vehicle and month | V1 costs Jan 500, Feb 700; V2 Feb 300 | Rows Vehicle, Columns Month, Measure Cost, 2026-01-01 to 2026-02-28 | Columns Jan 2026 and Feb 2026; V1 500 / 700 / total 1,200; V2 blank / 300 / 300; column totals 500 / 1,000; grand total 1,500; rows sorted largest first |
| Other measures and permissions | User with fleet.view only | Measure Cost; then Fuel (L), Distance, Trips, Downtime, Maintenance count | Cost is refused (fleet.cost.view); the other measures open. Cost by Driver uses the driver on the cost line, else the vehicle's current driver. Rows are capped at 500 |
Graphs
| Action | When | What you do | What happens |
|---|---|---|---|
| Four charts | Six months of data | Open Graphs | Fuel Cost by Month and Maintenance Cost Trend show 6 columns (May 2026 to Oct 2026 on 2 Oct 2026); Cost / KM and Utilization show up to 20 vehicles, highest first; long names cut to 11 letters plus '…'; a user without fleet.cost.view sees an error on the cost charts |
Configuration (all lists)
| Action | When | What you do | What happens |
|---|---|---|---|
| First open seeds the company | New company that has never opened Fleet | Open any Configuration list | Defaults appear: 15 categories, 15 makes, 6 fuel types, 12 service types, 14 cost categories, 11 body types, 9 violation types, 4 coverage types, 8 request types, 6 country profiles, 26 document types, inspection templates, 5 maintenance plans, 14 alert rules, 5 approval rules |
Vehicle Categories
| Action | When | What you do | What happens |
|---|---|---|---|
| Add a category | User with fleet.configure | New: Code 'mobile crane', Category Mobile Crane, Arabic رافعة متنقلة, Counts engine hours on, Save | Saved with code MOBILE_CRANE; appears in the vehicle form picker; the vehicle form then asks for engine hours |
Vehicle Categories / Makes / Fuel cards
| Action | When | What you do | What happens |
|---|---|---|---|
| Delete turns into switch-off when in use | Category used by a vehicle; make used by a vehicle; fuel card used by a fill; an unused category | Delete each | Used ones are NOT deleted: category / make set Inactive, card set Cancelled, message 'It is used by existing records, so it was switched off instead.'; the unused one is deleted for good |
Makes / Models
| Action | When | What you do | What happens |
|---|---|---|---|
| Make and model | Make Toyota exists | Add model Hilux (Pickup, Diesel, tank 80, rated 9.5); add Hilux again | First saved; the second is refused by the database (make + model unique) |
Fuel Types / Service Types / Cost Categories
| Action | When | What you do | What happens |
|---|---|---|---|
| Lists never hard-delete | Any entry | Delete 'LPG' | Always switched off ('Lookups used by records are switched off rather than deleted.') even if unused; set Active back on to restore |
Vehicle Statuses
| Action | When | What you do | What happens |
|---|---|---|---|
| Fixed list | Any user with fleet.view | Open the page; try to add through the API | Ten statuses shown, no New button; API gives 'This list is fixed by the product.' |
Maintenance Plans
| Action | When | What you do | What happens |
|---|---|---|---|
| Plan drives the due board | Plan 'Oil change' every 10,000 km / 180 days, trigger Whichever comes first | Add the plan, open Preventive Maintenance for a vehicle at 50,000 km last serviced at 40,000 | The board shows the plan due at 50,000 km; changing the plan interval changes due dates for all vehicles it applies to |
Document Types / Permit Types
| Action | When | What you do | What happens |
|---|---|---|---|
| Pages split by group | Types in groups registration, permit, toll, customs, cross_border | Open Document Types and Permit Types | Permit, Cross-border, Customs and Toll groups appear only on Permit Types; the others only on Document Types; both save to the same register |
Inspection Templates
| Action | When | What you do | What happens |
|---|---|---|---|
| Edit checklist items | Template with 11 items | Add item 'Fire extinguisher' group Safety photo on; leave one new row blank; remove one item; Save | Item saved with code fire_extinguisher; the blank row is dropped; removed item gone; new checklists use the new list, old ones keep theirs |
Fuel Cards
| Action | When | What you do | What happens |
|---|---|---|---|
| Card number masking | User with fleet.fuel.view | Add card 7002123456784321; reopen it; Save without touching the number | List shows '•••• 4321' only; reopening shows the masked value and saving it keeps the real number; typing a new full number replaces it; short or non-alphanumeric input -> 'Enter the card number.' |
| Limits flag, not block | Card monthly limit 2,000, per fill 300; fills 280, 290 then 320 | Log the three fills with that card (Operations > Fuel) | The 320 fill is flagged over card limit (320 > 300 per fill); a fill that takes the month over 2,000 is flagged too; fills are still saved and wait for review |
Toll & Parking
| Action | When | What you do | What happens |
|---|---|---|---|
| Low balance alert | Salik account balance 40, Warn below 50 | Run the daily scan | A low-balance alert 'Balance 40' is raised; top up to 60 and no new alert |
Alert Rules
| Action | When | What you do | What happens |
|---|---|---|---|
| Rule changes who is told | Rule 'Insurance expiring' days 120 90 60 30 15 7 0 | Change days to 45, 15, 0 and untick Everyone in Fleet, tick Costs; run the scan for a policy expiring in 45 days | Alert sent only to people holding fleet.cost.view (plus named users) on day 45, 15 and 0 |
Approval Rules
| Action | When | What you do | What happens |
|---|---|---|---|
| Expense limit moved | Default rule: expense from 2,000 | Change From amount to 500; then untick Active | Expense of 600 now waits for approval; with the rule inactive no expense needs approval; the approver must hold the permission chosen in 'Approved by' |
Country Profiles
| Action | When | What you do | What happens |
|---|---|---|---|
| One per country | UAE profile exists | Add 'ae' again | Code saved as AE; second profile refused by the database (unique per company) |
Other Lists
| Action | When | What you do | What happens |
|---|---|---|---|
| Hard delete of small lists | Violation type 'speeding' used by fines | Delete it | Deleted outright (no in-use check); fines keep the old code text |
Fleet Settings
| Action | When | What you do | What happens |
|---|---|---|---|
| Save and validation | User with fleet.configure | Set service soon km 25000, alert days 'ninety', working hours 0; Save; then set valid values and Save | Each invalid value refused with its message ('Between 0 and 20000.', 'Alert days are whole numbers, e.g. 120, 90, 60, 30, 15, 7, 0.', 'Between 1 and 24.'); valid values save, 'Saved.' shows, audit entry fleet.settings written |
| Posting accounts | Posting ON | Enter account 99999 for Fuel; then enter 5410 which exists; clear Cleaning | 'Account 99999 is not in the chart.'; 5410 saves; blank Cleaning falls back to a chart account named 'cleaning', else the expense role |
| Settings take effect | Settings changed: due soon 1,000 km, fuel anomaly 10%, max daily km 400, hours 8 | Check Preventive Maintenance, log a fill 12% above normal, record a 500 km odometer day | Plans without own warning use 1,000 km; 12% fill flagged high consumption (10% limit); 500 km a day flagged unusual; utilization uses 8 working hours |
| Permission | User with fleet.view only | Open Fleet Settings; Save | Page opens read-only in effect; Save refused (fleet.configure needed). The same user also sees New / Delete on lists but the server refuses them |
Telematics Providers
| Action | When | What you do | What happens |
|---|---|---|---|
| Pointer page | User with fleet.configure | Open Configuration > Telematics Providers; click Open GPS / Telematics | Text and a button; GPS / Telematics screen opens |
Feature switches
| Action | When | What you do | What happens |
|---|---|---|---|
| Turn Leases off | Company administrator; Leases switch | Turn Leases off; open Costs; try to save a lease through the API; turn back on | Lease Costs menu disappears; saving or ending a lease is refused with capability_disabled; existing leases and charges stay readable; on again restores everything |
| Fines, accidents and claims off | Switch off | Open Reports and Compliance menus | Accidents and Fines report entries and the three Compliance entries disappear; Driver report counts of earlier fines still show |
| Field rules | Set VIN Required and Police report number Hidden | Save a vehicle without VIN; report an accident with a police report number | Vehicle not saved without VIN; value for a hidden field sent on a new accident is refused |