Report templates

PPM compliance report template (planned vs completed, by site)

A free PPM compliance report template that counts planned maintenance the same way every month: due, on time, late, no access and carried over, by site and asset category, with a RAG status and an exception list. Download the XLSX or see the worked example first.

By Simon DuttonLast reviewed

A PPM compliance report answers one question for each site on a contract: of the planned maintenance that fell due this period, how much was done on time, and what happened to the rest? Most arguments about the number come from people counting different things, so this template pins down five outcome definitions first, then rolls them up by site and by asset category, with a RAG status and an exception list underneath.

You can download the PPM compliance report template (XLSX). It opens with fictional sample rows already in place, so you can see every formula working before you paste in your own export.

What the report has to show

A client or compliance lead reading the report wants three things, in this order:

  1. Is anything statutory outstanding? One open fire alarm or emergency lighting task matters more than ten late filter changes.
  2. Which sites are slipping? A single percentage for the whole portfolio hides the one depot where access keeps failing.
  3. What is being done about each miss? Every task that was not completed on time needs a line, a reason and a date.

So the layout is fixed: a by-site summary with RAG, the same summary by asset category, then the exceptions. The headline percentage sits at the top but never on its own.

Five outcomes for every task due in the period

Every task instance with a due date inside the reporting period gets exactly one outcome. If a task can land in two buckets, your compliance percentage will drift depending on who ran the report.

Outcome Rule Counts as compliant?
Due in period Due date is between period start and period end The denominator
On time Completed on or before the due date plus any agreed tolerance Yes
Late Completed, but after the due date plus tolerance No
No access Visit attempted, task not done, reason recorded Depends on the contract
Carried over Due in period and still open when the report is run No

A few decisions sit behind that table:

  • Tolerance. Some contracts allow a window either side of the due date, often wider for longer frequencies. The template uses one tolerance value in Settings. If your windows differ by frequency, set each task's due date to the end of its window in your job system and leave tolerance at zero.
  • Carried over is not the same as late. A late task was done. A carried-over task was not, and it moves onto next period's list as overdue. Report carried-in overdue work separately so it does not inflate next month's denominator.
  • No access needs evidence. If the contract lets you exclude evidenced no-access visits, you need the reason and ideally a photo or signed note against the job. Without that, treat it as a miss.

The data model

The report needs four sources. Task instances usually come from the job management system (Uptick, Joblogic or similar); the site list and contract terms often live in a CRM or a spreadsheet; the task library carries frequencies and the statutory flag.

Fields on the task row

Field Source Notes
task_id Job system One row per scheduled visit task, not per job
site_id Job system Must match the site register exactly
asset_id Job system / asset register Lets you trace repeat misses on one asset
asset_category Asset register Fire alarm, emergency lighting, water hygiene and so on
task_ref Task library Your schedule reference for the task
frequency Task library Weekly, monthly, quarterly, six-monthly, annual
statutory Task library Y or N; drives the red override
due_date Job system End of the permitted window if you use one
status Job system Completed, Open or No access
completed_date Job system Blank if not completed
no_access_reason Job system Free text or a picklist

How the sources join

From To Key What it adds
Task instances Site register site_id Site name, region, contract
Task instances Asset register asset_id Asset category, location
Task instances Task library task_ref Frequency, statutory flag
Site register Contract register contract_id Tolerance, RAG thresholds, no-access rule

Most errors in a hand-built report come from these joins: a site renamed in the CRM but not the job system, or an asset recategorised after the tasks were generated. Check unmatched keys before you trust the percentages.

Many FM businesses take task frequencies and statutory flags from SFG20, the building maintenance standard developed by BESA and published by SFG20 Ltd, which flags the tasks it treats as legally required. This template contains no SFG20 content; map your own licensed schedules into the task_ref, frequency and statutory columns.

The formulas

Measure Formula
Compliance % On time ÷ Due in period
Adjusted compliance % On time ÷ (Due in period − No access)
RAG Red if any statutory task is carried over, or adjusted % is below the amber threshold; Amber if below the green threshold; otherwise Green

