CRM migration
Field-level mapping, validation, and rollback between Pro-Sales CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Pro-Sales CRM
Source
Odoo CRM
Destination
Compatibility
8 of 12
objects map 1:1 between Pro-Sales CRM and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Pro-Sales CRM to Odoo CRM is a structural migration that requires careful attention to two asymmetries between the platforms. First, Pro-Sales CRM lacks a documented public REST API, so data extraction relies on CSV exports that vary in completeness across accounts. We normalise those exports before writing to Odoo's XML-RPC API, handling field-type mismatches and date formatting along the way. Second, Odoo is a modular ERP; the CRM module is one app among dozens, and its Opportunity model uses a different stage probability schema than Pro-Sales CRM's per-stage weights. We extract the active stage configuration from Pro-Sales CRM, map it to Odoo's pipeline stages with probability percentages, and configure the destination pipeline in Odoo before migration begins. Tags, custom properties, owner assignments, and lifecycle stage metadata migrate as custom fields and tags. We do not migrate attachment files, workflow rules, or automations; we deliver a written inventory of these for the customer's admin to rebuild in Odoo Studio or via the Odoo Apps store.
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 Pro-Sales 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.
Pro-Sales CRM
Contact
Odoo CRM
Lead or Contact (split by lifecycle stage)
1:manyPro-Sales CRM stores all people records as Contact with a lifecycle stage property (Lead, Qualified, Customer, etc.). Odoo splits these into Lead (unqualified) and Contact (qualified, attached to Company). We evaluate the lifecycle stage on each Contact during migration: early-stage contacts map to Odoo Lead; contacts attached to a company with a closed-won or active deal map to Odoo Contact under the corresponding Company (resPartner). The original lifecycle stage and Pro-Sales CRM contact ID are preserved in custom fields on both the Lead and Contact for reconciliation.
Pro-Sales CRM
Company
Odoo CRM
Company (res.partner with company_type = company)
1:1Pro-Sales CRM Company records map directly to Odoo res.partner records with company_type = company. The company name becomes the partner display name, street/city/ country map to address fields, and industry/size map to custom Char fields in Odoo. The Company record is migrated before any child Contacts so the Contact-to-Company partner_id lookup is satisfied at insert time.
Pro-Sales CRM
Deal
Odoo CRM
Opportunity (crm.lead with type = opportunity)
1:1Pro-Sales CRM Deals map to Odoo crm.lead records with type = opportunity. The deal name becomes the opportunity name, deal value maps to Odoo's planned_revenue field, and close date maps to date_deadline. We extract the Pro-Sales CRM stage probability percentage and write it to a custom probability field; Odoo's built-in stage_probability is set via the pipeline stage configuration before migration.
Pro-Sales CRM
Pipeline Stage
Odoo CRM
Pipeline Stage (crm.stage)
lossyPro-Sales CRM allows custom stage names and per-stage probability weights per pipeline. We extract the active stage configuration from the source account during discovery and create Odoo pipeline stages with matching names and probability percentages before any Opportunity records are imported. If Pro-Sales CRM has multiple pipelines, we create separate Odoo CRM pipelines (sales teams in Odoo) to isolate them.
Pro-Sales CRM
Custom Properties
Odoo CRM
Custom Fields (ir.model.fields)
lossyPro-Sales CRM custom fields on Contacts and Deals migrate to Odoo custom fields created via Odoo Studio or the fields API before migration. Field types are mapped: text to char, number fields to float or integer, dropdown-style fields to selection fields, and date fields to date. Lookup relationships to other objects in Pro-Sales CRM become Many2one fields in Odoo with a corresponding res.partner or crm.lead record created first.
Pro-Sales CRM
Activities / Call Logs
Odoo CRM
Task (project.task) or Mail Message
1:1Pro-Sales CRM activity records (call logs, notes, completed tasks) map to Odoo project.task records for task-type activities or to mail.message records for notes and log entries within the crm.lead discuss thread. We preserve the original timestamp, owner assignment, and activity type by writing to the appropriate Odoo model. Call duration and disposition from Pro-Sales CRM become custom fields on the Odoo task or message record.
Pro-Sales CRM
Tag / Label
Odoo CRM
Tag (crm.tag)
1:1Pro-Sales CRM tag assignments on Contact and Deal records map to Odoo crm.tag records with many2many relink via crm.lead.res_partner_all_tags_rel. We deduplicate tag strings during extraction and create the Odoo tag records before linking them to opportunities and leads. Tags used for lead scoring or routing in Pro-Sales CRM are preserved as tag names with the score value migrated to a custom field on the Odoo record.
Pro-Sales CRM
Owner / User
Odoo CRM
User (res.users)
1:1Pro-Sales CRM assigns a single owner per Contact, Company, and Deal. We extract owner email addresses and match them against the destination Odoo User table. Owners without a matching Odoo User are placed in a reconciliation queue; the customer provisions missing Users before the migration phase begins. Unmapped owner references are reassigned to a designated fallback user nominated during scoping.
Pro-Sales CRM
User (active record)
Odoo CRM
User (res.users)
1:1Active Pro-Sales CRM user records are migrated as Contacts in Odoo only if the customer does not require them as Odoo system Users. If Odoo system access is required for the migrated users, we provision the res.users records and map their Pro-Sales CRM login email as the Odoo login. Role and permission differences between CRMs mean we apply a closest-fit group assignment rather than a 1:1 permission copy.
Pro-Sales CRM
Attachment
Odoo CRM
Not migrated
1:1Pro-Sales CRM's attachment export path is not documented in the available API references, and we have not confirmed a reliable extraction method for binary file data. We do not migrate attachments as part of standard scope. We flag this to customers during scoping and recommend they export attachments manually via Pro-Sales CRM's UI export function or that the customer requests a data export bundle from Pro-Sales CRM support before migration begins. If a confirmed export path becomes available during discovery, we reassess and migrate attachments as IrAttachment records in Odoo where feasible.
Pro-Sales CRM
Lifecycle Stage
Odoo CRM
Custom Char or Selection Field
lossyPro-Sales CRM lifecycle stage values (Lead, Marketing Qualified, Sales Qualified, Customer, etc.) are preserved as a custom field on Odoo crm.lead (for Lead records) and res.partner (for Contact records). We create a selection field with the exact stage values from the source account, defaulting to the stage value currently assigned on each record. This field serves as an audit trail and is used for reporting continuity in Odoo.
Pro-Sales CRM
Workflow / Automation
Odoo CRM
Not migrated
1:1Pro-Sales CRM workflow rules, automated assignments, and stage-triggered actions do not have a migratable representation. Odoo Studio offers automation rules and server actions as the equivalent capability, but we do not rebuild them during migration. We deliver a written inventory of every active Pro-Sales CRM automation with its trigger conditions, actions, and recommended Odoo Studio equivalent, and the customer's admin rebuilds them post-migration.
| Pro-Sales CRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | Lead or Contact (split by lifecycle stage)1:many | Fully supported | |
| Company | Company (res.partner with company_type = company)1:1 | Fully supported | |
| Deal | Opportunity (crm.lead with type = opportunity)1:1 | Fully supported | |
| Pipeline Stage | Pipeline Stage (crm.stage)lossy | Fully supported | |
| Custom Properties | Custom Fields (ir.model.fields)lossy | Mapping required | |
| Activities / Call Logs | Task (project.task) or Mail Message1:1 | Fully supported | |
| Tag / Label | Tag (crm.tag)1:1 | Fully supported | |
| Owner / User | User (res.users)1:1 | Fully supported | |
| User (active record) | User (res.users)1:1 | Fully supported | |
| Attachment | Not migrated1:1 | Fully supported | |
| Lifecycle Stage | Custom Char or Selection Fieldlossy | Fully supported | |
| Workflow / Automation | Not migrated1: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.
Pro-Sales CRM gotchas
Catalog name 'Pro-Sales CRM' is non-standard — vendor brands as SalesPro CRM
Add-on data migration and training fees add to year-one TCO
No documented public API
Per-user pricing scales linearly without enterprise discount tier publicly listed
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 Pro-Sales CRM export assessment
We audit the Pro-Sales CRM account to understand its configuration: Contact fields (standard and custom), Company fields, Deal fields and pipeline stages, activity types, tag taxonomy, owner list, and any lifecycle stage configuration. We then assess the CSV export completeness by running a trial export and comparing field coverage against our audit. If gaps exist, we request a full data export bundle from Pro-Sales CRM support. We deliver a written discovery report that lists every field, its Odoo equivalent, and any gaps in the export that require manual handling before migration proceeds.
Odoo schema design and pipeline configuration
We design the destination Odoo CRM schema before any data is written. This includes creating custom fields via Odoo Studio to receive Pro-Sales CRM custom properties, configuring pipeline stages with the correct probability percentages extracted from Pro-Sales CRM, setting up tags in crm.tag, and deciding on the Lead versus Contact split rule confirmed with the customer. The Odoo configuration is applied to a staging environment first for validation, and the customer signs off before production migration begins.
Data extraction and transform
We extract all records from Pro-Sales CRM via CSV export and normalise the data for Odoo's XML-RPC API. This includes date format standardisation (Pro-Sales CRM timestamps to ISO 8601), owner email resolution to Odoo User IDs, lifecycle stage mapping to the split rule, and custom field type conversion. Tags are deduplicated and written to crm.tag first so that many2many relationships can be established during the import phase. We produce a transform manifest listing every field, its source value, and the destination mapping applied.
Staging migration and reconciliation
We run a full migration into an Odoo staging environment using the same dependency order planned for production: Companies (res.partner), Contacts/Leads (with split applied), Opportunities (with pipeline and stage resolved), Activities and tasks, and tags. The customer reconciles record counts, spot-checks 20-30 records against the Pro-Sales CRM source, and confirms the pipeline stage mapping and custom field values. Any mapping corrections are made in the transform scripts and validated in staging before production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: Companies first (as parent records), then Leads and Contacts with the lifecycle-stage split applied and Company lookup resolved, then Opportunities with pipeline, stage, probability, and Owner resolved, then activity history and tasks, then tags. Each phase emits a row-count reconciliation report before the next phase begins. The Pro-Sales CRM account is placed in read-only mode during cutover to prevent new records from being created during the final delta migration.
Cutover, validation, and automation rebuild handoff
We freeze Pro-Sales CRM 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 Pro-Sales CRM automation inventory document to the customer's admin team for Odoo Studio rebuild. We support a one-week hypercare window where we resolve any reconciliation issues. We do not rebuild automations or workflows inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
Pro-Sales CRM
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Pro-Sales CRM and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Pro-Sales CRM and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Pro-Sales CRM and Odoo CRM.
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
Pro-Sales CRM: Not publicly documented.
Data volume sensitivity
Pro-Sales 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 Pro-Sales CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Pro-Sales 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 Pro-Sales 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.