What Was Running
Payments and renewals lived in Zoho Subscriptions and customers in Zoho CRM. Leads went to Mailchimp, a monthly eligibility file went to a network partner, and a provider directory was rebuilt from three source files every month. Seven Lambdas, two Deluge scripts and about 2.9 GB of CSV held it together.
One Module Instead
The five subscription rules became methods on real Odoo records, with chatter on every change. One controller replaced four deployed functions and kept the same payload shapes, so Zoho's webhooks only needed a new URL. Two nightly jobs now catch anything a missed webhook would have dropped.
The Provider Directory
Providers became records instead of rows in a 400 MB CSV. Staff can search them, group them by state, network and fee schedule, and edit them. The import wizard reads all four source formats, and the export wizard reproduces the exact split rules.
What the Test Run Showed
On a real Odoo 17 instance with the client's own files: 1,681 providers imported from 2,000 lines, with 319 duplicates skipped; a second import created nothing; 38 state files exported with the original header; and all seven webhook cases behaved, including a missing or wrong secret.
Nine Defects Found
Porting line by line found real bugs: renewals that never switched to auto-collect because of a typo, map pins with latitude and longitude swapped, webhooks anyone could call, and failures that were printed and lost. Live API keys were also committed in the old source. Each is fixed in the module or written up for the client.
A Note on the Images
The screens were redrawn from the project source code. Layouts, colours, icons and labels come from the code; names, addresses and amounts are sample data.
Moving off a pile of scripts?
Zoho, Lambda, cron jobs and CSVs that only one person understands. Baydot ports them into one system and tells you what was broken on the way.
Book a Free Call