It starts from the serial and ends with evidence, not a guess. Say the customer reports on 15 June 2028 that module SPM-2026-00001 is underperforming. Support scans the label or searches the serial and gets the linked records in one place.
| Warranty investigation | Illustrative value |
| Module serial | SPM-2026-00001 |
| Power class (nameplate) | 565 Wp |
| Flash-test reading at the factory | 570.3 W |
| Manufacturing order | MO/2026/0042 |
| Cell lot | CELL-LOT-2026-001 |
| Delivery order | WH/OUT/2026/0018 |
| Installation date | 15 January 2026 |
| Complaint date | 15 June 2028 (2.4 years in service) |
Odoo Helpdesk can log the complaint against the product and serial, and a repair order can be marked as under warranty. The decision on whether the claim is valid is where most setups go wrong.
It's a performance-warranty question, and that changes what you check. Module makers usually give two separate warranties: a product warranty covering defects in materials and workmanship, and a performance warranty that guarantees a minimum share of nameplate power for each year of service. A complaint that a module "isn't making enough power" belongs to the second.
So the check isn't just "is it still within the warranty period?" It's "is the measured output below what we guaranteed for this year?" Take an example performance clause: at least 98% of nameplate in year 1, then no more than 0.55 percentage points lost each year after that. At 2.4 years, the guaranteed minimum is 98% − (1.4 × 0.55%) ≈ 97.2% of 565 Wp, or about 549 W.
Example performance warranty curve vs field reading 100% 95% 90% 85% 80% 0 5 10 15 20 25 Years in service Guaranteed at 2.4 yrs: 97.2% (549 W) Field reading: 93.5% (528 W) Example warranty curve
Illustrative performance warranty: 98% of nameplate in year 1, then −0.55 points a year to 84.8% at year 25. Example terms only, not any manufacturer's actual policy.
If a site test, corrected to standard test conditions, shows 528 W, the module sits about 21 W under the guarantee. That's a claim worth investigating. The factory flash reading adds a second signal: the module left at 570.3 W, slightly above nameplate, so it has lost about 7.4% in 2.4 years. That's well beyond the example curve, and it points the technical team toward the module itself rather than a borderline power-class assignment.
None of this proves the cell lot caused the problem. What it does is put the factory reading, the EL results, the MO, the lot and the supplier in front of the engineer on day one, instead of week two.
You trace forwards instead of backwards. The supplier tells you CELL-LOT-2026-001 may have a defect, and you need every module built from it. Because the lot is linked to MO/2026/0042 and the MO is linked to 100 serials, Odoo's traceability report on the lot lists them all, along with where each one is now.
| Current location | Modules | Response |
| Our warehouse | 20 | Quarantine undispatched stock |
| With dealers, not installed | 30 | Notify the dealers holding these serials |
| Installed at customer sites | 50 | Identify sites from installation records and inspect |
| Total from the affected lot | 100 | Act on the known population, not all stock |
Without the link, the options are a blanket hold on every module from that month or a guess. With it, you quarantine 20, call the dealers holding 30, and send engineers to 50 known addresses. The 50 installed modules only show up here if Step 6 was done. A recall view built on the same data can show the live split by location while the response runs.
Discipline in six departments, not one software setting. Odoo can't recreate a link nobody recorded. If the cell lot isn't entered at receipt, or the MO records planned instead of actual consumption, scanning the module two years later shows a gap exactly where you needed the answer.
| Activity | What must happen | Standard Odoo or extra work? |
| Raw material receipt | Correct supplier batch and internal lot | Configuration |
| Manufacturing | Actual lot consumed, recorded on the MO | Configuration plus shop-floor habit |
| Finished production | Unique serial per module | Configuration |
| Quality inspection | One test reading per serial | Integration with testers, usually |
| Warehouse | Accurate stock moves | Configuration |
| Dispatch | Serial scanned for every unit | Configuration (Barcode) |
| Installation | Site registration against serial | Custom workflow |
| After-sales | Warranty record, claim rules, outcome | Helpdesk/Repairs plus custom logic |
Odoo gives you the structure. The receiving dock, the line operator and the dispatch team make it trustworthy.
A finished module shouldn't become anonymous the day it leaves the plant. Its serial should lead back to its cell lot, MO, test readings, dealer, install site and warranty status in one search.
Odoo Inventory, Manufacturing, Quality, Barcode and Sales cover most of that chain through configuration. The parts that need design are per-serial tester data, installation registration and warranty logic built on your actual policy. For the rest of the plant, from landed cost to power-class binning, read our Odoo ERP guide for solar module manufacturing.