What an Odoo implementation plan must settle before anyone quotes it
An Odoo implementation is priced from a written scope, not from a platform fee. The Community edition is free to download under the LGPL-3.0 license, but the work of deciding which applications you need, how your processes map to them, and where the system runs is what determines cost and duration. Leadership teams usually start this planning because of a trigger: spreadsheets have stopped scaling, a legacy ERP is being retired, several legal entities need one set of books, or the business is adding eCommerce or manufacturing. Each trigger changes the scope in a different way, so the first job is naming which one applies and which processes it touches.
Before anyone quotes the work, the plan should settle the edition and hosting model, because they decide what the build can use. Odoo's pricing page lists One App Free, Standard and Custom plans, and only the Custom plan can be hosted on Odoo.sh or on-premise and includes multi-company, Odoo Studio, external API access and custom modules. If you expect multi-company consolidation or custom code, confirm the plan and hosting target with Odoo and your infrastructure team in writing. Also confirm the Enterprise subscription terms if you plan to run on-premise, since the Enterprise source code is not publicly available.
Next, decide who will carry the build. Teams with strong internal Odoo skills and a small, well-defined app list often run the project in-house, using partner help only for specific gaps such as a data migration or an integration. Larger projects, multi-entity consolidations and anything involving custom Python modules usually go to a partner under a fixed-scope agreement, because the internal team must still run daily operations. Ask whether your team can absorb the process-mapping workshops, the testing effort and the training load while the business keeps running. The answer determines whether you need a quote for the full project or only for specific workstreams.
Finally, record the version and support window you will build on. Odoo 19.0 (September 2025) has standard support until September 2028, and Odoo 20.0 (September 2026) has standard support planned until September 2029. Standard support includes security updates, while Odoo SaaS versions cannot use extended support. Major upgrades are mandatory every two years on Odoo Online and Odoo.sh, so a plan that ignores the upgrade path will carry a recurring cost the quote never mentions. Ask the implementer to show how the scope will be tested against the next version, and to state who pays for that upgrade work.
What an Odoo implementation scope includes and what you receive at the end
A fixed-scope Odoo project is built from a small number of work packages, each ending in a named deliverable you keep. The cards below describe what each package usually contains, what you receive, and what to check before you sign a quote that lists them.
Process discovery and mapping
Your team and the implementer walk through how orders, purchases, stock moves, invoices and approvals really happen today, including the exceptions. The output is a set of process maps with each step tagged as standard Odoo, configuration or custom build. Check that the quote names how many processes are in scope, because the number of mapped processes is the largest single driver of configuration effort.
App selection and edition decisions
This package fixes which Odoo applications go live, such as accounting, inventory, sales, purchasing or manufacturing, and which edition and hosting model carries them. You receive a written app list with the reason for each app and the plan it requires. Ask the quote to state the apps by name, since plan limits on custom modules, Studio and external API access depend on the chosen plan.
Environment setup and hosting
The implementer sets up the production database, at least one test environment and the hosting target inside your cloud account, data center or private network. The deliverable is an environment record covering versions, server layout, backup schedule and access accounts. Confirm the number of environments in the quote, because each extra environment adds setup, duplication and maintenance work that recurs for as long as it exists.
Configuration record
Configuration covers company structure, chart of accounts, tax rules, units of measure, warehouses, approval flows, user groups and access rights, all set through Odoo settings rather than code. You receive a configuration record that lists every setting and the process it supports, so a later administrator can see why each choice was made. Anything requiring a new model, view or Python code is a custom build and should appear on its own line in the quote.
Data migration and reconciliation
This package moves master data and, where agreed, open transactions and history from the current systems into Odoo. You receive mapping sheets, cleansing rules, trial load logs and reconciliation reports showing that balances and counts match the source. Ask for the number of source systems and the agreed cut-off date in the quote, since both determine how many trial loads are needed before cutover.
Integrations and interface testing
Each connection to another system, such as a banking feed, eCommerce store, shipping provider or identity directory, is designed, built and tested. The deliverable is an interface specification covering authentication, field mapping, sync direction, error handling and duplicate prevention, plus test results from each interface. List every integration by system name in the quote, because anything unlisted becomes a change request with its own design and test effort.
Test scripts and user acceptance
Test scripts are written from the mapped processes, run first by the implementer and then by your process owners in the test environment. You receive the scripts, defect logs, sign-off records and a summary of open issues at go-live. Check whether the quote states how many test cycles are included and who performs user acceptance testing, since rework from unclear ownership is a common source of schedule slippage.
Training, runbook and go-live support
Training is delivered to named user groups using material based on your configured processes, not generic Odoo documentation. Handover includes a runbook covering backups, restores, patching, user administration and the upgrade calendar, plus a period of go-live support. Ask the quote to state the training sessions, the audience for each and the length of post-go-live support, because these items recur in cost if they are left to later change requests.
What drives Odoo implementation cost and duration up or down
This table compares the main factors that move Odoo project effort, with the reason each one matters and one practical way to keep it under control. Use it to see which decisions in your scope set the size of the quote before you ask for one. The main takeaway is that scope decisions made early, especially app count, customization depth and data scope, usually move cost more than any single technical choice.
| Driver | Why it moves effort | How to keep it down |
|---|---|---|
| Number of apps and processes in scope | Each app adds process mapping, configuration, testing and training. Cross-app flows such as sales to inventory to accounting multiply the testing work. | Phase apps by business value and go live with the core set first. Confirm the process list in writing before design starts. |
| Number of users and companies | More users widen role design, access rights testing and training. Multi-company setups add intercompany rules and consolidation reporting, which need the Custom plan per the pricing page. | Group users into a small set of access roles early. Confirm company count and whether companies share products, customers or chart of accounts. |
| Configuration versus custom code | Configuration is set through settings and standard features. Custom Python modules need design, code review, tests and porting at each major version upgrade. | Run a fit-gap review against standard features. Limit custom code to genuine gaps and record each customization with its business reason. |
| Data volume and cleansing needs | Large or inconsistent master data needs mapping, deduplication, validation and repeated trial loads before cutover. | Agree the data scope early, such as open transactions and a defined history period. Ask for cleansing rules to be owned by the client's data owners. |
| Number of integrations | Each external system needs an interface design, authentication, error handling, reconciliation and its own test cases. Duplicate record risk grows with each feed. | Confirm which systems are the source of truth for each record type. Phase integrations that are not needed for go-live. |
| Number of environments | Development, test, staging and production each need builds, data refreshes and sign-off. Test copies need neutralization so outbound email and payments are not triggered. | Agree a minimum environment set. Use one shared test database refreshed on a fixed schedule rather than building a separate copy per workstream. |
| Compliance and validation requirements | Regulated organizations need documented access controls, change records, audit trails and evidence of testing. This adds documentation and test scripts to every change. | Confirm the evidence list before design. Ask which controls the organization's own auditors expect and whether they will review test scripts. |
| Edition and plan | Community and Enterprise, plus the One App Free, Standard and Custom plans, change which features and hosting options are available. Custom features or hosting may need a different plan, which changes build and run work. | Confirm the edition and plan against required features before scoping. Ask the partner to state any feature that depends on a specific plan. |
How an Odoo implementation moves from process map to go-live
The sequence turns current business processes into a configured, tested and trained Odoo system with a controlled cutover, and each phase closes with a named output the client can review and sign off. The schedule and phase dependencies are set in the written scope, so the client should ask for the phase-by-phase plan before committing.
Map current processes and confirm scope
Workshops with process owners document how orders, purchasing, inventory, accounting and other in-scope processes run today, including the spreadsheets, approvals and side systems people rely on. DeployOpen maps each process and records which Odoo apps are expected to cover it. The step closes with signed-off process maps and a scope statement that names what is in and out. Ask the partner to show how changes to scope after sign-off will be handled in the written terms.
Compare requirements against standard Odoo
Each mapped requirement is checked against standard Odoo functionality to decide whether it is met by configuration, needs a workaround, or requires custom development. The result is a fit-gap register listing every gap, the proposed treatment, and the owner who accepts it. Gaps that would force custom code are flagged early because they drive cost and future upgrade effort. The register is the main input for estimating the rest of the work.
Produce the solution blueprint
The blueprint sets out the chosen editions and hosting model, the Odoo apps and versions in use, the company and user structure, access groups, reporting needs, integration points and the data migration approach. Decisions on configuration versus custom modules are recorded with their reasons. The blueprint is reviewed and approved by the business and IT owners before build begins. Its approval is the gate that lets the environment and configuration work start.
Build the environments
Development, test and production environments are provisioned inside the client's own infrastructure or the hosting platform selected in the blueprint. Access, backup routines, network paths and the database duplication process for test copies are set up at this stage, with test copies neutralized before use outside production. The step is complete when each environment is reachable by the right people and the backup and restore routine has been run once. Confirm the hosting and licensing requirements with Odoo for the chosen edition before this step starts.
Configure the system and build custom modules
Configuration follows the blueprint: companies, chart of accounts, product and pricing data, workflows, approvals, access rights and reports. Where the fit-gap register requires custom development, modules are built with tests and reviewed before they enter the test environment. Each configuration decision is traceable to a blueprint item. The step closes with a build record and a list of open defects, so that testing begins from a known state.
Run data migration trial loads
Master data and open transactions are extracted, cleansed, mapped and loaded into the test environment several times. Each trial load is reconciled against the source for counts, balances and key records, and mismatches are logged and fixed in the mapping. The output is a set of trial load reports and a reconciled dataset that the cutover plan will reuse. Migration specifics are covered in the separate migration topic, but the trial loads must finish before user acceptance testing relies on the data.
Build and test integrations, then run acceptance testing
Integrations with eCommerce, banking, logistics or other systems are built against the blueprint, covering authentication, data sync direction, error handling and duplicate prevention. Business users then run scripted and exploratory acceptance tests on the migrated data, covering the processes from the first step end to end. Defects are triaged, retested and closed against agreed criteria. The step closes with signed test results and a list of accepted known issues, which the business owners approve in writing.
Train users, plan cutover and hand over
Role-based training is delivered on the configured system, using the approved process maps as the basis for the materials. The cutover plan sets out the freeze, final data load, reconciliation, go/no-go decision, rollback criteria and communications. After go-live, hypercare covers a defined support period for issues, with the hand-over of documentation and the support model. Ask the partner what hypercare includes, how it is priced and when it ends, since these terms belong in the written scope.
Why edition, plan and version choices come before the Odoo implementation quote
Edition, plan and version decide what the project can build and how long the result stays supported, so they must be settled before anyone asks for a quote. A fixed-scope quote assumes a platform that can do the work. If the hosting model or plan does not allow a required feature, the scope changes, and the estimate built on the wrong assumption becomes unreliable. Plan limits what you can build. According to Odoo's pricing page, only the Custom plan can be hosted on Odoo.sh or on-premise, and only Custom includes multi-company, Odoo Studio, external API access and custom modules. Organizations on Odoo Online under the One App Free or Standard plans cannot use those features. Ask the business which of these are required at go-live. If any are, the plan decision belongs in the scope document, not in a later change request.
Edition is a separate decision. Odoo offers a fully open source Community edition and a paid Enterprise edition with additional features and support. The Enterprise source code is not publicly available and requires a subscription or partner access. On-premise upgrades require an Enterprise subscription, and the Community edition has no access to the upgrade service. Confirm with Odoo which edition and subscription levels match your hosting model, and ask who pays for each subscription and whether it is billed per user, per year or both.
Version support sets the clock. Odoo standard support covers the first three years after a major release on Odoo Online, Odoo.sh and on-premise, including security updates and bug fixes. Odoo 18.0 standard support runs to September 2027, 19.0 to September 2028 and 20.0 to September 2029. Odoo 17.0 standard support ended in September 2026, so a new build should not start on it. Choose a version whose standard support covers the planned go-live and at least the next few years of operation. Also note that on Odoo Online and Odoo.sh, major version upgrades are mandatory every two years, so the upgrade effort recurs and should be budgeted.
Before you request a quote, confirm current pricing directly on Odoo's pricing page. Per-user prices and yearly discounts change, so any figure in an internal business case should be dated and checked against that page. Ask the implementation partner to state which plan, edition and version the quote assumes, and to list the subscriptions the client must buy separately. A quote that does not name these assumptions cannot be compared fairly with another.
Which parts of an Odoo implementation your team can keep in-house and which to outsource
This table compares each part of an Odoo implementation with who usually performs it and the skills it requires. Read it as a starting point: the right split depends on how much hands-on Odoo, PostgreSQL and Python experience your team already has. Most teams keep process knowledge and user acceptance testing in-house, and many look to a partner for the technical parts where errors are costly to fix late.
| Work part | Usually done by | Skills needed |
|---|---|---|
| Process mapping | In-house, with partner facilitation | Deep knowledge of current business processes and approval rules |
| Functional configuration | Shared, depending on Odoo experience | Functional Odoo knowledge across the apps in scope |
| Custom Python module development | Usually outsourced | Python, Odoo ORM, views, security rules and automated tests |
| Data migration and cleansing | Usually outsourced for reconciliation, shared for source data | Data mapping, PostgreSQL and scripting, financial reconciliation |
| Integration build | Usually outsourced | Integration engineering, Odoo external API, error handling and duplicate control |
| Security and hosting setup | Usually outsourced | Linux, reverse proxy and TLS, PostgreSQL administration, backup and recovery |
| Testing | Split: partner for technical tests, in-house for user acceptance | Test design for technical checks; business sign-off for user acceptance |
| Training and cutover | Shared, with in-house ownership of end users | Change management for users; cutover planning and rollback |
What usually goes wrong in an Odoo implementation and how the plan prevents it
Most Odoo projects that overrun do so for predictable reasons: unclear scope, the wrong edition, customizations that resist upgrades, and weak data and testing work. Each card names one failure and the control the implementation plan puts in place to stop it before the quote is signed or the build starts.
Scope creep from unmapped processes
Requests for new features tend to arrive after the build starts because the current processes were never written down. The plan prevents this with a written fit-gap register that lists each process, the standard Odoo function that covers it, and the gap that remains. A named business owner signs the register, and each later change request is priced against it. Ask the partner to show how a change request is logged, estimated and approved before work begins.
Plan that cannot support the build
Odoo's pricing page places on-premise hosting, Odoo.sh, Odoo Studio, external API access and custom modules in the Custom plan only. Buying a lower plan and then finding these needs blocks the design and forces a repurchase. The plan includes a plan-matching check, run before the quote, that maps each required hosting model and feature to the plan that includes it. Confirm current plan contents with Odoo, since pricing pages change.
Core customization that blocks upgrades
Changes made directly to core modules or overridden methods often break when the next version is installed, and each break adds porting work to every upgrade. The plan sets an upgrade-aware customization rule: prefer configuration first, then Odoo Studio where it fits, then custom modules that inherit core behavior instead of editing it. Each custom module is reviewed for upgrade impact and documented. Ask how the partner estimates the porting effort per module.
Data and integrations without design
Legacy records loaded without cleansing carry duplicates, invalid codes and inconsistent units into the new system, and integrations that lack error handling silently create duplicate or missing orders. The plan requires a cleansing rule set, trial loads with reconciliation of totals, and an integration design covering authentication, sync direction, retries and a visible error queue. Each interface should have an owner who checks the error queue on a schedule after go-live.
Go-live on a version near end of support
Odoo's standard support covers three years after a major release, and Odoo 17.0 standard support ended in September 2026. Going live on a version close to that date means security patches stop soon after launch and an upgrade lands during the first year of operation. The plan checks the target version's support end date against the expected go-live and upgrade cadence before the build starts. Confirm the on-premise extended support options for the chosen version.
Training and testing underestimated
Projects often schedule user training and acceptance testing as a final week, which leaves users unprepared and defects found late. The plan treats both as scoped work: role-based training tied to the configured processes, and a test script for each process that covers normal cases, exceptions and month-end steps. The business owner signs off each script before go-live. Ask for the test script template and the training schedule in the written quote.
How the Odoo implementation plan changes by starting point and hosting model
Moving from spreadsheets or a commercial ERP changes the plan mostly in process design and data preparation. Before configuration starts, the team needs an agreed list of master data, open transactions, historical records to keep, and the reports people rely on today. Data migration becomes its own workstream with its own sign-off. The migration method is covered in the migration topic, so this tab only covers what that work adds to the overall plan.
Expect extra scope for:
- Process mapping for areas that spreadsheets handle informally, such as approvals, pricing exceptions and stock valuation.
- Decisions on the chart of accounts, product structure, partner records and taxes before any configuration is built.
- Reconciliation and parallel running time before cutover, which adds test effort to the schedule.
- Training for users who have never worked under system controls, such as mandatory fields and access rights.
- Decisions on which history is loaded into Odoo and which is archived elsewhere.
Confirm with Odoo which apps your processes require and which plan includes them, since plan limits can change the app list before the build starts.
Starting from an older Odoo version or from a Community database adds two projects that are often confused: the version upgrade and the edition change. Each has its own plan, its own tests and its own cost. The upgrade service is available to Enterprise subscribers on-premise, and the Community edition has no access to it, so the edition decision affects the upgrade path directly. The upgrade and edition migration are covered in their own topics.
Expect extra scope for:
- A check of the source version against the three-year standard support window, which determines how urgent the move is.
- An upgrade path that may pass through intermediate versions, each tested before the next step.
- Porting custom and third-party modules at each version step, which often accounts for much of the effort.
- Installing Enterprise modules and activating the subscription when moving from Community, with the database checked for module differences.
- A test database for each upgrade step, run before any production cutover.
Confirm with Odoo which target version and edition the upgrade service supports for your database, and whether intermediate hops are required.
The hosting model decides which plan you can buy and who operates the environment. According to Odoo's pricing page, only the Custom plan can be hosted on Odoo.sh or on-premise, and only Custom includes multi-company, Odoo Studio, external API access and custom modules. The One App Free and Standard plans are available on Odoo Online only, so a project that needs custom code cannot start there.
What changes by model:
- Odoo Online: Odoo runs the hosting and applies platform upgrades. Major upgrades are mandatory every two years, and SaaS releases arrive every two to three months.
- Odoo.sh: Custom plan only. Odoo hosts the environments, and the same two-year mandatory upgrade cycle applies. Confirm which environments and staging copies are included.
- On-premise: Custom plan only. Your team or partner operates servers, PostgreSQL, backups, patching and monitoring. Enterprise databases are activated with the subscription code.
- Extended support: Paid extended support is limited to Odoo.sh for select versions and to on-premise. SaaS versions cannot use it.
Confirm with Odoo which plan includes the modules you need on the chosen host, and get the operating responsibilities for backups and patching written into the scope.
Air-gapped or private network deployments remove the vendor-hosted options and move installation, activation and updates into a process the client controls. Odoo documents packaged installers and source installation for on-premise use. Enterprise source code is not publicly available, so Enterprise requires a subscription or partner access, and activation depends on the subscription code. Plan these steps before the build, because they shape the environment and the update cadence.
Expect extra scope for:
- Choosing between a packaged installer and source installation. Source installation means building and maintaining dependencies from artifacts brought in through the approved transfer process.
- An offline copy of the Python packages, PostgreSQL and system dependencies, with its own version record.
- Subscription activation on a network without outbound access, which needs a documented method agreed with Odoo.
- Offline update planning: receive release artifacts, test on a duplicated database with neutralization, then promote to production.
- A patch import schedule. Security patches are provided only during standard support.
Confirm with Odoo how activation and renewals work on a disconnected network, and which update artifacts are delivered for each release.
What your team must provide before a fixed-scope Odoo quote is possible
A fixed-scope Odoo quote is only as firm as the inputs behind it. Before DeployOpen can name the apps, the modules to build, the integrations to design and the test effort to reserve, your organization needs to supply a defined set of people, documents and access. Without them, any number we give is a guess, and the guess usually moves once the work starts. The first item is named business owners for each process area, such as order-to-cash, procure-to-pay, inventory, payroll interfaces or manufacturing. Each owner should hold decision rights: they can approve a process design, accept a gap between how Odoo works and how your team works today, and sign off a configuration. A list of stakeholders without decision rights produces a quote that cannot close, because open design questions carry cost in both directions.
Second, provide access to current systems and documentation. That means read access to the systems being replaced, existing process notes, chart of accounts, product or item master, approval matrices, and any written policies that shape the workflow. Alongside this, supply sample data extracts that are representative of real volume and edge cases, not only clean examples. A list of existing reports and workflows is equally important, since every report your finance or operations team relies on is a scope item. Ask your team to inventory the spreadsheets, scheduled exports and approval chains that are not documented anywhere. Those hidden items are the most common source of change requests after a quote is signed.
Third, document the technical boundary. For a self-hosted deployment you need to state the hosting target, the operating system and database standards you run, network segments, DNS names, outbound connectivity rules, TLS certificate approach and backup location. Confirm the Odoo edition and plan you intend to use, because the choice determines whether on-premise deployment, Odoo.sh or custom modules are even available to you. Identity is part of this boundary. Decide which sign-in method applies: LDAP, Microsoft Azure OAuth, Google Sign-In, or a two-factor requirement on top of either. Each choice changes the configuration, the user mapping and the test cases, so it should be fixed before the quote is written, not after the first login test.
Fourth, list integration endpoints and the credentials needed to reach them. Name each system Odoo must exchange data with, such as an eCommerce storefront, bank feeds, a logistics provider or a data warehouse, along with the owner of each endpoint, its API documentation, the authentication method and a non-production environment for testing. Credentials should be issued for test use before build begins. If an endpoint is unavailable, the quote must either exclude that integration or carry a placeholder with an explicit assumption. Fifth, reserve a test team with time in their calendars. Business testers need named people, defined hours and authority to reject a build. Finally, identify the training audience by role and approximate headcount, so that training materials and sessions can be scoped.
If these inputs are missing, DeployOpen can still run a discovery phase, but the output is a plan for the next phase rather than a fixed-scope price. The reason is simple: effort is driven by how many processes, reports, integrations and users exist and how many decisions are still open. We will say so in writing and list the assumptions we would otherwise have to make. Ask your internal team to confirm the items above in a single working document with named owners and dates. That document becomes the basis for the written scope, and the quote is only as reliable as its weakest input.
How much does an Odoo implementation cost and how long does it take?
What drives the cost of an Odoo implementation?
Scope is the main driver. The number of apps, the number of processes that must be mapped, the number of users and companies, and how many integrations and data sources are involved all change the effort. Most of the cost sits in process mapping, configuration, data migration, integration work, testing and training. Custom module development adds cost when standard features do not match a required process, and each custom module also adds cost at every future upgrade. Ask any partner to itemize these components in the written scope so you can see who is paid for what and which items recur.
Is the Odoo subscription the same as the implementation cost?
No. The Odoo subscription and the implementation are separate costs. Odoo's pricing page lists per-user monthly prices with a yearly discount for its plans, and it states which plan allows on-premise hosting, Odoo.sh, Studio and custom modules. Confirm current prices directly on the Odoo pricing page, since they can change. The implementation is a one-time project fee paid to a partner or internal team for planning, configuration, migration and go-live. Hosting, support and upgrades recur after go-live, so ask any quote to show both one-time and recurring costs separately.
Can a small team implement Odoo without a partner?
A small team can implement a limited scope alone, especially a single app such as invoicing or basic inventory with standard processes and clean data. The risk rises with each process that differs from the standard flow, each integration, each data source that must be cleaned and reconciled, and each company or currency involved. Teams without an Odoo developer should plan for upgrade work, since version upgrades must be tested on a test database before production. Assess your own skills honestly against the scope before deciding, and ask a partner for a written scope review if you are unsure.
How long does an Odoo implementation take?
The duration depends on scope, not on a fixed template. A single-app rollout with standard processes and clean data takes far less time than a multi-app, multi-company project with custom modules, integrations and historical data migration. The timeline is driven by how long process decisions take, how quickly data is cleaned, how many test cycles are needed and how much user training is required. Ask any partner for a phased timeline in the written scope that names the dependencies, the client decisions needed and the points where go-live is confirmed. Do not accept a duration that is not tied to a listed scope.
What does the implementation need from our own team?
Your team must make process decisions, name a business owner for each app, provide access to source systems, clean and approve master data and take part in user acceptance testing. Most delays come from slow decisions and late data, not from configuration work. Ask the partner to list each client responsibility with an owner and a due point in the plan, and confirm who approves scope changes. Also confirm who holds administrator access and who will operate Odoo after go-live.
Should we choose hosting before or after implementing Odoo?
Choose the hosting model before the build starts, because the plan determines which features and modules you can use. Odoo's pricing page states that only the Custom plan can be hosted on Odoo.sh or on-premise and that only Custom includes multi-company, Odoo Studio, external API access and custom modules. Hosting also affects upgrade effort, support windows and who patches the system. Settle the plan, hosting and environments first, then size the implementation against them. Changing hosting after the build can force rework.
Are custom modules always needed for an Odoo project?
No. Many requirements can be met with configuration, standard features and, where the plan allows, Odoo Studio. Custom Python modules are needed only when a required process cannot be met that way. Each custom module adds build cost, test cost and porting work at each upgrade, so the scope should record why each one is needed and what standard option was rejected. Ask the partner to classify every requirement as configuration, Studio, custom module or out of scope.
What should a fixed-scope Odoo quote list?
A fixed-scope quote should list the apps and editions in scope, the processes mapped, the companies and users covered, the integrations and their direction, the data sources and migration rules, the custom modules with their purpose, the environments, the training sessions, the test cycles and the go-live support. It should also state the exclusions, the client responsibilities, the change-request process, the acceptance criteria and whether hosting, subscriptions and post-go-live support are included or billed separately. Compare quotes line by line against this list.
How DeployOpen scopes, delivers and hands over an Odoo implementation
DeployOpen plans, implements, customizes, integrates, documents and supports Odoo inside your own infrastructure, whether that is your cloud account, data center or air-gapped network. Each engagement starts with a written, fixed scope that sets out what is included, what is excluded and what you will receive before any build work begins.
How we scope
- Process mapping of the workflows Odoo must support, agreed with your process owners before any build starts.
- App selection and edition decisions, including which plan or edition the required features depend on.
- A written fixed scope listing hosting model, configuration work, custom modules, data migration, integrations and training.
How we build
- Configuration first, with custom Python modules limited to gaps that standard apps cannot cover without excessive change.
- Testing in a non-production database, with duplicated copies neutralized before use outside production.
- Documentation of custom code, configuration decisions and integration designs so your team can maintain them.
How we hand over
- Handover of production access, runbooks, backup procedures and upgrade notes to the people who will operate the system.
- Knowledge transfer sessions on how to test an upgrade in a separate database before it reaches production.
- A closeout record of what was delivered against the written scope, with open items listed for your decision.
How we support
- Ongoing support, upgrades and continuous testing are available as a retainer after go-live.
- Upgrade planning against Odoo's standard support windows so your version stays within a supported period.
- Quotes that separate one-time implementation work from recurring support, hosting and upgrade effort.

