Search for a preventive maintenance schedule template and you get a thousand download pages, almost all of them gated behind a form, and almost all of them useless: a grid of empty cells with month headings and no explanation of what belongs in a row, what the columns are for, or how the thing survives contact with a real maintenance team. After twenty-two years of building and rescuing PM programs inside CMMS, CAFM and EAM systems, I can tell you that the format is the easy part. What separates a schedule that runs a site from a spreadsheet that gets abandoned in April is the discipline encoded in the columns. So this article gives you the templates as real tables you can copy, and next to every column an explanation of what it is for and the specific mistake I see teams make with it.
The message up front: a PM program needs six artefacts, not one. An asset register (what you own), a job plan library (what gets done), an annual master schedule (when, across the year), a weekly work plan (who, this week), a compliance tracker (what you must prove), and a maintenance log (what actually happened). Most teams build only the annual schedule, which is why their program looks organised on paper and falls apart in execution. Build all six, even if they start as six tabs in one workbook.
1. The six artefacts, and why one spreadsheet is not enough
The single most common structural mistake in a young PM program is trying to make one sheet do every job. Someone builds a big grid with assets down the side and months across the top, ticks the cells where work is due, and calls it the maintenance schedule. It looks like control. It is actually a plan with no execution layer, no task detail, no evidence trail and no history, which means it can tell you what should have happened but never what did.
The six artefacts split along two axes: static reference data versus time-based planning, and plan versus record. Keeping them separate is what lets each one stay simple.
| Artefact | Answers | Changes | Owner |
|---|---|---|---|
| Asset register | What do we own, where is it, how critical is it? | Rarely (on acquisition or disposal) | Asset / engineering lead |
| PM job plan library | What exactly gets done on this asset class, and how long does it take? | Rarely (on review or standard change) | Maintenance engineer |
| Annual master schedule | In which week or month is each PM due across the year? | Annually, with mid-year adjustment | Planner |
| Weekly PM work plan | Who is doing what, this week, with what access and parts? | Weekly | Planner / supervisor |
| Compliance tracker | What statutory or contractual obligation is due, and can we prove it was met? | Continuously | QHSE / contract manager |
| Maintenance log | What actually happened, when, by whom, at what cost? | Daily | Technicians, verified by supervisor |
A note on scope before we start: this article gives you the planning and tracking artefacts. It deliberately does not give you the inspection checklists themselves, the line-by-line task lists for an air handling unit, a distribution panel, a pump set or a generator. Those live in a companion piece, preventive maintenance checklists, templates and examples. Use that article to fill the task detail, and this one to schedule, assign and prove it. If you are earlier in the journey and still deciding what your PM program should cover at all, start with the complete guide to preventive maintenance.
2. Template 1: the asset register (minimum viable columns)
Everything else depends on this. You cannot schedule maintenance on an asset you have not identified, and you cannot prioritise it without knowing what it serves. The failure mode here is almost always the same: someone starts with sixty columns because the CMMS data template has sixty columns, the population effort collapses under its own weight, and eighteen months later the register is forty percent complete and nobody trusts it. Start with the twelve columns below. They are enough to run a PM program. You can add depth later, on assets that earn it.
| Column | Example | What it is for | The mistake people make |
|---|---|---|---|
| Asset ID | AHU-B2-L03-01 | The permanent unique key. Every work order, log entry and cost posting points here. | Encoding location into the ID, then re-tagging every asset when the building is renumbered. Keep the ID meaningless and stable; put location in its own field. |
| Asset name | AHU 01, Level 3 East | The human label a technician recognises on site. | Naming it differently in the register, on the physical label and in the BMS. Pick one name and reconcile all three. |
| Asset class | Air Handling Unit | The join key to the job plan library. All AHUs inherit the AHU job plans. | Free text, so you end up with AHU, A.H.U., Air Handler and AirHandlingUnit as four classes. Use a closed list. |
| Parent / system | HVAC > Chilled Water > AHU | Rolls cost and downtime up to a system level, and tells you what fails with what. | Building a hierarchy ten levels deep because the software allows it. Three to five levels is almost always right. |
| Location | Tower B / Level 3 / Plant Room 3B | Drives travel time, access permits and route-based scheduling. | Storing it as one text blob, so you cannot filter by building or floor. |
| Manufacturer & model | Carrier / 39CQ-14 | Finds the OEM manual, the spare part numbers and the warranty terms. | Leaving it blank on legacy assets and never going back. Capture it opportunistically on the next PM visit. |
| Serial number | 2118-44029 | Warranty claims, recall notices, and proving which physical unit was serviced. | Recording the model number here because the nameplate was unreadable. |
| Capacity / rating | 12,000 CFM | Sizing spares, judging load, and comparing like assets. | Mixing units within the column (CFM, litres per second, kW) so it cannot be sorted or compared. |
| Install / commission date | 2019-06-14 | Age-based planning, warranty windows, lifecycle and replacement forecasting. | Using the purchase date, the delivery date and the handover date interchangeably across the register. |
| Criticality | A (critical) | The single most useful field on the sheet. Decides PM frequency, response target and spares policy. | Assigning it by gut feel, so eighty percent of assets end up critical. Score it against defined consequence criteria. |
| Status | In service | Keeps decommissioned assets from generating PM work orders forever. | Deleting disposed assets instead of marking them retired, which destroys the cost history. |
| PM plan reference | JP-AHU-M01, JP-AHU-Q01, JP-AHU-A01 | Links the asset to the job plans that generate its schedule. | Writing task detail in this cell instead of referencing a job plan, so the same task text is duplicated across 400 rows. |
The one column that earns its keep
If you populate only one judgement field, make it criticality. It is the field that lets you defend a frequency decision, justify a spare on the shelf and decide what gets attention when the week goes wrong. A register with clean criticality and gaps elsewhere is more useful than a complete register with criticality left blank. The scoring method is in the asset criticality classification guide, and the hierarchy conventions in asset hierarchy design.
3. Template 2: the PM job plan (task template)
A job plan is the reusable definition of one PM task set, written once per asset class and frequency, then attached to every asset in that class. It is the artefact that stops your schedule from becoming a list of vague instructions like "service AHU". Two headers and a task table are all it needs.
| Header field | Example | What it is for & the mistake |
|---|---|---|
| Job plan ID | JP-AHU-Q01 | Stable reference used by the schedule and the work order. Mistake: renumbering on revision instead of versioning. |
| Title | AHU quarterly service | What appears on the work order. Mistake: a title so generic that two different plans look identical in a list. |
| Asset class | Air Handling Unit | Controls which assets inherit it. Mistake: writing a plan for one asset when the class would do. |
| Frequency | Quarterly (91 days) | Drives generation. Mistake: leaving "quarterly" undefined, so it drifts between calendar quarter and 90-day cycle. |
| Basis | Calendar | Calendar, runtime hours, cycles or condition. Mistake: calling everything calendar-based because that is what the tool defaults to. |
| Trade / skill | HVAC technician | Feeds resource planning. Mistake: assigning to a named individual, which breaks the moment they leave. |
| Estimated duration | 2.5 hours (2 persons) | The number that makes weekly capacity planning possible. Mistake: never updating the estimate from actuals. |
| Access / permit | Roof access permit, LOTO required | Warns the planner what has to be arranged in advance. Mistake: discovering the permit requirement on the morning of the job. |
| Shutdown required | Yes, 1 hour, off-peak only | Decides whether this can be scheduled in a normal week at all. |
| Parts / consumables | Filter set G4 x 8, belt A-52 x 2 | Lets you stage material before the visit. Mistake: no part numbers, so stores guesses. |
| Standard reference | SFG20 ref, OEM manual section | Defends the task content in an audit. Mistake: no traceability, so nobody can say why the task exists. |
| Revision / date / author | Rev 3, 2026-02-11, M. Abbas | Change control. Mistake: silent edits, so two sites run different versions of the same plan. |
The task rows themselves follow a five-column pattern. The reading and limit columns are what turn an inspection from a tick-box exercise into data you can trend.
| # | Task | Method | Reading / result | Acceptance limit | Action if out |
|---|---|---|---|---|---|
| 1 | Record supply air temperature | Calibrated probe at supply duct | _____ deg C | 12 to 16 deg C | Raise corrective WO, notify engineer |
| 2 | Measure filter differential pressure | Manometer across filter bank | _____ Pa | Below 250 Pa | Replace filter set this visit |
| 3 | Check drive belt tension and wear | Visual and deflection check | Pass / Fail | No cracking, deflection within OEM spec | Replace belt set, record part used |
| 4 | Record motor running current, each phase | Clamp meter | L1 ___ L2 ___ L3 ___ A | Within 90 to 105 pct of nameplate, imbalance under 5 pct | Electrical investigation WO |
| 5 | Confirm drain pan clear and trap primed | Visual | Pass / Fail | Free draining, no standing water | Clear on site, note in log |
Where job plan templates go wrong
Two failure modes, both common. The first is the copied OEM manual: someone pastes forty tasks from the manufacturer's recommended service into a quarterly plan, the technician cannot complete it in the time allowed, and the habit of partial completion sets in. The second is the pass/fail-only plan: every task is a tick box, so after three years of compliant PMs you have no trend data at all and cannot tell whether anything is degrading. Aim for plans that fit the time allowed and capture at least a few real numbers.
4. Template 3: the annual PM master schedule
This is the artefact people mean when they ask for a preventive maintenance schedule template. Its job is to answer one question: across the next twelve months, in which period is each PM due, and is the resulting workload evenly spread? One row per asset and job plan combination, with period columns across.
I strongly prefer week numbers to months. Months hide the problem: "March" can mean a comfortable spread or forty jobs all landing in the last three days. Weeks force the levelling conversation.
| Asset ID | Asset name | Crit | Job plan | Freq | Hrs | Trade | W01 | W02 | W03 | ... | W52 | Annual hrs |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| AHU-B2-L03-01 | AHU 01 L3 East | A | JP-AHU-M01 | Monthly | 1.0 | HVAC | X | ... | 12.0 | |||
| AHU-B2-L03-01 | AHU 01 L3 East | A | JP-AHU-Q01 | Quarterly | 2.5 | HVAC | X | ... | 10.0 | |||
| AHU-B2-L03-01 | AHU 01 L3 East | A | JP-AHU-A01 | Annual | 6.0 | HVAC | ... | 6.0 | ||||
| CHW-PMP-B2-02 | CHW Pump 02 | A | JP-PMP-M01 | Monthly | 0.75 | Mechanical | X | ... | 9.0 | |||
| GEN-B2-01 | Standby generator | A | JP-GEN-W01 | Weekly | 0.5 | Electrical | X | X | X | ... | X | 26.0 |
| LV-PNL-B2-DB07 | Distribution board 07 | B | JP-PNL-A01 | Annual | 3.0 | Electrical | ... | 3.0 | ||||
| Weekly load (hours) | 1.5 | 1.25 | 3.0 | ... | 0.5 | Total | ||||||
| Capacity (hours) | 120 | 120 | 120 | ... | 96 | |||||||
The two summary rows at the bottom are the whole point of the template. Without them you have a calendar. With them you have a capacity plan, and you can see before the year starts which weeks are overloaded.
| Column | What it is for | The mistake people make |
|---|---|---|
| Asset ID and name | Ties the schedule line back to the register. | Typing asset names in freehand instead of referencing the register, so the two drift apart within a quarter. |
| Criticality | Lets you sort and decide what survives when a week gets cut. | Leaving it off, so every deferral decision becomes an argument. |
| Job plan reference | Keeps one row per plan, so a monthly and an annual PM on the same asset are separately visible and separately measurable. | One row per asset with mixed frequencies crammed into it. You lose the ability to count compliance per plan. |
| Frequency | Used to regenerate next year's grid mechanically instead of by hand. | Hand-ticking the cells, so nobody can rebuild the schedule when the planner leaves. |
| Estimated hours | The multiplier that turns tick marks into a workload. | Omitting it entirely. A schedule without hours cannot be levelled and is the single biggest reason annual plans fail. |
| Trade | Lets you level per discipline, because an HVAC surplus does not help an overloaded electrical week. | Levelling on total hours only, then discovering the electricians are booked solid in weeks 20 to 24. |
| Week columns (W01 to W52) | The due periods. One mark per occurrence. | Putting everything in week 1 of each month, which creates four spike weeks and 48 quiet ones. |
| Annual hours per row | Shows which assets consume the most planned effort, which is the input to any PM optimisation review. | Never looking at it, and so never noticing that ten percent of assets consume half the PM labour. |
| Weekly load row | Sum of hours falling in each week. | Not comparing it to capacity, which makes the number decorative. |
| Capacity row | Available technician hours, net of leave, holidays and an allowance for reactive work. | Using gross headcount hours. If you plan to 100 percent of capacity, the first breakdown destroys the week. Plan PM to roughly 60 to 70 percent and leave the rest for corrective and emergency work. |
The levelling pass nobody does
Build the grid, sum the weekly hours, then shift start weeks until no week exceeds your planned PM capacity. Anchor the immovable items first: statutory tests, seasonal work such as pre-summer chiller preparation, and anything tied to a shutdown window. Then slide the flexible monthly and quarterly work into the gaps. This one pass, which takes a planner perhaps a day for a mid-sized site, prevents most of the chronic backlog that PM programs accumulate. The wider method is in how to build a preventive maintenance schedule.
5. Template 4: the weekly PM work plan
The annual schedule says what is due. The weekly plan makes it happen. This is the artefact most missing from the templates you find online, and the reason so many annual schedules produce a growing backlog instead of completed work. It converts due dates into assignments, with the access, parts and permits resolved in advance.
The rule I would give any planner: the weekly plan for next week should be finalised and issued before the end of this week, with every row either ready to execute or explicitly flagged as blocked. A plan issued on Monday morning is not a plan, it is a list of surprises.
| WO no | Day | Asset ID | Job plan | Crit | Est hrs | Assigned to | Access / permit | Parts staged | Ready | Status |
|---|---|---|---|---|---|---|---|---|---|---|
| WO-48211 | Mon | GEN-B2-01 | JP-GEN-W01 | A | 0.5 | R. Nair | None | n/a | Yes | Complete |
| WO-48212 | Mon | AHU-B2-L03-01 | JP-AHU-M01 | A | 1.0 | S. Kumar | Plant room key | Yes | Yes | Complete |
| WO-48219 | Tue | CHW-PMP-B2-02 | JP-PMP-M01 | A | 0.75 | S. Kumar | LOTO | Yes | Yes | In progress |
| WO-48224 | Wed | LV-PNL-B2-DB07 | JP-PNL-A01 | B | 3.0 | A. Haddad | Permit HV-0412, shutdown 14:00 to 17:00 | Yes | Yes | Scheduled |
| WO-48230 | Thu | FCU-B1-L07-14 | JP-FCU-Q01 | C | 0.75 | Unassigned | Tenant access needed | Yes | No | Blocked: tenant approval |
| WO-48233 | Fri | FIRE-PMP-01 | JP-FPMP-M01 | A | 1.5 | R. Nair | Notify fire alarm panel watch | Yes | Yes | Scheduled |
| Planned PM hours | 7.5 | Capacity this week 120 hrs · PM 42 hrs planned · 35 pct PM, 65 pct corrective and reactive | ||||||||
| Column | What it is for | The mistake people make |
|---|---|---|
| WO number | The handle everything else hangs off: labour booking, parts issue, completion record. | Running the weekly plan without work order numbers, so completion is recorded nowhere and the log never gets written. |
| Day | Day-level sequencing so travel and access can be grouped sensibly. | Leaving the whole week unsequenced, which produces four separate trips to the same roof plant room. |
| Assigned to | Named accountability. Unassigned rows are the ones that do not happen. | Assigning to a team rather than a person. Shared ownership on a PM row means nobody owns it. |
| Access / permit | Surfaces the dependency that most often causes a same-day abort. | Treating permits as an execution-day problem rather than a planning-day one. |
| Parts staged | Confirms the material is physically at hand, not merely in stock somewhere. | Marking yes based on a stock report rather than a picked and staged kit. |
| Ready flag | A single yes/no gate. Only ready work should be issued to a technician. | Issuing unready work, which trains the team to treat the plan as optional. |
| Status and blocked reason | Makes the deferral visible and gives you the data to fix recurring blockers. | Silently rolling blocked work to next week. Three rolls and it is invisible backlog. |
| PM versus reactive split | The health indicator for the whole programme. | Not tracking it, so the drift back into firefighting is only noticed a year later. |
Note that this template assumes you distinguish PM work orders from corrective, emergency and project work. If your numbering does not separate those, the whole measurement layer collapses, because you cannot compute a PM compliance figure or a planned-versus-reactive ratio. The conventions are in work order types in a CMMS.
6. Template 5: the PM compliance tracker
Compliance tracking is a different question from scheduling, and conflating the two is a common and expensive mistake. The schedule asks "when is it due". The tracker asks "can we prove, to an auditor or a client, that the obligation was met within its window, and where is the evidence". Statutory and contractual items belong here even if they also appear on the annual schedule.
| Obligation | Asset / scope | Driver | Freq | Window | Last done | Next due | Owner | Evidence ref | Status |
|---|---|---|---|---|---|---|---|---|---|
| Fire pump flow test | FIRE-PMP-01 | Statutory / authority | Annual | +/- 30 days | 2025-11-08 | 2026-11-08 | QHSE | CERT-FP-2025-11 | Compliant |
| Lift thorough examination | LIFT-B2-01 to 06 | Statutory | 6 monthly | +/- 14 days | 2026-04-02 | 2026-10-02 | Lift contractor | LE-2026-04-02 | Due in 8 days |
| Thermographic survey, main LV | LV-SWB-B2-MAIN | Insurer requirement | Annual | +/- 30 days | 2025-09-19 | 2026-09-19 | Electrical engineer | IR-2025-09 | Overdue 5 days |
| Water system risk assessment review | Domestic water, all | Statutory / health | 2 yearly | +/- 60 days | 2025-03-11 | 2027-03-11 | QHSE | WRA-2025-03 | Compliant |
| Generator load bank test | GEN-B2-01 | Contractual SLA | Annual | +/- 30 days | 2026-02-21 | 2027-02-21 | Maintenance manager | LBT-2026-02 | Compliant |
| Emergency lighting 3 hour test | All EM fittings | Statutory | Annual | +/- 14 days | 2025-10-04 | 2026-10-04 | Electrical supervisor | EL-2025-10 | Due in 10 days |
| Column | What it is for | The mistake people make |
|---|---|---|
| Driver | Separates statutory obligations from contractual promises and internal good practice. Different consequences, different escalation. | Treating all three as equal, so a genuinely statutory item gets deferred alongside a nice-to-have. |
| Window / tolerance | States how much slip is acceptable before the item is non-compliant rather than merely late. | No defined tolerance, so "a bit late" is negotiated case by case and eventually means months. |
| Last done and next due | Next due should be calculated from last done, not from a fixed annual calendar, or the interval silently stretches. | Anchoring to the original calendar date after a late completion, which compounds the drift year on year. |
| Owner | A named person or party accountable for the obligation, not for the task. | Naming the contractor who does the work rather than the person responsible for making sure it happens. |
| Evidence reference | Points to the certificate, report or signed record. This is what an audit actually asks for. | Recording completion with no evidence link. A tick in a tracker proves nothing on its own. |
| Status | Traffic-light view for the monthly review. Compliant, due soon, overdue, non-compliant. | Calculating it by hand, so it is stale the day after the review. |
Two external references worth anchoring your obligation list against: the SFG20 building maintenance standard for building services task content and frequencies, and ISO 55001 for asset management systems if you are working towards a formal management system. For fire and life safety items in particular, the relevant NFPA codes set inspection, testing and maintenance frequencies that your local authority will usually reference directly. Always confirm against the local jurisdiction's requirements, which in the Gulf region frequently sit on top of the international code rather than replacing it.
7. Template 6: the maintenance log and history record
The log is the artefact that makes everything else improvable. Without a maintenance history you can schedule, assign and complete work forever without ever learning anything from it. With one, you can see which assets consume the most labour, which PM tasks never find anything, and which failures keep coming back.
| Date | WO no | Type | Asset ID | Job plan | Technician | Est hrs | Actual hrs | Findings | Parts used | Follow-up WO | Downtime | Verified by |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-09-07 | WO-48212 | PM | AHU-B2-L03-01 | JP-AHU-M01 | S. Kumar | 1.0 | 1.25 | Filter dP 210 Pa, within limit. Belt showing early cracking. | None | WO-48260 (belt set) | 0 | M. Ali |
| 2026-09-08 | WO-48219 | PM | CHW-PMP-B2-02 | JP-PMP-M01 | S. Kumar | 0.75 | 0.75 | Gland seepage within tolerance, vibration normal. | None | None | 0.5 | M. Ali |
| 2026-09-09 | WO-48241 | Corrective | CHW-PMP-B2-02 | n/a | R. Nair | 2.0 | 3.5 | Mechanical seal failed. Seal face scored, flush line partially blocked. | Seal kit 65-MS-02 x1 | WO-48258 (flush line review) | 4.0 | M. Ali |
| 2026-09-10 | WO-48224 | PM | LV-PNL-B2-DB07 | JP-PNL-A01 | A. Haddad | 3.0 | 2.75 | Torque check complete, 2 terminals re-tightened. IR scan clear. | None | None | 3.0 planned | M. Ali |
| 2026-09-11 | WO-48233 | PM | FIRE-PMP-01 | JP-FPMP-M01 | R. Nair | 1.5 | 1.5 | Churn test pass, 8.2 bar. Jockey pump cut-in normal. | None | None | 0 | QHSE |
| Column | What it is for | The mistake people make |
|---|---|---|
| Type | PM, corrective, emergency or project. The basis of every ratio you will ever report. | Logging everything as "maintenance", which makes the history unanalysable. |
| Estimated versus actual hours | Feeds back into the job plan estimate and therefore into next year's capacity plan. | Recording only actuals, so the estimates never improve and the annual plan stays fictional. |
| Findings | The real value of the log. Specific, with readings where they exist. | Writing "done", "OK" or "carried out as per checklist". A year of that is a year of nothing. |
| Parts used | Consumption history for stock levels, and cost attribution to the asset. | Describing parts in words instead of part numbers, so consumption cannot be aggregated. |
| Follow-up WO | Closes the loop between an inspection finding and the corrective action it triggers. | Noting a defect in the findings field and raising nothing. This is the most common single failure in PM execution: the inspection works, the follow-up never happens. |
| Downtime | Planned and unplanned outage duration, the input to availability reporting. | Capturing it only for major events, which makes availability figures meaningless. |
| Verified by | A second signature on safety-critical and statutory work. | Self-verification on everything, which removes the only quality check in the process. |
8. What to measure from these templates
Six artefacts built properly give you five measures almost for free. Report these monthly and you will know whether the program is working, which is more than most sites can say.
| Measure | Calculation | Source template | What it tells you |
|---|---|---|---|
| PM compliance | PMs completed within window / PMs due, as a percentage | Annual schedule + log | Whether the plan is actually being executed. Count only work completed inside its tolerance window, or the figure flatters you. |
| Schedule adherence | Work completed in the week it was planned / work planned that week | Weekly plan + log | Whether the weekly planning discipline holds. A high compliance figure with low adherence means you are catching up late every month. |
| Planned versus reactive ratio | Planned labour hours / total labour hours | Log | The maturity indicator. Rising reactive share is the earliest warning that the program is slipping. |
| Estimate accuracy | Actual hours / estimated hours by job plan | Log + job plan library | Whether your capacity plan can be trusted. Consistently above 1.2 means the annual plan is under-resourced. |
| PM yield | PMs that generated a corrective follow-up / PMs completed | Log | Whether the PMs are finding anything. A yield near zero over a year suggests over-maintenance; a very high yield suggests intervals are too long. |
PM yield is the one most people have never calculated and the one that changes the most decisions. If a quarterly task has run 400 times and never once produced a finding or a follow-up, you are paying for it with nothing to show. That is the evidence you need to extend the interval or delete the task. The broader measurement frame sits in the FM KPI framework.
9. Making these work in Excel or Sheets without it collapsing
If you are going to run this in a spreadsheet, a few mechanical decisions determine whether it survives its first year.
- One workbook, six tabs, one direction of reference. Register, JobPlans, AnnualSchedule, WeeklyPlan, Compliance, Log. References flow one way: the schedule looks up the register and the job plans, never the reverse. Circular lookups between tabs are how these files become unmaintainable.
- Asset ID as the only join key. Never join on asset name. Names get edited; IDs must not. Lock the ID column.
- Closed lists for every categorical field. Asset class, criticality, trade, work type, status. Use data validation against a hidden Lists tab. This single step prevents most of the data quality problems that make the file unreportable later.
- Dates as real dates, in ISO format. Store 2026-09-24, not 24/09/26. Mixed regional date formats in a shared file are a reliable source of silent error, particularly in a multinational team.
- The log is append-only. New rows at the bottom, existing rows never edited. If a correction is needed, add a row noting the correction. An editable history is not a history.
- One person owns the file. Shared editing on a planning workbook produces conflicting versions within weeks. Technicians submit completions to the owner, or via a form that appends to the log; they do not type into the workbook.
- Version the file by date, keep an archive. PM-Master-2026-W39.xlsx, with last month's copies retained. When someone asks what the plan said in March, you need to be able to answer.
What a spreadsheet genuinely cannot do
Be honest about the ceiling. A spreadsheet cannot give a technician a mobile task list in a plant room with no signal. It cannot attach a photograph to a specific task line. It cannot enforce that a work order is not closed until every reading is captured. It cannot generate the next occurrence automatically from the actual completion date. It cannot hold an audit trail of who changed what. It cannot reserve a spare part against a future job. Every one of those gaps is survivable at small scale and becomes a daily cost at scale.
10. When to graduate from spreadsheets to a CMMS
I will say something the software industry does not: a spreadsheet PM program, run with discipline, outperforms a badly implemented CMMS. I have walked into sites with a well-regarded EAM system where compliance reporting was fiction, and sites running a single careful workbook where the plant was in genuinely good condition. The tool is not the variable. Discipline is.
That said, there are real thresholds beyond which the spreadsheet stops being the constraint-free choice and starts costing you more than the software would. These are the signals I would actually use.
| Signal | Threshold where it starts to hurt | Why the spreadsheet fails here |
|---|---|---|
| Asset count | Beyond roughly 300 to 500 maintainable assets | The annual grid becomes thousands of rows. Regenerating and levelling it by hand stops being feasible in a working week. |
| Number of planners | More than 2 to 3 people editing planning data | Concurrent editing on a single workbook produces version conflicts and lost updates. No record locking, no audit trail. |
| Sites | More than one site, or one site with independent teams | You cannot maintain consistent job plans and comparable reporting across separate workbooks. Standards diverge quietly. |
| Audit and evidence requirements | Any external audit, insurer inspection or client-facing SLA reporting | No immutable completion record, no timestamped evidence trail, no defensible proof of who did what when. |
| Mobile execution | Technicians working away from a desk, which is all of them | Paper round trips mean completion data is entered days late, badly, or not at all. This is the single biggest practical driver. |
| Spares integration | When stockouts start aborting planned jobs | A spreadsheet cannot reserve stock against a future work order or trigger reorder from consumption. You are permanently reconciling two lists. |
| Condition or meter-based PM | Any runtime, cycle or sensor-triggered maintenance | Manual meter capture and manual due-date recalculation is unsustainable past a handful of assets. |
| Contract or chargeable work | When maintenance work has to be billed or reported to a client | Cost capture, rate cards and client reporting are beyond what a workbook maintains reliably. |
| Work volume | Beyond roughly 200 to 300 work orders per month | Manual log entry becomes a part-time job, and it is the first thing dropped when the team gets busy. |
A useful rule: if you can tick three or more of those rows, the spreadsheet is now costing you more in planner time and lost data than a light CMMS would cost in licence fees. If you can tick one, stay where you are and get the discipline right first, because the single best predictor of a successful CMMS implementation is having run a disciplined manual process before it.
These templates are your migration package
Here is the argument for building them properly even if you expect to buy software within the year. Every one of these six artefacts maps directly onto a CMMS data object: the register becomes the asset master, the job plan library becomes PM job plans, the annual schedule becomes PM schedules, the log becomes work order history. A clean set of spreadsheets is not wasted effort before an implementation, it is the implementation's data load, and it is the difference between a six-week configuration and a nine-month data cleanup. The traps are catalogued in CAFM data migration strategy.
On tool choice, the honest position is that the small-team end of the market is genuinely good now. MaintainX, Limble, Fiix, UpKeep and eMaint will all run a few hundred assets with mobile execution competently and at a cost that a single planner's recovered time justifies. The enterprise platforms, IBM Maximo, Hexagon EAM, Infor EAM, SAP PM and Planon, are a different proposition entirely: more capable, considerably more implementation effort, and only warranted when you have the asset base, the integration requirements and the internal ownership to sustain them. Shortlists for both ends are in best CMMS for small teams and the CMMS buyer shortlist.
11. A four-week rollout sequence
Building all six artefacts at once is how this stalls. The order below is the one I would recommend, and it produces something usable at the end of every week rather than something complete only at the end.
| Week | Build | Scope discipline | Usable output |
|---|---|---|---|
| 1 | Asset register, twelve columns | Critical and important assets only. Leave the long tail for later. | A defensible list of what you maintain, with criticality. |
| 2 | Job plan library | One plan per asset class per frequency. Ten to fifteen plans covers most buildings. | Consistent task content, with hour estimates. |
| 3 | Annual schedule and compliance tracker | Anchor statutory and seasonal items first, then level the rest against capacity. | A levelled twelve-month plan and an obligation register. |
| 4 | Weekly plan and log | Run one real week end to end, including verification and follow-up WOs. | A working execution and history loop. |
Then review at ninety days, not at twelve months. Look at estimate accuracy, PM yield and the blocked-reason column in the weekly plan. Those three tell you where the plan is wrong while there is still time to fix it. The programme-level framework for that review cycle is in preventive maintenance plans and programs.
The idea to walk away with
The template is not the program. What makes a preventive maintenance schedule work is the small number of fields that force a decision: criticality, so you know what matters; estimated hours, so you can level the load; a ready flag, so unready work is not issued; a follow-up work order reference, so findings become action; and an actual-hours field, so the plan learns from reality. Every one of those is a discipline wearing the costume of a column. A beautiful grid without them is a document. A plain grid with them is a maintenance program.
And the six artefacts are six because they answer six different questions. When a site tells me its PM program is not working, the diagnosis is usually not a bad schedule. It is a missing weekly plan, or a log that says "done", or a compliance obligation tracked nowhere. Build all six, keep each one simple, and the program holds.
Final thoughts
Copy these tables into a workbook, put your own assets in them, and resist the urge to add columns. The most common way a PM spreadsheet dies is not neglect, it is ambition: someone adds twenty fields that nobody has time to populate, the file becomes half empty, and half-empty data is data nobody trusts. Twelve register columns, a dozen job plans, a levelled annual grid, a weekly plan issued on Friday, a tracker for the obligations you must prove, and an append-only log. That is a complete preventive maintenance system, and it will run a building well.
For the inspection task content to drop into those job plans, the asset-by-asset checklists are in preventive maintenance checklists, templates and examples. And if you get to the point where the spreadsheet is genuinely the constraint rather than the discipline, that is a good problem: it means the program is working well enough to have outgrown its tooling.
Setting up or rescuing a PM program?
Independent advisory on asset register structure, job plan libraries, schedule levelling, PM compliance reporting and the move from spreadsheets to a CMMS. 22+ years across utilities, oil and gas, manufacturing, government and facility operations. No reseller arrangements, no vendor margins.
Book a conversationRelated reading: Preventive maintenance: the complete guide, PM checklists, templates and examples, How to build a PM schedule, Asset criticality classification, Work order types in a CMMS, Best CMMS for small teams.
Muhammad Abbas
CMMS / CAFM Manager & Independent Advisor · 22+ years across enterprise CMMS, EAM, CAFM and ERP implementations in utilities, oil and gas, manufacturing, government and facility operations.
Work with me