CRM migration
Field-level mapping, validation, and rollback between Captorra and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Captorra
Source
Odoo CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Captorra and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Captorra is a legal-industry case-intake and lead-conversion platform built around a lead-first data model with customizable intake forms and referral tracking. Odoo CRM uses a crm.lead model that handles both inbound leads and opportunities, backed by res.partner for contacts and companies, and crm.stage for pipeline state. The migration carries everything Captorra stores natively — leads, contact details, custom intake properties, referral sources, and matter references — into Odoo's PostgreSQL-backed relational model via XML-RPC API. The harder problems are translating Captorra's legal-industry intake status flags into Odoo custom fields, mapping referral attribution to Odoo's partner linking mechanism, and preserving any custom form-field definitions as Odoo ir.model.fields. Workflows and intake-form logic do not migrate — FlitStack exports Captorra workflow definitions as a YAML reference for Odoo admin rebuild. During the migration, FlitStack performs a pre-flight audit of all custom field definitions, generates the necessary Odoo field creation scripts, and validates the mapping with a sample dataset before moving the full dataset. The process also includes a delta-pickup phase to capture any new records created in Captorra after the initial export, ensuring that the Odoo system reflects the most current state at cutover.
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 Captorra 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.
Captorra
Lead
Odoo CRM
crm.lead
1:1Captorra's lead record maps 1:1 to Odoo's crm.lead model. The crm.lead model handles both inbound leads and converted opportunities, so Captorra leads land as Odoo leads by default. Any lead-to-matter conversion logic in Captorra maps to Odoo's lead-to-opportunity action. All standard lead fields such as name, email, phone, and address are transferred directly, preserving original timestamps and owner assignments.
Captorra
Contact (on lead)
Odoo CRM
res.partner
1:1Captorra stores contact details (name, email, phone, address) as fields on the lead record. These extract to a res.partner record in Odoo with partner_id populated on the crm.lead. Odoo's crm.lead.name defaults to the partner's display name if only partner_id is set.
Captorra
Company (on lead)
Odoo CRM
res.partner (company_type=company)
1:1Captorra's company field on a lead maps to a res.partner record with company_type='company'. Odoo resolves the parent-partner relationship automatically when partner_id is set on the contact-level partner record. Multiple leads from the same Captorra company consolidate to one Odoo company partner.
Captorra
Pipeline Stage / Intake Status
Odoo CRM
crm.stage
1:1Captorra's custom intake-status values (e.g., New Lead, Qualified, Intake Complete, Closed) map to Odoo crm.stage records. Each Captorra pipeline maps to one Odoo crm.team's stage set. Stage display order and probability weights re-applied based on Odoo's stage configuration per team.
Captorra
Referral Source
Odoo CRM
res.partner (referral link) + custom field on crm.lead
1:1Captorra referral attribution (referring attorney, partner firm, or channel) maps to an Odoo res.partner record with type='delivery' or stored as a Referral_Source__c char field on crm.lead. The mapping approach depends on whether the firm wants referral contacts visible in Odoo's partner list or kept as a read-only field on the lead.
Captorra
Custom Intake Fields
Odoo CRM
ir.model.fields (custom on crm.lead)
1:1Captorra per-organization custom fields (e.g., Accident_Type, Insurance_Provider, Statute_of_Limitations) require Odoo custom field creation before migration. FlitStack reads the Captorra field definitions during discovery and generates Odoo field creation YAML for admin approval. Field types map: text→char/text, picklist→selection, date→date, number→float/integer. The generated YAML can be applied via Odoo Studio or directly in developer mode, and the fields become part of the crm.lead model for subsequent data loading.
Captorra
Matter / Case Reference
Odoo CRM
crm.lead.x_studio_matter_ref (custom char field) or project.project
1:1Captorra's case reference number stores as a custom char field on crm.lead. If the firm also uses Odoo's project management app, case matters can map to project.project records linked via crm.lead.project_id. FlitStack recommends the custom field approach for law firms that only need CRM-level matter tracking.
Captorra
Engagement Activity (calls, emails, notes)
Odoo CRM
mail.message
1:1Captorra engagement logs (call recordings, email threads, note bodies) map to Odoo mail.message records linked to the crm.lead. Odoo's mail.thread mechanism displays these in the lead's chatter. Original timestamps and owner IDs preserved. Call duration and outcome stored in mail.message.fields or custom fields on the message.
Captorra
Lead Owner / Assigned User
Odoo CRM
res.users (mapped by email)
1:1Captorra's assigned user resolved by email match to Odoo res.users records. Unmatched owners flagged before migration. Unassigned Captorra leads land on a fallback Odoo user (configurable). Odoo's crm.lead.user_id field holds the owner reference. The fallback user is set in Odoo's CRM settings, and any unmatched owners are listed in a pre‑flight report for the admin to resolve prior to the final load.
Captorra
Lead Create Date / Update Timestamp
Odoo CRM
crm.lead.create_date / write_date
1:1Captorra original create_date migrates as crm.lead.create_date (set at insert time). Captorra's last_modified timestamp maps to crm.lead.write_date or a custom Original_Modified_Date__c field for reporting continuity. Odoo's native audit fields capture the migration run date separately. The custom field, if created, stores the original modification timestamp to support historical reporting without altering Odoo's internal write_date.
Captorra
Source System ID
Odoo CRM
crm.lead.x_studio_captorra_id (custom char field)
1:1Captorra's internal record ID stored as a custom field on crm.lead for traceability and delta-run de-duplication. The x_studio prefix applies when Odoo Studio creates the field; the field name is configurable per deployment. This field allows FlitStack to match source records during subsequent delta imports, preventing duplicate entries and enabling audit trails across migration cycles.
Captorra
Attachment / File
Odoo CRM
ir.attachment
1:1Captorra file attachments on leads (intake documents, uploaded forms, referral letters) download and re-upload to Odoo's ir.attachment model linked to the crm.lead record. Odoo's document management app enhances this if installed; otherwise files attach directly to the lead record. All attachments retain original filenames and MIME types, and the ir.attachment's create_date reflects the upload time in Odoo.
| Captorra | Odoo CRM | Compatibility | |
|---|---|---|---|
| Lead | crm.lead1:1 | Fully supported | |
| Contact (on lead) | res.partner1:1 | Fully supported | |
| Company (on lead) | res.partner (company_type=company)1:1 | Fully supported | |
| Pipeline Stage / Intake Status | crm.stage1:1 | Fully supported | |
| Referral Source | res.partner (referral link) + custom field on crm.lead1:1 | Fully supported | |
| Custom Intake Fields | ir.model.fields (custom on crm.lead)1:1 | Fully supported | |
| Matter / Case Reference | crm.lead.x_studio_matter_ref (custom char field) or project.project1:1 | Fully supported | |
| Engagement Activity (calls, emails, notes) | mail.message1:1 | Fully supported | |
| Lead Owner / Assigned User | res.users (mapped by email)1:1 | Fully supported | |
| Lead Create Date / Update Timestamp | crm.lead.create_date / write_date1:1 | Fully supported | |
| Source System ID | crm.lead.x_studio_captorra_id (custom char field)1:1 | Fully supported | |
| Attachment / File | ir.attachment1: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.
Captorra gotchas
Inbound-only API with no export endpoint
Custom field schema varies per organization
No public pricing or trial available
Intake form configurations do not auto-transfer
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
Extract Captorra data via CSV and audit custom field definitions
FlitStack works with the firm's Captorra admin to export all lead records as CSV from the Captorra admin UI. Simultaneously, we read the organization's Captorra field registry to identify every custom intake property, its data type, and its pick-list values. This audit output becomes the input for Odoo custom field creation planning and the value-mapping spreadsheet that the Odoo admin reviews before any schema changes are made.
Create Odoo custom fields and stage configuration
Before data moves, the Odoo admin (or FlitStack's implementation team) creates the custom fields on crm.lead identified in Step 1, and creates the crm.stage records corresponding to Captorra's intake statuses within the relevant crm.team. FlitStack delivers a setup YAML file and a step-by-step checklist so the Odoo side is ready before validation runs. Referral partner creation is also scoped here if the firm chooses to surface referral contacts in Odoo's partner list.
Resolve owners and create referral partner links
Captorra assigned-user email addresses are matched against Odoo res.users records. Unmatched owners are flagged in a pre-flight report — the firm either invites them to Odoo first or assigns their records to a fallback owner. Simultaneously, Captorra referral sources are resolved: if the firm chose the partner-link approach, FlitStack creates res.partner records for each unique referral source and links them to the corresponding crm.lead records.
Run sample migration with field-level diff
A representative slice of 100–500 Captorra leads migrates first, spanning a range of intake statuses, custom field values, and referral types. FlitStack generates a field-level diff comparing source CSV values against the Odoo crm.lead record values, highlighting any dropped custom fields, incorrect stage mappings, or owner-resolution failures. The diff report includes record counts, mismatch percentages, and a log of rejected values. If mapping gaps appear, FlitStack revises the field definitions and re-runs the sample set until the diff meets acceptance criteria. The firm reviews the diff and approves before the full run commits.
Execute full migration with delta-pickup and audit log
Full migration runs against Odoo's XML-RPC API, loading all remaining Captorra leads, contacts, and attachments. A delta-pickup window captures any records created or modified between the initial export and the final delta CSV run. FlitStack generates an audit log listing every record migrated, its Odoo ID, and any non-migrated fields with reasons. One-click rollback is available within 72 hours of go-live if reconciliation uncovers data quality issues.
Platform deep dives
Captorra
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 Captorra 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
Captorra: Not publicly documented.
Data volume sensitivity
Captorra 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 Captorra to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Captorra 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 Captorra
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.