Statutory Tax Compliance, Pakistan
Odoo 18 On-Premise with FBR Tax Integration, Behind a Corporate Firewall
Challenge
The problem
A Pakistani organisation needed Odoo 18 running on their own hardware, inside their corporate network, integrated with the FBR IRIS system for statutory tax reporting. Nothing could be hosted externally, and our access had to be granted through their network team rather than assumed.
Constraints
- Everything sits behind the client's firewall on internal addressing. Our access exists only because their network team explicitly allowed it, and can be withdrawn
- Statutory tax integration is not optional and not forgiving. It either files correctly or the organisation has a compliance problem
- We do not hold administrative rights on these machines, so every change had to be achievable within the access actually granted
Approach
How we ran it
- Built staging first and proved the full module set there before production existed, so production was a known-good configuration rather than an experiment
- Production created as a validated clone with its own fresh database, not by promoting the staging box and hoping nothing staging-specific came along
- Disabled the database manager on production and moved logins to keys only. A public-facing Odoo with an open database manager is one careless request away from a bad day
- Backed up the inherited database before deleting anything, because "we do not need this" is a claim that should survive being wrong
- Documented which hardening steps still need the client's own administrative access, rather than reporting the work as finished when part of it was not ours to do
Staging first, production built and cut over separately
By the numbers
- environments, staging and production separated
- 2environments, staging and production separated
- components hosted outside the client network
- 0components hosted outside the client network
Results
What we delivered
- Odoo 18 on PostgreSQL 18 running on client-owned hardware, no external hosting
- Separate staging and production environments instead of one box doing both
- Production database manager disabled and access restricted to keys only
Tech stack
Start a similar project →Odoo 18PostgreSQL 18UbuntuPythonFBR IRIS ConnectorOn-Premise