Export EPA Compliance Records
The records export packages every Part 84 record TuffOps holds into a single ZIP — charge events, leak-rate calcs, leak repairs, technician certs, recovery equipment, chronic leakers, and a manifest. Use it for a scheduled audit, a spot inspection, or your own quarterly review.
You drive the filter from the Charge Events ledger. Whatever you can see on screen is what lands in the ZIP.
Before you start
- You have the
compliance.viewpermission. - You know the date range or unit scope you need.
Steps
-
Open Charge Events
Select Charge Events in the top navigation bar.
-
Set the filter to match the export scope
- From / To — date range. For an annual audit, set the calendar year.
- Unit — set when scoping to a single unit. Use the unit-scoped filter pill (set automatically when arriving from a unit's compliance panel).
- Status —
All (active + voided)for an audit. Voided events are part of the audit story. - Event type and Technician — narrow further if the auditor asked for a specific subset.
-
Apply the filter to confirm scope
Select the green Filter button. Verify the on-screen result matches what you intend to export.
-
Download the ZIP
Select Download CSV records. The browser saves a ZIP file named with the filter scope (e.g.
epa-records-2026-01-01_2026-12-31.zip). -
Verify the contents
Open the ZIP. The contents are a fixed set of CSV files plus a
manifest.txt. Every CSV is always present (even when the filter produced zero rows for it — the file is still emitted with just the header row). The most commonly referenced files:charge_events.csv— every event in the filter, with active / void status and link backs to unit and work order. Includes the §84.106 Subpart C applicability snapshot per event.leak_rate_calculations.csv— every calc the events produced.leak_repairs.csv— every repair episode opened in the date range, with deadline basis and verification timeline.leak_inspections.csv— inspection records tied to each repair episode.leak_repair_extensions.csv— extensions filed under §84.106(f)(1).chronic_leakers.csv— chronic-leaker records active in the filter range.retrofit_retire_requests.csv— retrofit / retire / mothball plans.technician_certifications.csv— certs that backed the events in the filter.unit_full_charge_records.csvandunit_full_charge_revisions.csv— full-charge baselines and the revision audit trail.part84_rlca_audits.csv— every RLCA carve-out flip with actor and reason.unit_mothball_periods.csv— mothball start / end periods per unit.leak_methodology_changes.csv— (b)(3) trigger events.automatic_leak_detections.csv,ald_calibration_audits.csv,ald_leak_alerts.csv— automatic leak detection inventory and calibration / alert history.epa_notifications.csv— single-pane-of-glass inventory of every EPA-facing notification (extensions, chronic leakers, retrofit / retire, etc.).manifest.txt— the filter that produced the export, the export timestamp, the row counts per CSV, and a chain-of-custody status summary forcharge_events.csv. Save it alongside the CSVs.
What happens next
- The ZIP is generated synchronously and streamed to the browser. No record of the download is kept beyond your browser's download history.
- The CSVs are flat. Each row carries the keys needed to join back to the others (event ID, work order ID, unit ID, repair episode ID).
- The manifest is the audit anchor. Save it alongside the CSVs so you can prove later what the export included.
- The ZIP is reproducible. The same filter will produce the same data, plus any new records added after the original export — useful for verifying that nothing was deleted.
Common situations
| Situation | What to do |
|---|---|
| The auditor wants the full calendar year | Set From to Jan 1, To to Dec 31, leave Unit / Type / Technician filters empty, set Status to All. Export. |
| The auditor wants one unit's history | Open the unit's compliance panel, select View all charge events. The unit filter pre-applies. Set the date range. Export. |
| The auditor wants only the chronic leakers from last year | The chronic_leakers CSV in the standard export covers this. Use a calendar-year filter so the manifest documents the scope. |
| The auditor asks "what did this technician do?" | Set the Technician filter. The technician_certifications CSV records the certs that were attached at the time of each event in the export. |
| You need to send the records by email | Most mail systems have ZIP size limits. Split the export into quarterly date ranges if the annual file is too large. |
Troubleshooting
The download starts but never finishes.
The export is streamed; very large filter ranges can take 30+ seconds. Don't navigate away from the page. If the download hangs past 2 minutes, narrow the filter (smaller date range or single unit) and retry.
A CSV in the ZIP has only the header row.
Every CSV is always emitted, even when the filter produces zero rows for it. A header-only file means the data simply isn't there for the requested scope — broaden the date range or remove filters and re-export to confirm.
The export fails with "validation failed."
The export controller validates the same filter shape as the Charge Events index. If a query parameter is malformed (e.g. a date in the wrong format), the export refuses. Re-apply the filter from the index page and try the download again.
The CSV columns don't match what the EPA template asks for.
The export carries TuffOps' canonical fields with stable column names. EPA submission templates differ by region and program; you'll typically map the TuffOps columns into the EPA template once. The column names won't change between exports — write the mapping once and re-use it.
Related
- Review Charge Events — the page that drives the filter.
- Manage a Chronic-Leaker Classification — the §84.106(m)(4) packet for the chronic-leaker ledger.
- Compliance — EPA Part 84 — overview of the wider compliance surface.