In the spreadsheet each outcome is a COUNTIFS on site and outcome, so the summary updates as soon as a row changes. The sample thresholds are 95% for green and 85% for amber. Those are placeholders: use whatever your contract states.

PPM compliance report

1 Oct 2026 – 31 Oct 2026

Planned vs completed, by site

105 tasks due across 6 sites. One statutory task is still open, so the portfolio is red even though adjusted compliance is 93.1%.

Tasks due in period
105
6 sites
Compliance (on time ÷ due)
89.5%
94 on time
Adjusted (excl. no access)
93.1%
4 not accessible
Statutory carried over
1
Makes the report red

By site

PPM compliance by site, October 2026, fictional data
SiteDueOn timeLateNo accessCarried overComplianceAdjustedRAG
Halden Court Offices201910095.0%95.0%Green
Brookmere Medical Centre181611088.9%94.1%Amber
Corran Street Depot161211275.0%80.0%Red · statutory open
Ashwell Primary School191612084.2%94.1%Amber
Pellow Retail Unit 7171600194.1%94.1%Amber
Fenmoor Library1515000100.0%100.0%Green
All sites1059444389.5%93.1%Red

Compliance = on time ÷ due. Adjusted = on time ÷ (due − no access). Green ≥ 95%, amber ≥ 85% (adjusted); any statutory task carried over makes the row red.

Exceptions (11)

Every task not completed on time. Statutory first.

Exception list, fictional data
TaskSiteAssetDueOutcomeDetail
T0042Corran Street DepotEmergency lighting StatutoryS03-EL0719 OctCarried overOpen at period end
T0059Ashwell Primary SchoolEmergency lighting StatutoryS04-EL0224 OctLateCompleted 2026-10-29 (5 days late)
T0030Brookmere Medical CentreFire alarm StatutoryS02-FA064 OctNo accessKeyholder not present
T0039Corran Street DepotEmergency lighting StatutoryS03-EL086 OctNo accessRoom in use, client refused access
T0046Corran Street DepotHeating and boilers S03-HB0126 OctCarried overOpen at period end
T0082Pellow Retail Unit 7Heating and boilers S05-HB0629 OctCarried overOpen at period end
T0026Brookmere Medical CentreDoors and shutters S02-DS0614 OctLateCompleted 2026-10-19 (5 days late)
T0040Corran Street DepotHeating and boilers S03-HB0817 OctLateCompleted 2026-10-19 (2 days late)
T0013Halden Court OfficesAir conditioning S01-AC0820 OctLateCompleted 2026-10-22 (2 days late)
T0062Ashwell Primary SchoolHeating and boilers S04-HB1215 OctNo accessKeyholder not present
T0065Ashwell Primary SchoolAir conditioning S04-AC0922 OctNo accessRoom in use, client refused access
Illustrative, fictional data. Not customer results or a live product screenshot.

Worked example: October at two sites

These figures are illustrative and come from the fictional sample in the template. Period: 1 to 31 October 2026, tolerance zero days, green at 95%, amber at 85%.

Corran Street Depot had 16 tasks due.

Outcome Tasks
On time 12
Late 1
No access 1
Carried over 2
Total due 16
  • Compliance: 12 ÷ 16 = 75.0%
  • Adjusted: 12 ÷ (16 − 1) = 12 ÷ 15 = 80.0%
  • One of the two carried-over tasks is an emergency lighting test flagged statutory, so the site is red regardless. At 80.0% it would have been red on the threshold anyway.

Ashwell Primary School shows why the no-access rule matters. It had 19 tasks due: 16 on time, 1 late, 2 no access, 0 carried over.

  • Compliance: 16 ÷ 19 = 84.2%, below the 85% amber line
  • Adjusted: 16 ÷ (19 − 2) = 16 ÷ 17 = 94.1%, which is amber

