Custom ERP vs Off-the-Shelf ERP: How to Decide
When custom ERP development makes sense, when off-the-shelf ERP is the better choice, and why a hybrid — standard core plus custom domain app — is often the answer.
Service · Engineering
Overview
Our developers specialise in ERP platforms. They understand double-entry accounting, stock moves and costing, and they write code that respects the platform's data model, access controls and upgrade path.
01The problem
Modules written quickly by different contractors, never tested beyond the happy path, breaking whenever data looks unusual.
Code that worked with a thousand records times out with a million, because it loops instead of batching.
No staging environment, no version control, and no way to roll back when something breaks.
The same pricing or allocation rule implemented separately in the ERP, the web shop and a spreadsheet — and disagreeing.
02Our approach
Every engagement starts with the repository: all custom code in Git, a staging environment that mirrors production, and a deployment process that does not involve anybody editing files on a server. That foundation alone removes a large class of incidents.
From there, we build in small, reviewable increments. Each change has a ticket explaining the business need, a pull request reviewed by a second developer, and tests that exercise realistic edge cases: partial deliveries, returns, multi-currency, multi-company, users with limited access.
03Capabilities
New business objects and workflows that integrate with standard accounting, inventory and sales.
REST endpoints, webhook receivers and connectors to third-party systems.
PDF documents, Excel exports, SQL reporting views and data feeds for BI tools.
Customer, supplier and partner portals, plus role-specific back-office interfaces.
Background processing for imports, recalculations, notifications and reconciliations.
Profiling and fixing slow screens, reports and batch jobs.
04Technical considerations
Git branches per environment, automated test runs on pull requests, and tagged releases.
Batched reads and writes, prefetching, stored computed fields where appropriate, and raw SQL only with documented reasons.
Operations that touch stock or accounting are atomic, idempotent where retried, and fully audited.
Use of public extension points and avoidance of private APIs that change between versions.
05Process
Business need, acceptance criteria and test scenarios agreed before code.
Technical approach reviewed for data model, security and upgrade impact.
Implementation in a feature branch with unit and integration tests.
Code review, automated tests and user validation on staging.
Deployment through the pipeline with release notes and rollback plan.
06Outcomes
Tested, reviewed code deployed through a controlled pipeline.
Documented, conventional code that another competent team could maintain.
Code written for realistic volumes, not just test data.
Where it applies
Related services
Insights
When custom ERP development makes sense, when off-the-shelf ERP is the better choice, and why a hybrid — standard core plus custom domain app — is often the answer.
Odoo 20 removes record rules and merges them into access rights with domains. What changed, how to migrate ir.model.access.csv and ir.rule, and what to test.
What Odoo Studio does well, where it creates trouble, and when to switch to custom module development. A practical decision guide with examples.
FAQ
Primarily Python and the Odoo framework, with TypeScript/Node.js for integration services and front-ends, and SQL for reporting. We also extract data from and integrate with other ERP platforms.
Yes. Each module has a README covering purpose, configuration and dependencies, and significant logic is documented in code. We also maintain a customization register at system level.
Yes. We begin with a code audit, set up version control and staging if they are missing, and then take on new work.
Both. Well-specified pieces of work can be fixed-price. Ongoing development and work with unclear scope is usually better on time and materials with regular reporting.
Next step
Describe the work. We will tell you how we would approach it and what it would take.