CRM migration
Field-level mapping, validation, and rollback between PromoXcrm and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
PromoXcrm
Source
Odoo CRM
Destination
Compatibility
11 of 13
objects map 1:1 between PromoXcrm and Odoo CRM.
Complexity
BStandard
Timeline
1-3 weeks
Overview
PromoXcrm uses a vertical data model built for promotional products distributors, including Commission Records, Projects tied to promo orders, and client-facing Presentations. Odoo CRM does not model these as standard objects, so we export them as structured custom fields on Odoo's crm.lead, project.project, and ir.attachment records, and document the field-creation steps required in Odoo Studio before import. PromoXcrm's near-zero public API documentation means we conduct a direct credential probe at scoping to establish safe read thresholds; if the API is unreliable or inaccessible, we fall back to CSV export where available and manual record extraction where not. We sequence the migration to preserve pipeline stage history and attachment references, resolve PromoXcrm Owner emails against Odoo Users during import, and deliver a written inventory of active task automations requiring rebuild in Odoo Server Actions.
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 PromoXcrm 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.
PromoXcrm
Lead
Odoo CRM
crm.lead
1:1PromoXcrm Lead records with customizable pipeline stage names (e.g., Quote Sent, Artwork Approved, Order Confirmed) map to Odoo crm.lead records. Stage names migrate as custom stage values on the crm.lead.stage model using a mapping table built during scoping. Lead source, owner email, and any promo-specific lead custom fields transfer to corresponding char, many2one, or selection fields on crm.lead.
PromoXcrm
Client (Contact)
Odoo CRM
res.partner
1:1PromoXcrm Client records map to Odoo res.partner. Standard fields (name, email, phone, company) migrate directly. PromoXcrm's client-facing contact types (end customer vs distributor) map to res.partner partner_latitude/longitude custom fields or tags. Any promo-specific custom properties on the Client record require pre-creation in Odoo Studio before import.
PromoXcrm
Pipeline
Odoo CRM
crm.lead.stage + crm.tag
lossyPromoXcrm's customizable pipelines with stage names tailored to promo workflows become Odoo crm.lead.stage records. We create one stage sequence per PromoXcrm pipeline during Odoo configuration. Pipeline-to-pipeline mapping is preserved as a custom selection field pipeline_name__c on crm.lead so that multi-pipeline data separates cleanly in Odoo's Kanban view.
PromoXcrm
Project
Odoo CRM
project.project + crm.lead custom fields
1:manyPromoXcrm Projects representing individual promo orders or campaigns map to Odoo project.project records linked to crm.lead via a many2one relationship. Project dates, status, associated contacts, and order details transfer to custom fields on project.project. If the PromoXcrm Project has a deal-like financial value, we also create a corresponding crm.lead with the projected revenue and link it to the project.task records for pipeline reporting.
PromoXcrm
Task
Odoo CRM
project.task
1:1PromoXcrm Task records with assignees, due dates, and status map to Odoo project.task. Task-to-project linkage transfers as project_id. Automated task-creation rules from PromoXcrm (if-this-then-that logic) do not migrate; we document all active automations during discovery and provide an Odoo Server Action equivalent for each to be rebuilt by the customer's admin.
PromoXcrm
Commission Record
Odoo CRM
crm.lead custom float fields + product.pricelist rules
1:1PromoXcrm Commission Records track rep or distributor commissions on individual promo orders and have no standard Odoo equivalent. We export these as structured CSV and map commission amount, rate, and associated rep to custom float fields commission_amount__c and commission_rate__c on crm.lead, plus a many2one to res.partner (the rep). The customer's admin creates these fields in Odoo Studio before import; commission recalculation logic requires a separate Odoo product.pricelist configuration post-migration.
PromoXcrm
Presentation
Odoo CRM
ir.attachment + project.task
1:1PromoXcrm Presentations are internal or client-facing sales assets stored within the CRM. We export available file references (file names, URLs, metadata) from PromoXcrm and re-link them post-migration as ir.attachment records attached to the corresponding crm.lead or project.task via res_id/res_model. Actual file hosting transfer depends on PromoXcrm's export capabilities; if direct file export is unavailable, we document the file list so the customer's admin can re-upload to Odoo's document management or Portal.
PromoXcrm
Custom Object
Odoo CRM
Custom model via ir.model
1:1PromoXcrm's accessible custom objects (confirmed via web-service API) map to Odoo custom models created via Settings > Technical > Database Structure > Models. We pre-create the destination schema including all custom fields, field types, and any lookup relationships to crm.lead or res.partner during the Odoo configuration phase. Custom object naming follows Odoo's model convention (x_customobjectname without spaces). Data migrates via Odoo's data import CSV with the custom model as target.
PromoXcrm
Owner
Odoo CRM
res.users
1:1PromoXcrm Owners referenced on Lead, Client, Project, and Task records map to Odoo res.users by email match. Owners without a matching Odoo User go to a reconciliation queue for the customer's admin to provision before record import resumes. If PromoXcrm Owner records include role or territory data, we store this in a custom char field owner_role__c on crm.lead.
PromoXcrm
Product (Promo Items)
Odoo CRM
product.product
1:1PromoXcrm's product catalog items used in quoting map to Odoo product.product records. Product name, SKU (product_code), and list price transfer directly. If PromoXcrm stores supplier information for promo items, this maps to Odoo's seller_ids on product.product. Product categories map to product.category.
PromoXcrm
Engagement: Note
Odoo CRM
mail.message
1:1PromoXcrm internal notes on Leads, Clients, or Projects map to Odoo mail.message records linked to the corresponding crm.lead or res.partner via res_id and model. Note body migrates as HTML content with any file attachments transferred as mail.message.attachment records.
PromoXcrm
Engagement: Task (manual)
Odoo CRM
project.task
1:1PromoXcrm manually created task engagements (distinct from automated task rules) map to Odoo project.task with Stage, assignees (user_ids), and date_deadline preserved. Activity timeline ordering is preserved by setting create_date to the original PromoXcrm timestamp.
PromoXcrm
Integrations (Xero, Stripe, Mailchimp)
Odoo CRM
N/A
1:1PromoXcrm integrations with Xero, Stripe, and Mailchimp are native connection configurations that do not export. We document which integrations were active during discovery so the customer's admin can configure equivalent Odoo native modules (account_xero, payment_stripe, mass_mailing_mailchimp) or third-party connectors from the Odoo Apps afterward.
| PromoXcrm | Odoo CRM | Compatibility | |
|---|---|---|---|
| Lead | crm.lead1:1 | Fully supported | |
| Client (Contact) | res.partner1:1 | Fully supported | |
| Pipeline | crm.lead.stage + crm.taglossy | Fully supported | |
| Project | project.project + crm.lead custom fields1:many | Fully supported | |
| Task | project.task1:1 | Fully supported | |
| Commission Record | crm.lead custom float fields + product.pricelist rules1:1 | Fully supported | |
| Presentation | ir.attachment + project.task1:1 | Fully supported | |
| Custom Object | Custom model via ir.model1:1 | Fully supported | |
| Owner | res.users1:1 | Fully supported | |
| Product (Promo Items) | product.product1:1 | Fully supported | |
| Engagement: Note | mail.message1:1 | Fully supported | |
| Engagement: Task (manual) | project.task1:1 | Fully supported | |
| Integrations (Xero, Stripe, Mailchimp) | N/A1:1 | Not 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.
PromoXcrm gotchas
No public API documentation or rate limit specification
Promo-specific objects have no direct equivalent in generic CRMs
Pricing inconsistency across sources may signal tier complexity
Workflow automations and task rules do not migrate
Vendor viability and support responsiveness are unverified
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 PromoXcrm credential probe
We audit PromoXcrm across all active objects (Leads, Clients, Pipelines, Projects, Tasks, Presentations, Commission Records, Custom Objects), confirming record counts, field schemas, and attachment storage locations. We simultaneously attempt a direct API probe using the provided credentials to establish whether a REST or web-service API is accessible and what read rate is safe. If the API probe fails or returns incomplete data, we document the gap and activate the CSV export fallback plan. We also verify the customer's PromoXcrm subscription tier to confirm which features were active.
Odoo destination configuration
We design the destination schema in the customer's Odoo instance (Sandbox or staging environment). This includes creating custom fields on crm.lead for Commission Records (commission_amount__c, commission_rate__c), custom fields for PromoXcrm pipeline stage mapping (pipeline_name__c, promo_order_value__c), project.project records pre-linked to crm.lead for Projects, and any custom models required for PromoXcrm Custom Objects via Settings > Technical > Database Structure > Models. We configure crm.lead stages to match the PromoXcrm pipeline stage names provided during scoping. Odoo Studio is used for field creation if the customer has Enterprise; Community deployments use Python model edits or CSV data files.
Sandbox migration and reconciliation
We run a full migration into an Odoo Sandbox using production-like data volume. The customer's Odoo admin reconciles record counts (Leads in, Clients in, Projects in, Tasks in, Commission Records in), spot-checks 25-50 random records against the PromoXcrm source, and validates that pipeline stages, attachment links, and owner assignments transferred correctly. Any field mapping corrections, stage name adjustments, or missing custom fields are resolved here before production migration begins.
Owner and User reconciliation
We extract every distinct PromoXcrm Owner referenced on Lead, Client, Project, and Task records and match by email against the Odoo destination's res.users table. Owners without a matching Odoo User go to a reconciliation queue. The customer's admin provisions any missing Odoo Users before record import resumes. This step is required because Owner references on crm.lead (user_id field) and project.task (user_ids field) must be valid res.users IDs at the time of insert.
Production migration in dependency order
We run production migration in record-dependency order: res.users provisioning validated first (manual), res.partner (Clients), crm.lead (Leads with pipeline stage mapping), project.project (Projects linked to crm.lead), project.task (Tasks with project_id resolved), ir.attachment (Presentation file references re-linked to crm.lead and project.task), mail.message (Note engagements), custom Commission Record data (custom fields on crm.lead), and Custom Objects (via custom model CSV import). Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and automation rebuild handoff
We freeze PromoXcrm writes during cutover, run a final delta migration of any records modified during the migration window, then enable Odoo CRM as the system of record. We deliver the PromoXcrm automation inventory document to the customer's admin team with Odoo Server Action equivalents mapped for each active rule. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild PromoXcrm task automations as Odoo Server Actions inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
PromoXcrm
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 PromoXcrm and Odoo CRM.
Object compatibility
2 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
PromoXcrm: Not publicly documented.
Data volume sensitivity
PromoXcrm 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 PromoXcrm to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your PromoXcrm 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 PromoXcrm
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.