Same work, two different colours, depending on a contract clause. Agree the rule with the client before the first report goes out, and show both percentages so nobody thinks you are hiding the raw figure.

Across all six sample sites, 105 tasks were due: 94 on time, 4 late, 4 no access and 3 carried over. Portfolio compliance is 94 ÷ 105 = 89.5% and adjusted compliance is 94 ÷ (105 − 4) = 94 ÷ 101 = 93.1%. The portfolio is still red, because of the open statutory task at Corran Street.

Note also Halden Court Offices: 19 of 20 on time is exactly 95.0%, which is green because the test is "at or above". Write the boundary into your definitions.

Building the exception list

The exception list is where the report earns its keep. Include every task whose outcome is anything other than on time, sorted with statutory tasks first, then carried over, late and no access. For each line give the site, asset, due date, outcome and the detail: days late, the no-access reason, or the date it is now booked for.

In the template, filter the outcome column on the Tasks sheet; statutory carried-over rows are shaded so they stand out. Keep the list short by fixing causes, not by widening tolerances.

By asset category

The by-category view often tells a different story from the by-site one. In the sample, heating and boilers has the most misses in absolute terms, while emergency lighting is the only red category because of the open statutory test. If one category is consistently late across sites, look at engineer competence mix or parts supply rather than the sites themselves.

For how this report fits alongside response times, first-time fix and the other measures in a public-sector contract pack, see FM contract KPI reporting. For the wider set of operational measures, see field service KPIs.

Automating it with IVP.ai

The spreadsheet works, but someone still exports tasks, fixes site names and rebuilds the summary every month. IVP.ai connects the job system, CRM and spreadsheets into the IVP.ai Data Layer, a governed warehouse where the joins above are defined once and checked on every load. If you run Uptick, see Uptick reporting for how its jobs and assets map in.

A national fire safety and security company used IVP.ai to bring HubSpot, Uptick and finance spreadsheets into one governed view, saving more than 10 hours a week on reporting (case study). With the data in one place, a scheduled report or agent from Deskless by IVP.ai can produce this PPM compliance report by site each month and flag statutory tasks that are carried over as soon as the period closes. See the platform or the wider field service reporting hub.

To see it on your own data, start the free 48-hour build: we connect up to three of your sources, clean the data and set one report or agent running within 48 hours of read-only access.

Questions

Frequently asked questions

How do you calculate PPM compliance?

Take every planned maintenance task whose due date falls in the reporting period, count those completed on or before the due date plus any agreed tolerance, and divide by the total due. Late completions, carried-over tasks and failed visits do not count as compliant. Some contracts allow evidenced no-access visits to be removed from the denominator, which gives an adjusted figure; show both if you use it.

Should no-access visits count against PPM compliance?

That depends on your contract, not on the template. If the client agrees that an evidenced no-access visit is outside your control, exclude it from the denominator and report it separately with the reason. If the contract is silent, treat it as a miss. Either way, record the reason and the rebooked date against the job so the exception list explains every gap.

What RAG thresholds should a PPM report use?

Use the thresholds written into your contract or service level agreement. The template ships with example values of 95% for green and 85% for amber purely so the formulas work on open; change them in the Settings sheet. Whatever percentages you use, add an override so any outstanding statutory task turns the site red regardless of its overall score.

Can I use this PPM report template in Excel and Google Sheets?

Yes. The template uses standard COUNTIFS, IF and SUM formulas, named cells for the settings and conditional formatting for the RAG column, so it works in current Excel and should open in Google Sheets or LibreOffice. Paste your task export into the Tasks sheet, columns A to K, and the by-site and by-category summaries recalculate. Delete the fictional sample rows first.

Sources

About the author

Simon Dutton

Simon has more than 10 years of experience as a data scientist, working with start-ups, SMEs, Google and the CMA.

Last reviewed 5 November 2026.

Your first report or agent in 48 hours.

Tell us which systems feed it. We connect them, clean the data and set the report running automatically. If it isn’t useful, walk away.