CRM migration
Field-level mapping, validation, and rollback between Workbooks and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Workbooks
Source
Odoo CRM
Destination
Compatibility
11 of 12
objects map 1:1 between Workbooks and Odoo CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
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.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
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
Odoo CRM
res.partner (company type)
1:1Workbooks 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
Odoo CRM
res.partner (individual type)
1:1Workbooks 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
Odoo CRM
crm.lead (opportunity type)
1:1Workbooks 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
Odoo CRM
helpdesk.ticket or project.task
1:1Workbooks 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
Odoo CRM
sale.order
1:1Workbooks 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
Odoo CRM
account.move (out_invoice type)
1:1Workbooks 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
Odoo CRM
stock.picking or purchase.order
1:1Workbooks 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
Odoo CRM
mail.message or mail.activity
1:1Workbooks 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
Odoo CRM
utm.campaign
1:1Workbooks 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
Odoo CRM
crm.lead (lead type)
1:1Workbooks 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
Odoo CRM
account.analytic.account or res.partner
1:1Workbooks 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
Odoo CRM
ir.model.fields (custom)
lossyWorkbooks 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.
| Workbooks | Odoo CRM | Compatibility | |
|---|---|---|---|
| Organisation | res.partner (company type)1:1 | Fully supported | |
| Person | res.partner (individual type)1:1 | Fully supported | |
| Opportunity | crm.lead (opportunity type)1:1 | Fully supported | |
| Case | helpdesk.ticket or project.task1:1 | Fully supported | |
| Quotation | sale.order1:1 | Fully supported | |
| Invoice | account.move (out_invoice type)1:1 | Fully supported | |
| Sales Order / Purchase Order | stock.picking or purchase.order1:1 | Fully supported | |
| Activity | mail.message or mail.activity1:1 | Fully supported | |
| Campaign | utm.campaign1:1 | Fully supported | |
| Lead | crm.lead (lead type)1:1 | Fully supported | |
| Contract | account.analytic.account or res.partner1:1 | Fully supported | |
| Custom Fields | ir.model.fields (custom)lossy | Mapping required |
Gotchas + challenges
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 gotchas
Record save latency on large datasets
Custom Fields require manual field-level mapping
Quotation and Invoice exports require Business tier
iFrame custom fields export as URL strings only
Odoo CRM gotchas
Odoo.sh version gating blocks assisted migrations from trial
Enterprise modules fail to install on Community after database restore
Custom module view inheritance breaks between Odoo major versions
Custom fields risk losing their application context on Community
API access for Community is gated behind the Custom Plan
Pair-specific challenges
Migration approach
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.
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.
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.
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.
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.
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
Workbooks
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Workbooks and Odoo CRM.
Object compatibility
2 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
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
Workbooks exposes a bulk API — large-volume migrations stream efficiently.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Workbooks to Odoo CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Workbooks
Other ways to arrive at Odoo CRM
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.