CRM migration
Field-level mapping, validation, and rollback between Followup CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Followup CRM
Source
Odoo CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Followup CRM and Odoo CRM.
Complexity
BStandard
Timeline
24–72 hours
Overview
Followup CRM organizes data around Contacts, Companies, Deals, Goals, Tasks, and Follow-ups, with a construction-focused feature set including bid tracking, quota management, and team performance dashboards. Odoo CRM consolidates contacts and companies into a single res.partner model with an 'Is a Company' flag, manages opportunities in crm.lead with stages scoped per crm.team, and logs activities in the mail.message / mail.activity system. The migration must translate Followup CRM's separate Contact and Company objects into Odoo's unified partner model, map deal stages to Odoo's crm.stage configuration per team, and recreate Followup CRM's Goals, bid volume tracking, and quota fields as custom fields on crm.lead before importing. Activity history (calls, emails, notes) migrates as chatter messages with original timestamps and owners preserved. FlitStack runs the transfer via Odoo's XML-RPC API, validates field-level mapping against a sample slice before committing, and captures a delta window during cutover to pick up in-flight records modified in Followup CRM during the migration run.
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 Followup CRM 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.
Followup CRM
Contact
Odoo CRM
res.partner
1:1Followup CRM Contact maps to Odoo res.partner with the 'Is a Company' flag set to FALSE. The contact's primary Company link in Followup CRM becomes a 'Related Company' res.partner record that the contact references via parent_id. Multi-company contacts collapse to one primary company link; additional companies surface as Related Companies in Odoo.
Followup CRM
Company
Odoo CRM
res.partner
1:1Followup CRM Company maps to Odoo res.partner with 'Is a Company' set to TRUE. The company name maps to the partner name field; domain/website maps to website; industry and employee count require Odoo custom fields if those values exist in Followup CRM. Parent-child company hierarchies in Followup CRM map to parent_id on res.partner.
Followup CRM
Deal / Project
Odoo CRM
crm.lead
1:1Followup CRM Deal maps directly to Odoo crm.lead (opportunity). Deal name maps to crm.lead name; deal amount maps to expected_revenue; deal stage maps to crm.stage via value mapping per pipeline; close date maps to date_deadline. The crm.lead type field is set to 'opportunity' for deal records.
Followup CRM
Pipeline
Odoo CRM
crm.team + crm.stage
1:1Followup CRM Pipeline maps to Odoo crm.team (sales team) with its own crm.stage records. Each pipeline stage name in Followup CRM becomes a crm.stage record within that team, with sequence order and probability percentage configured to match Followup CRM's stage settings. Teams without a dedicated pipeline in Odoo default to the base Sales Team.
Followup CRM
Pipeline Stage
Odoo CRM
crm.stage
1:1Stage names are mapped value-by-value from Followup CRM to Odoo crm.stage records within the target crm.team. Stage probability percentages are applied to the Odoo stage record. Stage-entered dates are preserved in a custom datetime field (Stage_Entered_Date__c) on crm.lead for historical reporting continuity.
Followup CRM
Goals
Odoo CRM
Custom fields on crm.lead + custom reporting
1:1Followup CRM Goals track bid volume targets, revenue quotas, and team performance. These have no Odoo CRM native equivalent. FlitStack migrates Goals data as custom fields on crm.lead (e.g., Bid_Volume_Target__c, Quota_Amount__c) and provides a reporting setup guide for Odoo's pivot and graph views to recreate the Goals dashboard.
Followup CRM
Task / Follow-up
Odoo CRM
mail.activity
1:1Followup CRM Tasks and Follow-ups map to Odoo mail.activity records linked to the target res.partner or crm.lead. Activity type (call, email, meeting, todo) maps to Odoo's activity_type_id. Original due dates, completion dates, and assigned owners are preserved in the activity fields.
Followup CRM
Email / Call Log
Odoo CRM
mail.message
1:1Followup CRM email and call logs migrate as Odoo mail.message records on the crm.lead or res.partner chatter. The message body carries the email content or call notes; author_id is resolved by email match against Odoo res.users. Original timestamps are preserved via the message's date field.
Followup CRM
Attachment / File
Odoo CRM
ir.attachment
1:1File attachments on Followup CRM records are downloaded and re-uploaded to Odoo's ir.attachment model, linked to the target res.partner or crm.lead via res_model and res_id. Odoo's attachment storage (database or file system) is configured at the Odoo instance level before migration runs.
Followup CRM
User / Owner
Odoo CRM
res.users
1:1Followup CRM owner assignments resolve against Odoo res.users by email match. Unmatched owners are flagged in the pre-migration audit; the client either invites them to Odoo first or assigns their records to a fallback user (typically admin). No record lands in Odoo without a valid OwnerId.
Followup CRM
Custom Fields
Odoo CRM
Custom fields (x_defields) on res.partner / crm.lead
1:1Followup CRM System Custom Fields on Contacts, Companies, and Deals require pre-creation in Odoo Settings > Technical > Custom Fields before data import. FlitStack exports the full field-definition map (field name, type, pick-list values) so Odoo admins can create matching fields. The migration loads data into those fields during the import phase.
Followup CRM
Note / Comment
Odoo CRM
mail.message
1:1Followup CRM notes and comments migrate as Odoo chatter messages (mail.message) on the related res.partner or crm.lead. The note body becomes the message body; author and timestamp are preserved. Notes without a parent record are attached to the most-recently related contact or deal.
| Followup CRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner1:1 | Fully supported | |
| Deal / Project | crm.lead1:1 | Fully supported | |
| Pipeline | crm.team + crm.stage1:1 | Fully supported | |
| Pipeline Stage | crm.stage1:1 | Fully supported | |
| Goals | Custom fields on crm.lead + custom reporting1:1 | Fully supported | |
| Task / Follow-up | mail.activity1:1 | Fully supported | |
| Email / Call Log | mail.message1:1 | Fully supported | |
| Attachment / File | ir.attachment1:1 | Fully supported | |
| User / Owner | res.users1:1 | Fully supported | |
| Custom Fields | Custom fields (x_defields) on res.partner / crm.lead1:1 | Mapping required | |
| Note / Comment | mail.message1: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.
Followup CRM gotchas
No documented API or bulk export endpoint
Duplicate follow-up artifacts in contact records
Annual contract pricing creates migration timing pressure
Custom fields require explicit field-level mapping
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
Audit Followup CRM data and export field-definition map
FlitStack connects to Followup CRM via scoped read access and exports a full inventory of Contacts, Companies, Deals, Tasks, Follow-ups, and Attachments. We also extract the System Custom Fields list (field name, type, pick-list values) so Odoo admins can create matching custom fields in Odoo Settings > Technical > Custom Fields before the migration loads data. The audit report flags records without owners, contacts without companies, and deals without contacts — these receive a pre-defined fallback rule (e.g., unmatched owners default to admin; orphaned contacts attach to an 'Unassigned' company record).
Create Odoo crm.team and crm.stage structure
Before any data lands, Odoo admins (or FlitStack, with admin credentials) create crm.team records for each Followup CRM pipeline and build the corresponding crm.stage chains under each team. Stage names, sequence order, and probability percentages are configured to match Followup CRM's pipeline definitions. Custom fields identified in the audit (Goals fields, bid tracking fields, any industry-specific custom properties) are created as fields on res.partner and crm.lead. This step ensures the Odoo schema is ready before validation begins — no records import into a stage that doesn't exist yet.
Migrate Companies and Contacts to res.partner
The migration begins with Companies (mapped to res.partner with company_type = 'company') followed by Contacts (mapped to res.partner with company_type = 'person' and parent_id pointing to the migrated Company). Email addresses are used to detect duplicates and merge matching records. Custom field values for Company-type partners load into the pre-created custom fields. The import order respects Odoo's foreign-key constraints — res.partner records must exist before child records can reference them via parent_id.
Migrate Deals to crm.lead and activity history to chatter
Followup CRM Deals import into crm.lead with stage_id pointing to the pre-created crm.stage record within the correct crm.team, and partner_id pointing to the migrated res.partner. Goals-related fields load into the custom crm.lead fields. Tasks, Follow-ups, Emails, and Calls convert to mail.activity and mail.message records attached to the corresponding crm.lead and res.partner, preserving original timestamps and author attribution. Attachments download from Followup CRM and re-upload to Odoo ir.attachment linked to the target record.
Run sample migration with field-level diff and delta pickup
A representative sample (typically 100–500 records spanning contacts, companies, deals, and activities) migrates first. FlitStack generates a field-level diff report comparing source values against Odoo field values, covering stage mapping, owner resolution, custom field population, and activity attribution. The client reviews the diff and approves or flags corrections before the full run commits. After full migration, a delta-pickup window (24–48 hours) captures any Followup CRM records modified during the cutover. Audit log records every operation, and one-click rollback is available if reconciliation finds data discrepancies beyond acceptable thresholds.
Platform deep dives
Followup CRM
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 Followup CRM 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
Followup CRM: Not publicly documented.
Data volume sensitivity
Followup CRM 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 Followup CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Followup CRM 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 Followup CRM
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.