CRM migration

Migrate from Workbooks to Odoo CRM

Field-level mapping, validation, and rollback between Workbooks and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.

Workbooks logo

Workbooks

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

92%

11 of 12

objects map 1:1 between Workbooks and Odoo CRM.

Complexity

BStandard

Timeline

4-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Workbooks to Odoo CRM is a structural migration from a UK mid-market CRM with native quoting to a modular open-source ERP with CRM as one application among dozens. Workbooks stores Organisations and People as the primary account-contact pair; Odoo uses a similar Companies-and-Contacts model but organises related records within its module architecture. We extract Opportunities with pipeline stages and probability weights, Cases with status and priority, and Quotations with line items from Workbooks Business-tier accounts, mapping them to their Odoo equivalents and preserving parent-record links throughout. We flag Workbooks Workflows and Automation rules because they are not data objects and must be rebuilt in Odoo's Workflow Builder by the customer's admin team post-migration. Custom Fields including file-upload and iFrame types require manual enumeration per record type before mapping, as Workbooks does not publish a unified schema export.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Workbooks logo

Workbooks

What's pushing teams away

  • Record save times degrade noticeably as the database grows, pushing teams with large transaction histories toward faster alternatives.
  • The UI has not kept pace with modern CRM expectations—younger sales staff find the navigation and visual design dated compared to HubSpot or Pipedrive.
  • Documentation and training materials are sparse, creating a steep onboarding curve for new users who are not power users.
  • Customisation options exist but the workflow for implementing them is non-obvious, leading to frustration when basic process changes require admin involvement.

Choosing

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How Workbooks objects map to Odoo CRM

Each row shows how a Workbooks object lands in Odoo CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

Workbooks

Organisation

maps to

Odoo CRM

res.partner (company type)

1:1
Fully supported

Workbooks Organisations map to Odoo res.partner records with partner_type set to company. The Organisation Name maps to Odoo name; address fields map to street, city, state_id, country_id, zip. Industry classification and custom fields on Organisation migrate to custom Char or Selection fields on res.partner. Organisation is created before any Contact (People) import so that the Contact's commercial_partner_id or parent_id link is satisfied at the moment of Contact insert.

Workbooks

Person

maps to

Odoo CRM

res.partner (individual type)

1:1
Fully supported

Workbooks People map to Odoo res.partner records with partner_type set to individual, linked to their parent Organisation via the Organisation lookup field. Name, email, phone, job_title, and department map to their Odoo equivalents. Any bespoke custom fields defined on People records migrate to custom fields on the res.partner model. People without an Organisation link are migrated as standalone contacts with parent_id left empty.

Workbooks

Opportunity

maps to

Odoo CRM

crm.lead (opportunity type)

1:1
Fully supported

Workbooks Opportunities map to Odoo crm.lead records with type set to opportunity. Pipeline stage migrates to crm.stage, and probability percentage maps to Odoo's probability field or is derived from the stage configuration. Expected close date and opportunity value migrate to date_deadline and planned_revenue. Owner assignment maps by email match to an Odoo res.users record; unresolved owners go to a reconciliation queue.

Workbooks

Case

maps to

Odoo CRM

helpdesk.ticket or project.task

1:1
Fully supported

Workbooks Cases map to Odoo helpdesk.ticket if the Odoo instance has the Helpdesk module installed. Case status and priority migrate to ticket stage and priority. Assigned user maps by email match to res.users. Case description and activity history migrate to ticket description and chatters. If the customer's Odoo deployment does not include Helpdesk, Cases migrate to project.task as an alternative with a custom tag marking the original Case source.

Workbooks

Quotation

maps to

Odoo CRM

sale.order

1:1
Fully supported

Workbooks Quotations (Business tier only) map to Odoo sale.order records. The quotation header (related Organisation, owner, validity date) maps to sale.order header fields; line items (product, quantity, price, discount) map to sale.order.line records. We confirm the source Workbooks subscription tier during scoping; if it is CRM or CRM Pro, Quotation and Invoice objects do not exist and are flagged as out-of-scope before migration begins. Odoo sale.order line items require a product.product or product.template reference, which we resolve during the transform phase.

Workbooks

Invoice

maps to

Odoo CRM

account.move (out_invoice type)

1:1
Fully supported

Workbooks Invoices (Business tier only) map to Odoo account.move records with move_type set to out_invoice. Invoice header data, line items, and payment status migrate to the equivalent account.move fields. Credit notes map to account.move with move_type out_refund. Odoo Accounting module must be installed for this mapping. Invoice attachments download as binaries and attach to the account.move record via ir.attachment.

Workbooks

Sales Order / Purchase Order

maps to

Odoo CRM

stock.picking or purchase.order

1:1
Fully supported

Workbooks Sales Orders and Purchase Orders map to Odoo stock.picking (for delivery) and purchase.order respectively. The order-to-invoice linkage is preserved as a reference note on the Odoo record if the destination does not natively link the documents in the same way Workbooks does. Odoo's Inventory module must be installed for stock.picking mappings.

Workbooks

Activity

maps to

