CRM migration
Field-level mapping, validation, and rollback between Goodlegal and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Goodlegal
Source
Odoo CRM
Destination
Compatibility
11 of 12
objects map 1:1 between Goodlegal and Odoo CRM.
Complexity
BStandard
Timeline
48–96 hours
Overview
Odoo CRM stores its core CRM objects — crm.lead and res.partner — in a PostgreSQL database, accessed via XML-RPC API. Goodlegal's data model centers on contacts, legal matters, document records, and activity logs tied to those matters. FlitStack AI maps Goodlegal contacts directly to Odoo res.partner records, preserving email addresses, phone numbers, company associations, and original create timestamps as custom datetime fields. Legal matter records from Goodlegal translate to Odoo crm.lead opportunities, with matter names becoming opportunity names, status values mapped to Odoo stage_id pick-list entries, and case numbers stored in a custom Char field. Document records and file attachments from Goodlegal migrate as Odoo attachments linked to the corresponding partner or lead record. Workflows, automation rules, and legal-specific configuration built in Goodlegal do not carry over — these must be rebuilt in Odoo Studio post-migration. We handle the data layer via Odoo's XML-RPC API, using batch inserts to manage rate limits, and run a field-level diff on a test slice before the full migration 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 Goodlegal 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.
Goodlegal
Goodlegal Contact
Odoo CRM
Odoo res.partner
1:1Goodlegal contact records map directly to Odoo res.partner. Email, phone, name, company association, and address fields carry over as standard Odoo partner fields. The partner_type field in Odoo (customer, company, individual) is set to 'customer' by default for all migrated contacts.
Goodlegal
Goodlegal Legal Matter
Odoo CRM
Odoo crm.lead
1:1Goodlegal legal matters translate to Odoo crm.lead records because Odoo does not have a native legal-matter object. The matter name becomes crm.lead.name, matter status maps to stage_id via value_mapping, and the Goodlegal case number is stored in a custom Char field Case_Number__c on the lead. Legal matter priority (high/medium/low) maps to a custom pick-list field on the lead.
Goodlegal
Goodlegal Matter Contact Link
Odoo CRM
Odoo crm.lead + res.partner link
many:1Goodlegal links a contact to a legal matter with a role (client, opposing counsel, witness). In Odoo, the primary contact lands on crm.lead.partner_id, and additional contacts with roles are added as crm.lead contacts via the partner's activity log or as a custom Many2many field that captures role text from the Goodlegal link.
Goodlegal
Goodlegal Document
Odoo CRM
Odoo ir.attachment
1:1Goodlegal document records (PDFs, Word files, templates) attach to the corresponding Odoo partner or crm.lead record via ir.attachment with res_model set to 'res.partner' or 'crm.lead' and res_id pointing to the migrated record ID. Original file names, create dates, and create_uid from Goodlegal are preserved in the Odoo attachment metadata.
Goodlegal
Goodlegal Activity Log
Odoo CRM
Odoo mail.message / crm.phonecall
1:1Goodlegal activity entries (logged calls, note entries, document events) map to Odoo's mail.message records linked to the crm.lead or res.partner by res_model and res_id. Call-type activities map to crm.phonecall with type='call', subject, and date_deadline preserved from the Goodlegal log. We also map meeting and task activities to mail.message with the appropriate subtype, preserving the original author and creation timestamp to maintain full audit trails.
Goodlegal
Goodlegal User / Team Member
Odoo CRM
Odoo res.users
1:1Goodlegal users are resolved in Odoo by matching email addresses to res.users records. Unmatched users are flagged before migration — your team either creates the Odoo user accounts first or assigns their records to a fallback user. Team assignments from Goodlegal map to Odoo crm_team_id membership.
Goodlegal
Goodlegal Custom Field (Contact)
Odoo CRM
Odoo Custom Field on res.partner
1:1Goodlegal custom properties on contact records (beyond name, email, phone) require Odoo Studio field creation on the res.partner model before migration. Each Goodlegal property type (text, number, date, pick-list) maps to the nearest Odoo field type. Pick-list values require value_mapping between Goodlegal options and the new Odoo selection field.
Goodlegal
Goodlegal Custom Field (Matter)
Odoo CRM
Odoo Custom Field on crm.lead
1:1Goodlegal custom fields on legal matters require Odoo custom fields on crm.lead. If the custom field tracks a legal-specific concept (e.g., jurisdiction, case type, billing arrangement), it becomes a Char, Selection, or Many2one field on the lead depending on data type. These must be pre-created in Odoo Studio before the migration run.
Goodlegal
Goodlegal Company / Organization
Odoo CRM
Odoo res.partner (type=company)
1:1Goodlegal organization records with type='company' map to Odoo res.partner records with is_company=True. The company name maps to name, domain/website to website, industry to industry_id via value_mapping, and employee count to employee_count. The individual contacts at that company link via child_ids on the company partner record.
Goodlegal
Goodlegal Workflow / Automation Rule
Odoo CRM
Odoo Studio Automation
1:1Goodlegal automation rules (matter-triggered notifications, status-change alerts, document auto-filing) do not migrate. They must be rebuilt as Odoo Studio Automations or server actions post-migration. We export the Goodlegal rule definitions as a structured reference document your Odoo admin can use to reconstruct the logic in Odoo Studio's trigger-and-action builder.
Goodlegal
Goodlegal Integration Connections
Odoo CRM
Odoo Integration Configurations
1:1Goodlegal third-party integrations (e-signature providers, document storage, billing systems) have no direct Odoo equivalent and must be reconfigured. E-signature integrations (DocuSign, PandaDoc) map to Odoo's Sign module. Document storage integrations map to Odoo Documents. Billing integrations map to Odoo Account.
Goodlegal
Goodlegal Internal Notes
Odoo CRM
Odoo mail.message (note subtype)
1:1Goodlegal internal notes on contacts and matters migrate as Odoo mail.message records with subtype='note' — visible in the Odoo chatter on the res.partner or crm.lead form. Original create date and author are preserved. Rich-text formatting is simplified to plain text where necessary.
| Goodlegal | Odoo CRM | Compatibility | |
|---|---|---|---|
| Goodlegal Contact | Odoo res.partner1:1 | Fully supported | |
| Goodlegal Legal Matter | Odoo crm.lead1:1 | Fully supported | |
| Goodlegal Matter Contact Link | Odoo crm.lead + res.partner linkmany:1 | Fully supported | |
| Goodlegal Document | Odoo ir.attachment1:1 | Fully supported | |
| Goodlegal Activity Log | Odoo mail.message / crm.phonecall1:1 | Fully supported | |
| Goodlegal User / Team Member | Odoo res.users1:1 | Fully supported | |
| Goodlegal Custom Field (Contact) | Odoo Custom Field on res.partner1:1 | Fully supported | |
| Goodlegal Custom Field (Matter) | Odoo Custom Field on crm.lead1:1 | Fully supported | |
| Goodlegal Company / Organization | Odoo res.partner (type=company)1:1 | Fully supported | |
| Goodlegal Workflow / Automation Rule | Odoo Studio Automation1:1 | Fully supported | |
| Goodlegal Integration Connections | Odoo Integration Configurations1:1 | Fully supported | |
| Goodlegal Internal Notes | Odoo mail.message (note subtype)1: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.
Goodlegal gotchas
Audit logs are not externally accessible
Limited public API documentation
Document creation workflow inconsistencies by type
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
Data audit and Odoo schema pre-creation
We audit your Goodlegal data export — contacts, legal matters, document metadata, and activity logs — and produce a field-level mapping document. For each Goodlegal custom field, we produce a Odoo Studio field-creation instruction (field name, type, pick-list values). Your admin creates these fields in Odoo before we begin the migration run so the schema is ready for data. We also validate data types, enforce referential integrity, and produce a pre-migration validation report that highlights any missing foreign-key targets before mapping begins.
User and team resolution
Goodlegal users and team assignments are matched against Odoo res.users by email address. Unmatched users are flagged in a pre-flight report — your team creates the Odoo user accounts or assigns a fallback user before migration. Odoo crm.team records that correspond to Goodlegal teams are either pre-created by your admin or created by FlitStack during this step so stage_id value_maps resolve correctly.
Sample migration with field-level diff
A representative slice — typically 100–300 records spanning contacts, legal matters, and a sample of attachments — migrates first. We generate a field-level diff showing every mapped field value in Goodlegal alongside the corresponding Odoo field value after migration. You verify that matter status-to-stage mapping, custom field values, and contact-company links are correct before the full run commits. During this phase we also check for orphaned records, confirm that partner and lead IDs resolve correctly, and validate that stage-to-status mapping aligns with each Odoo team's pipeline configuration.
Full migration with delta-pickup window
The full record set migrates via Odoo's XML-RPC API using tuned batch sizes to respect rate limits. After the main run, a delta-pickup window (24–48 hours) captures any Goodlegal records created or modified during the cutover period. All operations are written to an audit log. If reconciliation fails, one-click rollback reverts the Odoo database to its pre-migration state. Each batch is retried automatically on HTTP 429 responses with exponential backoff, and we log every RPC call to enable traceability and post-run reconciliation of all migrated relationships.
Platform deep dives
Goodlegal
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 Goodlegal 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
Goodlegal: Not publicly documented.
Data volume sensitivity
Goodlegal 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 Goodlegal to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Goodlegal 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 Goodlegal
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.