Production Shortfall Investigation SOP
Purpose
This procedure guarantees that every "my system is not making what you promised" call ends with three things in writing: a normalized expectation number, a measured number, and a list of named causes whose attributed losses add up to the gap. Without it, the call gets answered by whoever picks up. One tech says it was a cloudy month, another sends a truck to wash the array, a third quotes the sales proposal back at the customer. All three can be wrong at once, and the shop finds out a year later when that customer files a performance warranty claim with no data behind it.
The specific failure this prevents is stopping at the first finding. A shaded corner is easy to find and rarely the whole gap, and an investigation that names one cause and closes the ticket leaves the larger cause running.
Scope
Covers grid-tied residential and small commercial PV, with or without storage, from the moment a shortfall is claimed until a named cause and a remediation work order exist. Covers module-level and string-level data sites.
Does not cover the remediation: module replacement and its evidence belong to the module damage and warranty claim SOP. Does not cover monitoring build-out or module mapping; that is the monitoring setup and customer handover SOP, and this procedure depends on it having been done. Does not cover systems not yet at permission to operate, where zero production is the expected state. Does not cover a billing complaint with normal production, which is a tariff conversation and belongs with the net metering reference material.
Roles and responsibilities
| Role | Owns | Hands off |
|---|---|---|
| Office / dispatch | Intake, claimed period, site record pull | Passes the case to the service lead with the site record attached, not a phone message |
| Service lead (remote) | Steps 2 to 6, the attribution ledger | Passes to field only with a written question the visit is meant to answer |
| Field tech | Step 7 site verification | Returns readings against the lead's question, not a general impression |
| Service lead (close) | Step 8 finding, work order, customer letter | Sends the closed record to sales so the proposal model gets calibrated |
Procedure
Step 1 - Take the claim in numbers, not adjectives, before anyone drives. Get the exact period being compared (a calendar month, a bill cycle, a season), the number it is compared against in kilowatt-hours, and whether that number came from the sales proposal, a prior year, or a neighbor. Acceptance: the intake record carries a start date, an end date, a claimed figure with units, and its source. Wrong looks like "producing way less than it should" with no period; stop and call back before opening the case, because a case built on an undefined period cannot be closed. The hazard here is commercial: promising a site visit on the call commits a truck roll before anyone knows whether the answer is in the data.
Step 2 - Build the weather-normalized expectation, and never compare against the sales proposal. A proposal is a long-run annual model, not a forecast for one month. Use the same system's prior-year same calendar month where twelve months of history exist, scaled by the ratio of this period's irradiance to the same period last year from a satellite irradiance dataset or a reference site on the same platform. Where no prior year exists, model the period in a public PV performance model using as-built tilt, azimuth and array rating. Acceptance: one expectation figure in kilowatt-hours with its basis written beside it. Wrong looks like an expectation quoted with no irradiance ratio attached; re-do the step, because an unnormalized comparison calls a dim month a defect.
Step 3 - Verify the module map against the roof before reading a single module figure. Compare the platform layout to the as-built plan and to a photograph of the array. Acceptance: platform module count equals roof module count, and at least two positions confirmed by a shade test or by matching serials on the as-built. Wrong looks like a low tile in a corner the sun never reaches on that roof, or a count off by one. Stop rule: do not diagnose off an unverified map; re-map through the monitoring SOP, then return here. The hazard is a warranty claim opened against a healthy module, which the manufacturer will reject and remember.
Step 4 - Read the distribution, not the total. Pull per-module or per-string energy over the claimed period and take the median. Flag anything at or below 85 percent of the median and record the time shape: a step change on one date reads as a fault, a daily collapse after a fixed clock hour reads as shading, a smooth seasonal drift reads as soiling or horizon. Acceptance: every flagged position carries a kilowatt-hour deficit against the median. Wrong looks like a flag with no time shape recorded; re-do, because cause and time shape are the same information. The hazard is interpretive: a weak cell drags its whole series string, so a string-only site overstates how many modules are bad and understates each one.
Step 5 - Read the inverter event log for downtime and trip codes over the same period. Count offline hours inside production hours and group them by fault code; grid over-voltage, ground fault, arc fault and over-temperature derate each have a different owner. Acceptance: total offline production hours, a code-by-code count, and the platform's own energy figure for those windows where it provides one. Wrong looks like cleared events or a logger with short retention; stop and write the retention limit into the record, because a gap in the log is a limit on the conclusion, not an absence of downtime. Hazard: a repeating over-voltage code is a live AC condition, so schedule the terminal voltage measurement in Step 7 rather than clearing the fault and leaving.
Step 6 - Reconcile the causes against the gap, and do not close until the ledger balances. Subtract each attributed loss from the gap in kilowatt-hours. Acceptance: attributed causes account for at least 80 percent of the gap, per case, over the claimed period. Wrong looks like one cause worth a fifth of the gap and a ticket marked resolved; stop and keep working, because the residual is the part that calls back. Where two causes overlap in time, count the overlap once and say which basis you used, or you will build a balanced ledger out of double counting. The hazard is reputational and expensive: a customer told the array needed washing, who then sees a small recovery, stops believing the next finding.
Step 7 - Send the truck only with a written question, and lead with the fall and electrical controls. Roof access is fall exposure: rig the fall protection system the job's plan specifies before stepping onto the roof plane, under 29 CFR 1926 Subpart M at 6 feet for construction-classified work or 29 CFR 1910.28 at 4 feet where the task is general industry maintenance, the split following the activity rather than the building. To open any enclosure, open the AC disconnect first, then the DC disconnect, then prove dead using the live-dead-live sequence at NFPA 70E-2021, 120.5, under 29 CFR 1910.333(b)(2) rather than 1910.147, which excludes electrical utilization work at its own (a)(1)(ii)(C). Modules generate whenever lit, so DC conductors upstream of the disconnect stay live in daylight, and PV connectors are generally not load-break rated, so confirm near-zero current with a clamp meter before de-mating any. Acceptance: the written question comes back answered with a reading. Wrong looks like a tech returning with "looked fine"; re-dispatch with the question restated.
Step 8 - Close in writing and send the record two places. Issue the finding to the customer with the three numbers, and open a remediation work order against each named cause. Acceptance: letter sent, work order numbers recorded, sales notified where the proposal model was part of the mismatch. Wrong looks like a verbal close; re-do in writing, because an unwritten close is the state a performance warranty claim arrives into. Hazard: naming a cause the shop owns, in writing, is a workmanship admission, so state observations and readings rather than legal conclusions, and route any question about what the record proves or concedes to your own attorney.
The record this produces
One shortfall case record on the customer's job: claim date, period start and end, the customer's figure and its source, normalized expectation with its basis line (prior-year figure, irradiance ratio, and the dataset the ratio came from), measured energy, gap in kilowatt-hours and as a percentage, an attribution ledger with one row per cause and its kilowatt-hours, the residual, the site-visit question and its answer, and the work orders opened.
Three people read it later. The next tech at that address, who needs to know what was already ruled out. The warranty desk, if the manufacturer's performance warranty is ever invoked, where the normalized basis is what makes the claim credible. And sales, because a proposal that was optimistic on shading or tilt shows up here first, and a shop that never feeds this back keeps selling the same gap.
Worked pass
A 34-module array, 400 W modules, 13.6 kW DC, module-level optimizers, in service two years. The customer reports June at 1,510 kWh against a proposal figure of 1,900 kWh.
Step 1 passes: period is June 1 to June 30, claimed figure 1,900 kWh, source is the sales proposal. Step 2 discards the proposal and builds the expectation from the site's own prior June, 1,845 kWh, scaled by the satellite irradiance ratio for that location, which came in 6 percent below the prior June. Normalized expectation is 1,845 multiplied by 0.94, or 1,734 kWh. Gap is 1,734 minus 1,510, which is 224 kWh, or 12.9 percent of the expectation.
Step 3 fails. The platform shows three low tiles in the southeast corner, but the site photograph puts the neighbor's silver maple to the northwest, and the platform count reaches 34 only after one serial is found sitting in the unassigned list. Stop rule taken: the case pauses, the map is rebuilt under the monitoring SOP, and a cover test on three positions confirms the last row had been entered right to left. On the corrected map the three low modules are in the northwest corner, where the shade is.
Step 4 resumes. Median module energy for the month is 1,510 divided by 34, or 44.4 kWh. The three northwest modules read 24.0 kWh each, so the deficit is three multiplied by 20.4, or 61 kWh. Time shape: normal until 14:20, then collapse, every clear day. That is shading, and it matches the maple.
Step 5 finds 14 grid over-voltage trips totaling 39 offline hours inside production hours, clustered between 11:00 and 15:00. The platform reports 158 kWh of expected energy for those windows from its own model.
Step 6 reconciles. Module-level figures exist only for hours the inverter was reporting, so the 61 kWh and the 158 kWh sit on different hours and do not double count; that basis goes into the ledger. Attributed total is 219 kWh against a 224 kWh gap, a residual of 5 kWh or 2.2 percent. Shading carries 61 of 224, which is 27 percent; downtime carries 158 of 224, which is 71 percent. The tree was not the finding.
Step 7 asks one question: AC voltage at the inverter terminals at full output, against the service point. The reading shows a small rise on the shop's own conductors and a supply-side voltage near the top of the utility's band, so the trips open as a utility voltage complaint, not an inverter fault. Step 8 issues the letter, a trim quote, and the utility ticket, and copies sales, whose proposal modeled no afternoon shading on that roof.
References
- NFPA 70E-2021, 120.5, for the live-dead-live sequence; 29 CFR 1910.333(b)(2) for electrical work practices, with 29 CFR 1926.417 as the construction counterpart.
- 29 CFR 1926 Subpart M and 29 CFR 1910.28 for fall protection, applied by activity classification.
- NREL PVWatts or an equivalent public PV performance model, for expectation modeling where no prior-year data exists.
- See related: the monitoring setup and customer handover SOP, the module damage and warranty claim SOP, and the "Diagnose Production Drop" how-to for symptom branching once a cause is named.