Odoo CRM

mail.message or mail.activity

1:1
Fully supported

Workbooks Activities (calls, emails, meetings, tasks) linked to an Organisation or Person migrate to Odoo mail.message records in the chatters of the related res.partner, crm.lead, or helpdesk.ticket. Meeting type maps to an Event record with start and end datetime preserved. Task type maps to a project.task or a mail.activity with user_id assignment. The original timestamp is preserved so the chronological activity timeline is maintained in Odoo's chatter.

Workbooks

Campaign

maps to

Odoo CRM

utm.campaign

1:1
Fully supported

Workbooks Campaigns map to Odoo utm.campaign records. Campaign name, status, start/end dates, and associated lead memberships migrate. Campaign response data migrates as crm.lead records tagged with the campaign reference. Odoo UTMs (Utm source, medium, campaign) must be installed for this mapping to function.

Workbooks

Lead

maps to

Odoo CRM

crm.lead (lead type)

1:1
Fully supported

Workbooks Lead records hold pre-conversion prospect data that maps directly to Odoo crm.lead with type set to lead. Lead source, status, rating, and assigned owner migrate. After migration, the customer's Odoo sales team can qualify and convert these leads into crm.lead opportunity records and link them to Companies and Contacts. Original Workbooks Lead status is preserved in a custom field for audit.

Workbooks

Contract

maps to

Odoo CRM

account.analytic.account or res.partner

1:1
Fully supported

Workbooks Contract records map to Odoo account.analytic.account for subscription-style recurring contracts, or to res.partner as a custom contract reference field depending on how the customer uses Contracts. Start date, end date, renewal terms, and related Organisation migrate. The contract metadata document count migrates as an ir.attachment link to the parent record.

Workbooks

Custom Fields

maps to

Odoo CRM

ir.model.fields (custom)

lossy
Mapping required

Workbooks custom fields of types text, number, date, dropdown, checkbox, and file upload require manual enumeration per record type during scoping. There is no unified schema export in Workbooks, so we request a read-only admin login and inspect each record type. We create equivalent custom fields in Odoo using Studio or direct model definition, matching the Workbooks field type to the closest Odoo field type (selection for dropdown, char for text, integer for number, boolean for checkbox, binary for file upload). iFrame custom fields export as URL strings and migrate as Char fields in Odoo.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

Workbooks logo

Workbooks gotchas

High

Record save latency on large datasets

Medium

Custom Fields require manual field-level mapping

Medium

Quotation and Invoice exports require Business tier

Low

iFrame custom fields export as URL strings only

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • Quotation and Invoice exports require Workbooks Business tier

    The Quotation, Invoice, and Sales Order objects in Workbooks are only available on the Business and Business Pro tiers ($97 per user per month and custom pricing respectively). If the source subscription is on the CRM or CRM Pro tier, these objects do not exist in the data export and we cannot retrieve them regardless of what is visible in the UI. We confirm the source account tier during scoping and explicitly list the absence of Quotation and Invoice objects as a migration scope item before work begins. Customers who need these records must upgrade their Workbooks subscription before scoping, or accept that historical quote and invoice data will not migrate.

  • Workbooks custom field schema requires manual per-record-type enumeration

    Workbooks does not publish a unified API endpoint or export that lists every custom field across all record types. Each Workbooks deployment has a different set of bespoke fields that the previous administrator configured without a central registry. We request a read-only Workbooks administrator login during scoping and enumerate custom fields on each record type (Organisation, Person, Opportunity, Case, Quotation, Invoice, Activity) before writing the migration spec. Skipping this step causes bespoke data to be silently dropped because the extraction query does not know to include those fields.

  • Organisation-to-Person lookup chain must resolve before Contact import

    Workbooks People records link to Organisations via the Organisation lookup field. In Odoo, individual contacts (res.partner with type individual) require a parent_id pointing to their parent company. If the Organisation is not imported first, People inserts fail on foreign key constraints. We sequence the migration as Accounts first, then Contacts, then Opportunities, then Activities. Any People record without a resolvable Organisation parent is imported as a standalone contact and flagged in the reconciliation report for the customer's admin to link manually after go-live.

  • Odoo module dependencies gate certain object mappings

    Odoo maps certain record types to modules that must be installed before migration begins. Cases require Helpdesk, Invoices require Accounting, Purchase Orders require Purchase, Sales Orders and Quotations require Sales, Campaigns require UTMs, and Contracts may require a subscription or contract management module. We confirm which Odoo modules are installed in the target environment during scoping. If a required module is absent, we either install it before migration or remap the object to a generic fallback (for example, Cases to project.task if Helpdesk is not available) and document the trade-off in the migration spec.

  • File-upload custom fields export as binary blobs requiring separate extraction

    Workbooks file-upload custom fields store the uploaded file as a binary object linked to the record. We download these binaries separately and attach them to the corresponding Odoo record as ir.attachment records. The original filename and MIME type are preserved. If the Workbooks subscription is CRM rather than Business tier, the export API may not expose file-upload fields, in which case we flag the limitation and recommend manual re-upload of the most critical documents post-migration.

