When a 3CX update broke the legacy call-data export, I designed a new CDR extraction method that pulls call records directly from the 3CX Postgres backend — restoring reporting continuity and preserving the historical call datasets.
An Update That Broke the Reporting
A 3CX update silently broke the legacy CDR export path — and with it, every downstream report and analytics tool that depended on call data. The fix had to bypass the broken export entirely and pull the records straight from the source.
What I Delivered

Direct Postgres extraction
Pulled call-detail records straight from the 3CX Postgres backend.

Restored reporting continuity
Brought downstream reports back online after the export broke.

Preserved historical data
Kept the full historical call datasets intact through the transition.

More reliable analytics
Made the CDR feed more robust for every downstream analytics tool.
Skills & Tools
The stack behind this build — tap any to see related work.
The Impact
A resilient CDR pipeline pulling directly from 3CX’s Postgres backend — reporting restored, historical call data preserved, and downstream analytics more reliable than before the update broke them.
Go to the Source
When the convenient export breaks, the database underneath it doesn’t. Extracting CDRs straight from Postgres didn’t just restore reporting — it made the whole pipeline harder to break next time.
Image credits: “Racks Amravati Data Center” by PiDatacenters (CC BY-SA 4.0)


