CRM migration
Field-level mapping, validation, and rollback between Planports CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Planports CRM
Source
Odoo CRM
Destination
Compatibility
9 of 12
objects map 1:1 between Planports CRM and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Planports CRM to Odoo CRM is a migration from a WhatsApp-first, ad-lead-capture CRM built for Turkish and European SMBs to an open-source all-in-one ERP suite where the CRM module is one app among dozens. Planports organizes data around Deals, Quotes, Orders, and Kanban Process boards; Odoo uses the crm.lead model for both early-stage leads and converted opportunities, with a separate sale.order model for quotes and orders. We extract data via Planports Excel export or API (the $62/month paid add-on), map Planports pipeline stages to Odoo CRM stages, and load Contacts as res.partner records before Deals. WhatsApp conversation history cannot be fully extracted because it lives in Meta's infrastructure; we disclose this limitation during discovery and recommend re-authorizing the WhatsApp Business API channel in Odoo after migration. Industry-specific custom fields (health tourism referral sources, real estate property IDs, digital agency campaign tags) require an Odoo custom module to persist because Odoo does not expose a dynamic custom field UI outside of developer mode. Workflow automation rules in Planports are not exportable; we inventory them for the customer admin to rebuild in Odoo's automation framework post-migration.
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 Planports 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.
Planports CRM
Leads
Odoo CRM
crm.lead
1:1Planports Leads map to Odoo crm.lead records. We extract the full field set including source attribution (Meta Instant Form, Google Ads, TikTok), assignment rules, and status. The Planports lead score and custom fields (health tourism referral source, real estate lead type, digital agency campaign tag) transfer as custom Char or Selection fields in Odoo after the customer installs a custom module defining those fields on the crm.lead model.
Planports CRM
Contacts
Odoo CRM
res.partner
1:1Planports Contacts map to Odoo res.partner records. Standard fields (name, email, phone, company) migrate directly. The WhatsApp phone number stored on the Contact card transfers to res.partner's phone or mobile field, but the full WhatsApp conversation thread (stored in Meta's infrastructure) cannot be extracted via Planports export and is not migratable. We document the limitation and recommend re-authorizing the WhatsApp Business API channel in Odoo post-migration.
Planports CRM
Deals (Pipeline)
Odoo CRM
crm.lead (opportunity stage)
1:1Planports Deals map to Odoo crm.lead records in the opportunity stage. The Planports pipeline stage (e.g., Qualified Lead, Proposal Sent, Negotiation) maps to an Odoo CRM Stage ID that we configure during schema setup. Industry-specific pipeline stages (health tourism treatment stage, real estate viewing schedule stage) require custom stage creation in Odoo's CRM pipeline configuration before migration. We preserve the Planports deal value, expected close date, and loss reason as crm.lead fields.
Planports CRM
Pipeline Stage
Odoo CRM
crm.stage
lossyEach Planports pipeline becomes an Odoo CRM Stage within the Pipeline. We create stages in the same order, with matching probability percentages, and assign them to the CRM pipeline view. If Planports uses multiple parallel pipelines, we configure multiple Odoo CRM pipelines (or a single pipeline with stage groups) to match the customer's deal management structure. Color and sequence order are preserved.
Planports CRM
Quotes
Odoo CRM
sale.order
1:1Planports Quotes map to Odoo sale.order records in draft state. Line items migrate as sale.order.line records with product reference, quantity, and unit price. Approval status from Planports transfers as a note or custom state flag on the sale.order because Odoo's standard quote approval flow is a separate configuration. Quote validity dates migrate to sale.order.validity_date.
Planports CRM
Orders
Odoo CRM
sale.order (confirmed)
1:1Planports Orders map to Odoo sale.order records with state set to sale (confirmed). The linked Contact (Planports) maps to the sale.order partner_id (res.partner). Order status, quantities, and linked Deal reference migrate as order lines and a note field. Financial settlement and payment data may require accounting-specific review if the customer uses Odoo Accounting; we flag this for the customer's admin during scoping.
Planports CRM
Activities
Odoo CRM
mail.message + crm.activity
1:1Planports Activities (calls, emails, meetings, tasks) map to Odoo mail.message records linked to the parent crm.lead or res.partner. Call duration and disposition migrate to custom fields on the mail.message record. Meeting scheduling migrates to mail.event with start and end timestamps. Task status, priority, and due date migrate to the Odoo standard task structure. Activity timestamps are preserved for timeline ordering.
Planports CRM
Notes
Odoo CRM
mail.message
1:1Planports Notes attached to Contacts or Deals migrate as Odoo mail.message records with message_type = comment. The note body migrates as HTML-formatted mail.message.body. We link each note to the parent res.partner or crm.lead via res_id and model. If the customer uses Planports Notes as standalone records not attached to a parent, we map them to a dedicated Odoo note.pad configure note project or a generic mail.activity record.
Planports CRM
Process (Kanban)
Odoo CRM
project.task
1:manyPlanports Process boards map to Odoo project.task records under a dedicated project per board. Each Kanban column becomes a project.task.stage. Card records migrate as task records with the original stage assignment preserved. Conditional automation rules attached to columns do not migrate; we inventory every Process board rule during discovery and deliver a written handoff document for the customer admin to rebuild in Odoo Project automation. The Process board structure (column count, card order, assignment rules) is recreated manually in Odoo Project or via a project configuration script.
Planports CRM
Custom Fields
Odoo CRM
ir.model.fields (custom module)
lossyPlanports industry-specific custom fields (health tourism treatment packages, real estate property IDs and viewing schedules, digital agency campaign IDs and ad spend) require an Odoo custom module to persist because Odoo does not expose dynamic custom field creation on standard models without developer mode or a custom addon. We audit every custom field during the pre-migration data review, document the field name, data type, and picklist values, and deliver a field specification for the customer's Odoo developer to install as a custom module before the production data load. Without this module, custom field values are not migratable.
Planports CRM
Attachments and Files
Odoo CRM
ir.attachment
1:1Files uploaded to Planports Contact or Deal cards can be exported individually per record. Bulk attachment migration from Planports requires API access ($62/month add-on) and may be limited by plan tier. We extract files as binary blobs and attach them to the corresponding Odoo res.partner or crm.lead record via ir.attachment. If Planports attachment count is large (over 500 files), we batch the import and validate attachment-to-record linkage during the staging migration phase.
Planports CRM
Users and Owner Assignment
Odoo CRM
res.users
1:1Planports Users map to Odoo res.users records. We resolve owners by email match across Planports Contacts, Deals, Activities, and Notes. Any Planports user without a matching Odoo user account goes to a reconciliation queue for the customer's admin to provision before the production load. Deal ownership, activity attribution, and note ownership transfer as Odoo res.users references, preserving the original rep attribution on crm.lead and mail.message records.
| Planports CRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Leads | crm.lead1:1 | Fully supported | |
| Contacts | res.partner1:1 | Fully supported | |
| Deals (Pipeline) | crm.lead (opportunity stage)1:1 | Mapping required | |
| Pipeline Stage | crm.stagelossy | Fully supported | |
| Quotes | sale.order1:1 | Fully supported | |
| Orders | sale.order (confirmed)1:1 | Fully supported | |
| Activities | mail.message + crm.activity1:1 | Fully supported | |
| Notes | mail.message1:1 | Fully supported | |
| Process (Kanban) | project.task1:many | Mapping required | |
| Custom Fields | ir.model.fields (custom module)lossy | Mapping required | |
| Attachments and Files | ir.attachment1:1 | Mapping required | |
| Users and Owner Assignment | res.users1: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.
Planports CRM gotchas
Excel export does not include workflow automations
API key is a paid add-on — migration tooling costs extra
WhatsApp conversation history may not export cleanly
Minimum 3-user floor on all plans affects per-user pricing
Industry-specific custom fields require 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
Discovery and Planports API audit
We audit the source Planports account across plan tier, active pipeline count, industry-specific stage names, custom field inventory, workflow rule count, attachment volume, and user roster. We confirm API key status (paid $62/month add-on) and recommend whether the migration runs via API or Excel export. We identify the WhatsApp channel configuration and document the conversation history limitation explicitly in the discovery output. The discovery output is a written migration scope including object list, record counts, custom field matrix, and a Planports API or export access checklist.
Odoo stage schema design and custom module specification
We design the Odoo CRM stage schema in a staging Odoo database. This includes creating CRM Pipeline stages that map to the Planports pipeline stages (including any industry-specific stages), setting stage probability percentages, assigning stage colors, and configuring the Kanban card layout. We produce a separate custom field specification document listing every Planports custom field with its name, Odoo model, data type, and picklist values, which the customer's Odoo developer builds and installs before the production migration. The stage schema is validated in a Sandbox or staging Odoo instance before production deployment.
Sandbox migration and reconciliation
We run a full migration into an Odoo staging database using production-equivalent data volume. The customer reconciles record counts (Contacts in, Leads in, Deals in, Activities in), spot-checks 25-50 records against the Planports source, and validates that custom field values landed correctly in the Odoo crm.lead and res.partner records. The customer signs off the stage schema, custom field mapping, and Kanban column configuration before the production cutover window is scheduled. Any mapping corrections happen here, not in production.
Owner and user provisioning
We extract every distinct Planports user referenced on Contact, Deal, Activity, and Note records and match by email against the Odoo destination's res.users table. Any Planports user without a matching Odoo account is placed in a reconciliation queue for the customer admin to provision before the production load. Deal ownership, activity attribution, and note ownership transfer as Odoo res.users references, preserving the original rep attribution on crm.lead and mail.message. Migration cannot proceed past this step because OwnerId references are required on most standard objects.
Production migration in dependency order
We run the production migration in record-dependency order: res.partner records (Contacts first, from Planports Contacts), crm.lead records (Leads and Deals with stage and probability mapped), sale.order records (Quotes in draft, Orders confirmed), mail.message records (Activities, Notes, meeting records linked to parent crm.lead or res.partner), ir.attachment records (files linked to parent records), and project.task records (Planports Process boards mapped to Odoo Project tasks). Each phase emits a row-count reconciliation report before the next phase begins. The WhatsApp channel is re-authorized by the customer admin in Odoo as a post-migration step.
Cutover, validation, and automation handoff
We freeze Planports writes during cutover, run a final delta migration of any records modified during the migration window, then enable Odoo as the system of record. We deliver the Planports Workflow and Process Rule inventory document to the customer's admin team with Odoo Automated Action equivalents documented per rule. We support a one-week hypercare window where we resolve any record linkage issues raised by the sales team. We do not rebuild Planports workflow rules as Odoo Automated Actions inside the migration scope; that is a separate engagement or an internal admin rebuild task.
Platform deep dives
Planports 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 Planports 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
Planports CRM: Not publicly documented.
Data volume sensitivity
Planports 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 Planports CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Planports 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 Planports 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.