Migration approach

Six steps for a successful Workbooks to Odoo CRM data migration

  1. Tier and scope confirmation

    We confirm the source Workbooks subscription tier (CRM, CRM Pro, Business, or Business Pro) to establish which objects are present for extraction. We request read-only admin access to enumerate custom fields per record type and extract the data model. We verify the target Odoo instance's installed modules (CRM, Sales, Accounting, Helpdesk, Project, Purchase, UTMs) and establish which Odoo modules are required for each object mapping. The discovery output is a written migration spec listing confirmed objects, custom field inventory, missing module gaps, and a timeline estimate.

  2. Data extraction in batched chunks

    We extract Workbooks data using the API for real-time record validation, supplemented by MS Excel export for bulk record sets. Workbooks is known to slow during bulk operations as record counts grow; we sequence large record sets into batches of 5,000 records and validate each batch completes before proceeding. For Business-tier accounts, we extract Quotation and Invoice line items as separate row sets so that header-line relationships are preserved during the Odoo sale.order and account.move insert. File-upload binaries download as separate binary streams with filename metadata carried into the migration manifest.

  3. Odoo schema pre-configuration

    We create the destination schema in Odoo before any data import begins. This includes custom fields on res.partner, crm.lead, helpdesk.ticket, sale.order, and account.move matching the Workbooks custom field inventory. We configure CRM pipeline stages in the Kanban view, set probability percentages per stage, and add any custom stage names the customer uses. If the customer uses Odoo multi-company or multi-currency, we configure the relevant res.company and res.currency records. All schema changes deploy to a staging Odoo database first for validation before production migration begins.

  4. Owner and user reconciliation

    We extract every distinct Workbooks owner (user) referenced on Organisations, People, Opportunities, Cases, Quotations, and Activities and match them by email against the destination Odoo res.users table. Owners without a matching Odoo user go to a reconciliation queue for the customer's Odoo administrator to provision before record import resumes. We do not create Odoo users on behalf of the customer; that requires an admin decision on licensing and access levels that is outside migration scope.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Companies first (res.partner with type company), then Contacts (res.partner with type individual linked to parent company), then Leads and Opportunities (crm.lead), then Cases (helpdesk.ticket or project.task), then Sale Orders (sale.order) with line items, then Invoices (account.move), then Activities and attachments via mail.message and ir.attachment. Each phase emits a row-count reconciliation report before the next phase begins. Activities (calls, emails, meetings, tasks) land in Odoo chatter as mail.message records linked to the parent record.

  6. Cutover, validation, and Workflow rebuild handoff

    We freeze Workbooks writes during cutover, run a final delta migration of any records created or modified during the migration window, then enable Odoo as the system of record. We deliver a written inventory of every Workbooks Workflow and Automation rule with its trigger, conditions, and a recommended Odoo Workflow Builder equivalent. The customer's Odoo administrator or an Odoo implementation partner rebuilds automations post-migration. We do not migrate Workflows as code and do not provide post-migration admin support, training, or workflow rebuild as standard scope.

Platform deep dives

Context on both ends of the pair

Workbooks logo

Workbooks

Source

Strengths

  • Native quotation, order, and invoice handling eliminates the need for a separate CPQ or accounting tool on mid-market deals.
  • Lead aggregation and data enrichment features pull firmographic data automatically, reducing manual prospecting work.
  • Multilingual interface and multi-currency support accommodate UK and European teams without a costly upgrade.
  • Integrated case management with pipeline visibility gives support and sales a shared view of account health.
  • Sandbox environment available on all tiers for testing configuration changes before applying them to live data.

Weaknesses

  • Record save latency increases significantly as the database grows beyond ~50,000 active records.
  • UI and interaction patterns feel dated compared to newer CRM entrants, affecting user adoption among younger sales staff.
  • Sparse documentation and limited training resources create a steep learning curve for non-technical administrators.
  • The platform does not publish a public API reference for rate limits or bulk endpoints, making programmatic extraction harder to plan.
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

Complexity grading

How hard is this migration?

Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Workbooks and Odoo CRM.

  • Object compatibility

    B

    2 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    C

    Workbooks: Workbooks imposes rate limits and result-set size caps. Excessive calls are throttled by being delayed or redirected via a delaying URL; clients are expected to follow these redirects as normal operation. Specific request-per-minute thresholds are not publicly published..

  • Data volume sensitivity

    A

    Workbooks exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your Workbooks to Odoo CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Workbooks to Odoo CRM data migrations

Answers to the questions buyers ask most during Workbooks to Odoo CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Workbooks to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between four and six weeks for accounts under 20,000 Organisations and 3,000 Opportunities with no Quotation or Invoice history and no custom object equivalents. Migrations that include Business-tier Quotation and Invoice exports, large Case histories (over 10,000 open tickets), extensive custom field sets, or multiple Odoo module dependencies (Helpdesk, Accounting, Purchase, UTMs) move to eight to fourteen weeks because of line-item extraction, module installation, and parent-record lookup resolution.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Workbooks.
Land in Odoo CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day