From Maintenance Records to Preventive Schedules
This product had two constants named for maintenance and, for a long time, nothing that wrote either of them. A work order writes both now. The way the gap used to hide is still worth knowing, whoever you buy from — a feature that exists as vocabulary and not as behaviour.
A maintenance module was the single most-requested thing missing from this asset register. It is here now, and the honest description is narrower than a brochure would make it: calendar schedules that open their own work orders, a work order that takes the machine out of service and puts it back, and the cost and the downtime recorded on the result.
The position, stated first
If calendar-driven preventive maintenance is why you are evaluating an asset module, this does it. If your servicing runs on engine hours, or you need spares issued from the store onto the job, that part is still to be built — and we would rather tell you that on the first page than let you find it in month four. The rest of this page is about the specific way the old gap used to hide, which is worth knowing whoever you buy from.
What a maintenance feature normally means
The phrase covers at least five different systems, and vendors rarely say which one they mean. It is worth separating them before comparing anything.
Six things called "maintenance", and which are here
| Capability | Built | Recorded | Absent |
|---|---|---|---|
| A service schedule per asset | Yes | No | No |
| A next-service-due date that alerts | Yes | No | No |
| Meter or running-hours capture | No | No | Yes |
| A work order with parts and labour | Partly — configurable by you | No | No |
| A record that the machine went away and came back | Yes | No | No |
| Downtime measured as a duration | Yes | No | No |
Built and maintained Configurable by you, not maintained by us Not built
The work-order row is "part" for one reason: labour and parts are costs you enter when the job closes, not spares issued from the store onto the job. The away-and-back row has a history, and it is the subject of the next section.
The half-row, and why it was a half
The asset movement model declares twelve actions. Two of them are sent to maintenance and returned from maintenance. For a long time the movement-action filter on two separate screens was populated straight from that list of twelve.
For most of that time nothing in the codebase wrote either value. So a user could open the movement report, select "Sent to maintenance" from a dropdown the product itself offered them, and receive an empty table — not because no machine had been serviced, but because the action could not be recorded in the first place.
A filter that can only ever return nothing is worse than a missing filter. The missing one prompts a question; the empty one answers it, wrongly.
That was corrected in two steps. First the declared actions were split from the recorded ones, so the filter offered only what the services actually wrote. Then work orders arrived, and a work order is now the only writer of the two maintenance actions: starting one that takes the asset out of service records sent to maintenance, and closing it records the return. The filter offers them again, because there is now something to find.
How it runs now, and what it costs you
-
Put a schedule on the asset
An interval in days, weeks, months or years, counted either on a fixed calendar or from the last completed service, with a lead time, an assignee and a repair vendor if the work goes out. One schedule per service promise — the quarterly service and the annual inspection are two.
-
Let the work order open itself
A daily job opens the preventive work order once the due date less the lead time arrives, and tells the assignee — or, with nobody assigned, everyone who manages maintenance. It never opens a second while one is live, and it chases an overdue work order once, the day it slips.
-
Take the machine out of service when the work starts
Starting the work order out of service writes the movement and puts the asset in maintenance status. Two jobs on one machine overlap rather than stack: it comes back only when the last one closes, and it returns to the state it was in — a laptop out with a custodian goes back to that custodian, not to the store.
-
Close it with the cost and the evidence
The resolution, the condition afterwards, labour, parts and other cost, and the service report attached. Closing a preventive work order is what moves the next due date on; cancelling one is a recorded skip with a reason, so a service nobody did is never just a gap.
That gives you the thing a maintenance module is really for: being told before the service is due rather than after. A machine that should have been serviced in June and was not is an open, overdue work order with a name on it, rather than a row that looks identical to one that was. The asset itself shows its hours out of service and its completed maintenance spend over the last twelve months. What the schedule reads is the calendar, though, not the machine — a generator that ran double shifts in June falls due on the same day as one that stood idle.
One related piece, since we are here
Document expiry reminders exist and work — a thirty-day warning, respecting notification preferences. They are filtered to two model classes: employees and employment contracts. The identical field on the identical table attached to an asset produces nothing yet, so a work permit gets a warning and a plant insurance certificate does not. That is a small change, and it is first in the build list below.
Three, and the cheapest one is the one worth doing first
This is well-understood territory. The order below is deliberate — it is ascending in cost and descending in how many businesses actually need the next step.
Expiry reminders on asset documents
The insurance certificate, the inspection certificate and the operating licence attached to a machine, warned about thirty days out the way an employee's work permit is today. The plumbing is already there, honouring the notification preferences that already exist.
Meter and running-hours capture
A reading per asset with a date, and schedules that fall due in hours or kilometres rather than months. This is what a generator, a truck or a compressor actually wears out on. It is a bigger job because it needs a capture habit as well as a table, and a meter nobody reads is worse than a calendar.
Spares issued from stock onto the work order
Parts drawn from the store against the job and valued from inventory rather than typed as a cost, with the work order's total posted to the ledger as a repairs expense against the asset. This is the right answer for a business whose equipment is its product, and we would scope it as a project and say so.
How it works: you describe the requirement, we return a written scope, timeline and cost, and once agreed it is built into your environment and maintained as part of the product. The first item above is days, not weeks — if it is what you need, say so.
Talk to us about maintenanceWhat AWRA OpsHub does today
- Preventive schedules per asset: an interval in days, weeks, months or years, on a fixed calendar or from the last completed service, with a lead time, an assignee and a repair vendor.
- A daily job that opens one work order per due schedule, tells the assignee, never opens a second while one is live, and chases each overdue work order once.
- Work orders — preventive, corrective or an inspection — from open to in progress to completed or cancelled, with labour, parts and other cost, the condition afterwards and documents attached.
- Sent-to-maintenance and returned-from-maintenance movements written by the work order, with overlapping jobs holding the machine until the last one closes and the prior status restored on return.
- Downtime as a measured quantity: hours out of service per work order and per asset, with overlapping jobs counted once, beside completed maintenance spend.
- Locations, and document storage against an asset, so service reports and certificates are retrievable.
- A movement filter that offers only actions something can actually write.
- All of it on the web and through the API.
More we can add to your workspace
- Meter, odometer or running-hours capture, and schedules that fall due on usage.
- Spare parts issued from stock against a work order and valued from inventory.
- Maintenance cost posted to the ledger as a repairs expense against the asset.
- An availability or utilisation percentage per asset, computed from the measured downtime.
- Calibration records and calibration due dates.
- Expiry reminders on documents attached to an asset.
- Maintenance screens in the mobile app.
Where we point you to a specialist
- An older hardware model in this codebase carries last-maintenance and next-maintenance date fields with no controller, route or reader behind them. The work orders do not use it, and nothing reads it.
- Service-schedule claims were, before schedules existed, the widest single copy defect in this corpus — about thirty assertions across fifteen files, all corrected at the time. Schedules are real now and this page was rewritten when they arrived. If you find a claim that runs ahead of the list above, it is a bug and we want to know.
- This is market-neutral. Cairo is here as a market where plant runs hard, spares travel, and an unplanned stoppage costs more than the service would have.
Four questions that separate a maintenance module from a maintenance label
Show me an asset with a service due next month.
A good answer sounds like
They filter a list and it has rows.
What it actually means
This is the whole test. A demonstration that navigates to a blank form instead is showing you a field, not a feature.
What writes the maintenance record — a person, or a schedule?
A good answer sounds like
A schedule creates it, a person closes it.
What it actually means
If a person creates it, the system is a filing cabinet for work already decided elsewhere.
Can an interval be expressed in hours rather than months?
A good answer sounds like
Yes, with a meter reading.
What it actually means
Calendar-only intervals fit inspections and certificates well and generators, vehicles and pumps less well. Ask which yours are.
What is the total repair cost of this asset to date?
A good answer sounds like
A number, from work orders.
What it actually means
Without work orders there is no such number anywhere, and replace-or-repair stays a matter of opinion.
Ask the dropdown question
In any demonstration, pick a filter the vendor offers you and ask them to run it against real data. An option that returns nothing on every dataset is a feature that exists as vocabulary. We had one, on two screens, and this is the page that came out of fixing it.
Talk about asset operationsFrequently asked questions
Can I record that a machine is being serviced?
Yes, as a work order on the asset. Start it out of service and the asset moves to maintenance status with a sent-to-maintenance movement; complete it and the return is recorded, with labour, parts and other cost. A preventive schedule opens the work order for you when the service falls due.
What happened to the two dead constants?
They are written now, and only by a work order: taking an asset out of service writes one, and the last work order holding it closing writes the other. They were never removed, because a work order was always the thing that would write them. Editing an asset still writes neither.
Does the asset register alert me about anything?
Yes, for maintenance. A due schedule opens a work order and tells the assignee, and an overdue work order is chased once. Document expiry reminders are still wired to employee documents, so extending them to certificates attached to an asset is work we can add to your workspace.