CRM migration
Field-level mapping, validation, and rollback between BackDocket and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
BackDocket
Source
Odoo CRM
Destination
Compatibility
10 of 10
objects map 1:1 between BackDocket and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
BackDocket is a legal practice management platform built around case files, intake records, and client relationship tracking for law firms. Its data model centers on contacts, cases (called claims), tasks, and calendar events, all structured for legal workflows. Odoo CRM uses a Lead-to-Opportunity model backed by crm.lead, res.partner for contacts, and project.task for deliverables, with stage-based pipeline management. FlitStack AI migrates your BackDocket contacts, active and closed cases, custom intake fields, and activity history into the equivalent Odoo objects. We handle the schema translation from BackDocket's legal-specific taxonomy to Odoo's sales-oriented crm.lead stages, resolve owner assignments by email match against Odoo users, and preserve file attachments and notes. Workflows, document templates, and billing configurations do not transfer — those require manual rebuild in Odoo. The migration uses Odoo's xmlrpc API for record creation and attachment re-upload to Odoo's ir.attachment model, with a test run providing field-level diff before the full cutover commits.
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 BackDocket 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.
BackDocket
Client / Contact
Odoo CRM
res.partner
1:1BackDocket client records map directly to Odoo res.partner. The res.partner record is created with type='contact' for individual clients and type='company' for corporate clients. Primary email, phone, and address fields map 1:1. BackDocket contacts without a company association land as standalone res.partner records.
BackDocket
Case / Claim
Odoo CRM
crm.lead
1:1BackDocket case records translate to Odoo crm.lead. Cases with status='active' become crm.lead records in the New or Qualified stage depending on BackDocket's case_type field. Closed cases migrate with stage='Lost' or 'Won' based on BackDocket's resolved_outcome field. The crm.lead name field receives the BackDocket case reference number for traceability.
BackDocket
Intake Form Fields
Odoo CRM
Custom Fields on crm.lead
1:1BackDocket's custom intake fields (practice area, referral source, matter type) have no native Odoo CRM equivalent. FlitStack creates corresponding custom fields on crm.lead using Odoo's field definition system before migration. Each intake field is assessed for data type (picklist, text, date) and mapped to the appropriate Odoo field definition.
BackDocket
Case Task
Odoo CRM
mail.activity
1:1BackDocket tasks linked to cases migrate as mail.activity records on the corresponding crm.lead in Odoo. Activity type (call, email, meeting, todo) maps to Odoo's activity_type_id. Original due dates and assigned user IDs are preserved via email-matched res.users lookup. The activity summary field captures the BackDocket task name, providing immediate context within Odoo's activity chatter view.
BackDocket
Staff Note
Odoo CRM
mail.message
1:1BackDocket internal notes attached to cases become mail.message records with message_type='comment' on the Odoo crm.lead. Author is resolved by email match to Odoo res.users. Note body text transfers as plaintext; rich formatting is preserved where BackDocket exports HTML. Attachments embedded within notes are extracted and migrated separately as ir.attachment records linked to the same crm.lead.
BackDocket
Document / Attachment
Odoo CRM
ir.attachment
1:1BackDocket file attachments (PDFs, Word docs, images) linked to cases are downloaded and re-uploaded to Odoo's ir.attachment model, linked to the corresponding crm.lead via res_model='crm.lead' and res_id equal to the migrated lead ID. File size limit of 25MB per attachment applies; larger files are flagged for manual handling.
BackDocket
Calendar Event
Odoo CRM
calendar.event
1:1BackDocket calendar entries (court dates, client appointments, deadlines) migrate to Odoo calendar.event linked to the res.partner or crm.lead record. Start datetime, stop datetime, and allday flag are preserved. Attendees are resolved by email match to Odoo res.partner records. Recurring calendar events in BackDocket are recreated as recurring events in Odoo using the calendar.event recurrence rules.
BackDocket
User / Owner
Odoo CRM
res.users
1:1BackDocket user accounts are matched to Odoo res.users by email address. Unmatched owners are assigned to a fallback 'Migration User' in Odoo and flagged in the pre-migration report. BackDocket admin accounts without a corresponding Odoo user are excluded from owner mapping.
BackDocket
Claim Type Template
Odoo CRM
Custom Field Value on crm.lead
1:1BackDocket ships 22 prepared claim type templates spanning plaintiff, defense, transactional, and specialty practice areas. These map to a custom picklist field (Claim_Type__c) on crm.lead. Each BackDocket template name is matched to an Odoo custom field selection option; unmapped templates default to a generic 'Legal Matter' value.
BackDocket
Lead Source
Odoo CRM
source_id on crm.lead
1:1BackDocket captures lead referral source on intake forms. This maps to the crm.lead source_id field using Odoo's utm.source values. Sources are created as utm.source records in Odoo if they do not already exist, ensuring campaign attribution continuity. The utm.medium and utm.campaign fields are set to default values unless explicitly mapped from BackDocket intake data.
| BackDocket | Odoo CRM | Compatibility | |
|---|---|---|---|
| Client / Contact | res.partner1:1 | Fully supported | |
| Case / Claim | crm.lead1:1 | Fully supported | |
| Intake Form Fields | Custom Fields on crm.lead1:1 | Fully supported | |
| Case Task | mail.activity1:1 | Fully supported | |
| Staff Note | mail.message1:1 | Fully supported | |
| Document / Attachment | ir.attachment1:1 | Fully supported | |
| Calendar Event | calendar.event1:1 | Fully supported | |
| User / Owner | res.users1:1 | Fully supported | |
| Claim Type Template | Custom Field Value on crm.lead1:1 | Fully supported | |
| Lead Source | source_id on crm.lead1:1 | Fully supported |
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.
BackDocket gotchas
No publicly documented API for data export
Pricing inconsistency across published sources
Onsite Data Warehouse data locality uncertainty
Check Approvals has no direct equivalent in most destination platforms
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
Map BackDocket data model to Odoo schema
FlitStack inventories all BackDocket record types (clients, cases, intake forms, tasks, notes, calendar events, attachments) and maps each to the corresponding Odoo model (res.partner, crm.lead, mail.activity, mail.message, calendar.event, ir.attachment). We identify custom intake fields on BackDocket cases and create matching custom fields on Odoo's crm.lead before migration. A schema plan document is delivered for your Odoo admin to apply. The inventory phase also captures data volume estimates per object type, enabling accurate timeline and cost projections for the migration scope.
Resolve BackDocket owners against Odoo res.users
BackDocket user accounts are matched to Odoo res.users by email address. We generate a pre-migration owner resolution report showing matched users, unmatched BackDocket owners, and the fallback assignment plan. Your Odoo admin creates missing user accounts or confirms fallback assignment before the migration run. Owner resolution must complete before records load because crm.lead.user_id and mail.activity.user_id are set at insert time.
Create Odoo crm.stage records per team
BackDocket case status values are mapped to Odoo crm.stage records. If your Odoo deployment uses multiple crm.team instances, we generate a team-specific stage mapping plan. Your Odoo admin creates the stage records in Odoo before migration. We verify stage existence via the xmlrpc API before the migration run begins to prevent records landing in the wrong pipeline position. The stage mapping also includes probability percentages for each stage, enabling Odoo's forecast and revenue prediction features to function correctly from day one after migration.
Run test migration with field-level diff
A representative slice of BackDocket records (typically 200-500 per object type) migrates to Odoo first. FlitStack generates a field-level comparison report showing source values versus destination field contents for every mapped field. You verify claim type mapping, owner resolution, stage assignment, and note migration before the full run commits. Adjustments to field mapping or value translation are made before the production migration.
Execute full migration with delta-pickup window
The full BackDocket dataset migrates to Odoo via xmlrpc API calls. A delta-pickup window of 24-48 hours captures any BackDocket records created or modified during the cutover period. All ir.attachment records are re-uploaded with the correct res_model and res_id after lead creation. An audit log records every operation. One-click rollback reverts Odoo to pre-migration state if reconciliation fails. The migration engine processes records in batches of 100 to optimize API throughput while avoiding Odoo's request timeout limits.
Platform deep dives
BackDocket
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 BackDocket and Odoo CRM.
Object compatibility
1 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
BackDocket: Not publicly documented.
Data volume sensitivity
BackDocket doesn't expose a bulk API — REST + parallelization used for high-volume runs.
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 BackDocket to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your BackDocket 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 BackDocket
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.