CRM migration
Field-level mapping, validation, and rollback between Workpex and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Workpex
Source
Odoo CRM
Destination
Compatibility
11 of 14
objects map 1:1 between Workpex and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Workpex to Odoo CRM addresses the core limitation that drives most departures: Workpex has no documented public API, which makes programmatic data export, integrations, and business intelligence effectively impossible. Odoo CRM is the number-one open-source CRM by market share, serving over five million users with an integrated ERP ecosystem that Workpex cannot match. The migration challenge is extracting data from Workpex without an API — we coordinate CSV exports and database access where available, audit every field and object present in your account, and map Workpex's lead-centric model to Odoo's Contact and Lead objects with the original status and source preserved. Follow-up reminders, call records, WhatsApp interaction logs, and GPS tracking data require explicit field-level mapping because Workpex does not expose these in its standard export. We do not migrate automations, workflows, or WhatsApp marketing sequences as code; we deliver a written inventory of these for your admin to rebuild in Odoo Studio or with an Odoo implementation partner.
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 Workpex 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.
Workpex
Lead
Odoo CRM
Lead
1:1Workpex Leads map directly to Odoo CRM Lead records. We preserve the lead status (New, Contacted, Qualified, Lost), source field (Manual, Website, Facebook, Referral), assigned owner, and creation timestamp. Any Workpex custom lead properties (regional flags, product interest, budget range) are discovered during scoping and mapped to Odoo custom fields on crm.lead. If Workpex lead records include notes or descriptions, these migrate as the Lead description field.
Workpex
Contact
Odoo CRM
Contact
1:1Workpex Contacts map to Odoo CRM Contacts. We preserve name, phone, email, address, and company association. Workpex stores Contacts linked to Leads — we migrate Contact records independently and note any source_lead_id for manual association review in Odoo since Odoo does not maintain a native Lead-to-Contact reference on the Contact object. Mobile and secondary phone numbers map to Odoo's phone and mobile fields.
Workpex
Company
Odoo CRM
Company
1:1Workpex Companies (Accounts) map to Odoo CRM Companies with name, website, street address, city, state, country, and phone preserved. Odoo uses res.partner with the company_flag set for the company-level record. We resolve the Workpex Company-to-Contact associations so that each Contact in Odoo has the correct company_id parent link. Custom company fields from Workpex migrate as custom fields on res.partner.
Workpex
Deal
Odoo CRM
Opportunity
1:1Workpex Deals map to Odoo CRM Opportunities (crm.lead with type='opportunity'). The Workpex deal name, amount, expected close date, stage, and owner migrate. Stage names from Workpex are mapped to Odoo stage names within the designated Sales Team; stage probabilities are approximated from Workpex if available or set to Odoo defaults and flagged for admin review. Lost reason and notes migrate to Odoo's lost reason and description fields.
Workpex
Pipeline Stage
Odoo CRM
Stage + Sales Team
lossyWorkpex pipeline stages map to Odoo CRM Stages within the default Sales Team or a new Sales Team created to match the Workpex pipeline structure. Each stage receives a sequence order, a probability percentage, and a fold status (whether open deals in that stage collapse in the kanban view). If Workpex has deprecated or custom stages, we flag them during scoping and map them to the nearest Odoo equivalent or a custom stage the admin creates before import.
Workpex
Task
Odoo CRM
Task
1:1Workpex Tasks map to Odoo Project Tasks if Odoo Project is installed, or to Odoo CRM Tasks (attached to the Lead or Opportunity via crm.activity). We preserve task name, description, due date, assignee, and open/closed status. If the Workpex task is linked to a specific lead or deal, we create the corresponding crm.activity record in Odoo rather than a standalone task so that the activity appears in the CRM timeline.
Workpex
Follow-up Reminder
Odoo CRM
Reminder (crm.activity)
1:1Workpex Follow-up Reminders tied to Leads and Contacts migrate as Odoo CRM Activities (mail.activity) of type Reminder. We preserve the reminder date, the associated Lead or Contact, the assignee, and the reminder description text. Odoo displays these as the Next Activity Date and type on the crm.lead form. If Workpex reminder records include a flag for overdue or stagnant leads, we set the Odoo activity_deadline accordingly and flag the record in the migration report.
Workpex
Call Record
Odoo CRM
Call Activity + Attachment
1:1Workpex call metadata (direction, duration, timestamp, disposition, recording URL if available) migrates as an Odoo CRM Activity of type Call attached to the related Lead or Contact. Call duration and disposition map to custom fields on crm.activity (call_duration, call_disposition). If Workpex exports include audio recordings, we store them as Odoo ir.attachment records linked to the activity. We note that Odoo requires the VoIP or a third-party telephony module (Asterisk, Twilio via connector) to log calls natively in the Activity type picker; without it, calls land as custom-activity-type records.
Workpex
User / Owner
Odoo CRM
User
1:1Workpex Users and Owners are mapped to Odoo Users by email address match. We extract every distinct owner referenced on Leads, Contacts, Deals, Tasks, and Activities and match against the Odoo destination's res.users table. Any Workpex owner without a matching Odoo User is placed in a reconciliation queue for the customer to provision before record import resumes. Inactive Workpex owners map to inactive Odoo Users to preserve historical assignment.
Workpex
Custom Fields
Odoo CRM
Custom Fields
lossyWorkpex custom fields on Leads and Contacts are discovered during the pre-migration audit and mapped to Odoo custom fields on crm.lead and res.partner. Field data types are preserved where possible (text to char, number to float or integer, date to date, checkbox to boolean). Multi-select or tag-style custom fields in Workpex map to Odoo many2many tags or char fields depending on the target configuration chosen during scoping. Custom fields are created in Odoo via Settings > Technical > Custom Fields before data import begins.
Workpex
WhatsApp Interactions
Odoo CRM
Mail Message / Attachment
1:1Workpex WhatsApp message logs and marketing interaction data export as Odoo Mail Message records on the related Lead or Contact. We preserve the message timestamp, direction (inbound/outbound), and text content. Rich media (images, PDFs sent via WhatsApp) migrate as ir.attachment records linked to the message. Odoo's WhatsApp Integration app (Enterprise) or a third-party WhatsApp connector can re-link these as threaded conversations post-migration if the customer enables the integration.
Workpex
Attachment
Odoo CRM
ir.attachment
1:1File attachments associated with Leads, Deals, or Tasks in Workpex export as Odoo ir.attachment records linked to the corresponding crm.lead or document record. We map the original filename, file type, and binary content. Large files (>25 MB) may exceed Odoo's default attachment storage limits and are flagged for the customer to configure Odoo's attachment storage (file system, Amazon S3, or Google Drive) before migration. Unsupported binary formats are flagged for manual upload.
Workpex
GPS Tracking Data
Odoo CRM
Custom Fields or Configuration
lossyWorkpex GPS tracking data for field sales teams has an undocumented data structure. We discover the GPS record schema during the scoping phase and map it to Odoo custom fields on crm.lead (latitude, longitude, last_location_timestamp) or store as structured text if the format is proprietary. If GPS data is stored in a binary or proprietary format, we flag it for manual review and export and document the latitude/longitude extraction steps for the customer's admin.
Workpex
Facebook Ad Data
Odoo CRM
Campaign Record + Custom Fields
1:1Facebook Ad management data stored in Workpex (campaign name, lead source, ad set, creative, attribution window) exports as Odoo CRM Campaign records with custom fields for the Facebook-specific dimensions. We map the campaign name and lead source attribution; the customer configures the Odoo Marketing app if they want campaign tracking emails to flow back into Odoo. Attribution data (UTM parameters, conversion timestamps) is preserved in custom fields and flagged for reporting reconstruction.
| Workpex | Odoo CRM | Compatibility | |
|---|---|---|---|
| Lead | Lead1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Pipeline Stage | Stage + Sales Teamlossy | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Follow-up Reminder | Reminder (crm.activity)1:1 | Fully supported | |
| Call Record | Call Activity + Attachment1:1 | Fully supported | |
| User / Owner | User1:1 | Fully supported | |
| Custom Fields | Custom Fieldslossy | Mapping required | |
| WhatsApp Interactions | Mail Message / Attachment1:1 | Mapping required | |
| Attachment | ir.attachment1:1 | Fully supported | |
| GPS Tracking Data | Custom Fields or Configurationlossy | Fully supported | |
| Facebook Ad Data | Campaign Record + Custom Fields1:1 | Mapping required |
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.
Workpex gotchas
No public API for automated data export
No bulk export mechanism for large datasets
Custom fields and WhatsApp data not visible in standard export
GPS tracking data structure undocumented
Migration timing depends on manual export coordination
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
Pre-migration audit and export coordination
We audit every object and field present in the Workpex account: Leads, Contacts, Companies, Deals, Tasks, Follow-up Reminders, Call Records, Pipeline Stages, Users, Custom Fields, WhatsApp interactions, GPS tracking, and Attachments. Because Workpex has no API, we provide a detailed export checklist specifying which objects require UI-based CSV export versus database access, the file naming convention, and the export order to prevent dependency conflicts. We validate record counts from each export against the UI totals before mapping begins. Any export that times out or produces an incomplete file triggers a recalculation of the migration timeline.
Odoo environment provisioning and schema design
We provision the destination Odoo CRM environment (Community or Enterprise based on the customer's choice) and design the target schema. This includes creating custom fields on crm.lead and res.partner to accommodate Workpex custom fields and GPS data, configuring Sales Teams to match Workpex pipeline structures, setting up CRM Stages with probability and fold status, and enabling the Odoo modules required for the migration (CRM, Project for tasks, Documents for attachments). Schema changes deploy to a staging environment first for validation.
Staging migration and reconciliation
We run a full migration into the staging Odoo environment using production-like data volume. The customer reconciles record counts across all objects, spot-checks 25-50 records against the Workpex source, verifies stage mapping accuracy, and reviews the WhatsApp and call activity display in the Odoo CRM timeline. Any field mapping corrections, stage name adjustments, or data type issues surface here and are resolved before production migration begins. No production data moves until staging sign-off is received.
Owner and user provisioning reconciliation
We extract every distinct Workpex Owner and User referenced on Leads, Contacts, Deals, Tasks, and Activities and match them by email against the Odoo destination's res.users table. Any Workpex owner without a matching Odoo User goes to a reconciliation queue for the customer's admin to provision. We require all Owner references to be resolved before record import begins because Odoo requires a valid create_uid and write_uid on migrated records.
Production migration in dependency order
We run the production migration in record-dependency order: Users (manually provisioned and validated), Companies (from Workpex Accounts), Contacts (with parent company_id resolved), Leads (with owner resolved), Opportunities (with lead_id, company_id, owner, and stage resolved), Tasks and Activities (attached to the corresponding Lead, Contact, or Opportunity), Call Records (as CRM activity records), WhatsApp logs (as mail.message records), Attachments (as ir.attachment records), and Custom Fields (final phase with type validation). Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and automation inventory handoff
We freeze Workpex 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 validate that all Lead-Contact-Opportunity relationships are intact, that activity timelines display in chronological order, and that stage counts match the pre-migration Workpex totals within an agreed tolerance. We deliver the automation and sequence inventory document to the customer's admin team with Odoo equivalents for each item. We support a one-week hypercare window for reconciliation issues. Rebuilding automations in Odoo Studio or via an Odoo partner is outside standard migration scope.
Platform deep dives
Workpex
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 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 Workpex and Odoo CRM.
Object compatibility
3 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
Workpex: Not publicly documented.
Data volume sensitivity
Workpex 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 Workpex to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Workpex 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 Workpex
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.