CRM migration
Field-level mapping, validation, and rollback between myCRMS.com and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
myCRMS.com
Source
Odoo CRM
Destination
Compatibility
9 of 12
objects map 1:1 between myCRMS.com and Odoo CRM.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from myCRMS.com to Odoo CRM is a structural migration from a standalone sales tool into a modular ERP ecosystem. myCRMS.com stores contacts with custom fields, company records, and pipeline deals with stage data in a single-tenant export model; Odoo represents the same data across its crm.lead, crm.lead and res.partner models, requiring schema discovery before any data moves. We sequence the export in dependency order, loading company records before contacts to preserve partner associations, and resolving myCRMS owner assignments to Odoo res.users records before record insertion. Smart Lists from myCRMS map to Odoo saved views with the same filter logic rebuilt as domain expressions. Workflows, automations, and marketing automation rules do not migrate; we deliver a written inventory of these for your admin to rebuild using Odoo Studio or a certified partner. Odoo pricing at $37.40/user/month Enterprise includes the CRM module alongside accounting, inventory, and project modules, which changes the total cost picture compared to a standalone myCRMS subscription.
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 myCRMS.com 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.
myCRMS.com
Contact
Odoo CRM
res.partner
1:1myCRMS.com Contact records map to Odoo res.partner with is_company=False. The contact's primary email becomes email, phone becomes phone, and address fields map to street, city, state_id, country_id, and zip. Custom fields discovered during the pre-migration audit create corresponding ir.model.fields on res.partner. We load res.partner records before any child contact records to satisfy the parent_id lookup if myCRMS stores hierarchical contact relationships.
myCRMS.com
Company
Odoo CRM
res.partner
1:1myCRMS.com Company records map to Odoo res.partner with is_company=True and is_company flag set. Company domain becomes website field. The company name maps to name, and any industry, employee count, or revenue fields migrate as custom fields on res.partner. Company records are loaded first so that Contact records can reference them via parent_id during insertion.
myCRMS.com
Deal
Odoo CRM
crm.lead
1:1myCRMS.com Deal records map to Odoo crm.lead with type='opportunity'. The deal name becomes name, stage data maps to stage_id through Odoo's stage configuration, and amount maps to expected_revenue. Owner assignments from myCRMS map to user_id on crm.lead by email matching against Odoo res.users.
myCRMS.com
Deal Stage
Odoo CRM
crm.stage
lossyEach distinct myCRMS.com pipeline stage value becomes an Odoo crm.stage record within the relevant crm.team. Stage sequence order migrates to sequence, and probability percentages map to Odoo's probability field on crm.lead. We configure stage names to match myCRMS labels for user recognition post-migration.
myCRMS.com
Pipeline
Odoo CRM
crm.team
1:1myCRMS.com deal pipelines map to Odoo crm.team records. Each team gets its own Kanban view with stages scoped to that team. If myCRMS uses multiple pipelines to segment lines of business, each becomes a separate crm.team with its own team leader and member assignments resolved from owner data.
myCRMS.com
Owner
Odoo CRM
res.users
1:1myCRMS.com owner assignments on Contact, Company, and Deal records resolve to Odoo res.users by email match. Any myCRMS owner without a matching Odoo user is held in a reconciliation queue for the customer's admin to provision before record import resumes. We cannot insert records with user_id references that do not exist in the destination.
myCRMS.com
Activity: Call
Odoo CRM
mail.activity (type=call)
1:1myCRMS.com call activity records map to Odoo mail.activity with activity_type_id set to the built-in Call type. Call duration and disposition migrate to custom activity fields. ActivityDate from myCRMS sets the deadline and activity_date on mail.activity. The activity.res_model and res_id link to the migrated res.partner or crm.lead record.
myCRMS.com
Activity: Meeting
Odoo CRM
calendar.event
1:1myCRMS.com meeting activity records map to Odoo calendar.event. Start datetime, end datetime, and location migrate to start, stop, and location. Attendees link via calendar.attendee records pointing to the migrated res.partner contacts and res.users team members.
myCRMS.com
Activity: Task
Odoo CRM
mail.activity (type=task)
1:1myCRMS.com task activity records map to Odoo mail.activity with activity_type_id set to the built-in To-Do type. Task subject becomes mail.activity.title, status maps to activity_date or deadline depending on myCRMS field semantics, and owner assignment resolves to user_id via the res.users mapping.
myCRMS.com
Activity: Note
Odoo CRM
mail.message
1:1myCRMS.com note activity records map to Odoo mail.message linked to the parent res.partner or crm.lead via res_id and model. Note body migrates as HTML content preserved in body_html. Message creation date and author (mapped to res.users) are set from myCRMS timestamp and owner data.
myCRMS.com
Smart List
Odoo CRM
ir.filters
lossymyCRMS.com Smart List filter logic migrates to Odoo ir.filters records scoped to the relevant model (res.partner or crm.lead). We translate myCRMS filter conditions into Odoo domain expression syntax during the pre-migration audit. Each Smart List becomes a named saved view that the customer's admin assigns to specific users post-migration. This translation is documented as a written handoff, not an automated recreation, because Odoo domain syntax differs from myCRMS filter builder semantics.
myCRMS.com
Custom Field
Odoo CRM
ir.model.fields
lossyAny custom field schemas discovered on myCRMS.com Contact, Company, and Deal records during pre-migration audit are pre-created in Odoo as ir.model.fields on res.partner and crm.lead before data import begins. Field types are mapped: text fields to char or text, numeric fields to float or integer, date fields to date, dropdown fields to selection. Many2one and many2many custom fields require corresponding Odoo models to exist first, which we coordinate during the schema design phase.
| myCRMS.com | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner1:1 | Fully supported | |
| Deal | crm.lead1:1 | Fully supported | |
| Deal Stage | crm.stagelossy | Fully supported | |
| Pipeline | crm.team1:1 | Fully supported | |
| Owner | res.users1:1 | Fully supported | |
| Activity: Call | mail.activity (type=call)1:1 | Fully supported | |
| Activity: Meeting | calendar.event1:1 | Fully supported | |
| Activity: Task | mail.activity (type=task)1:1 | Fully supported | |
| Activity: Note | mail.message1:1 | Fully supported | |
| Smart List | ir.filterslossy | Fully supported | |
| Custom Field | ir.model.fieldslossy | 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.
myCRMS.com gotchas
Vendor site references IE 6.0 — product likely not modernised
No public API or developer portal
No third-party review corpus for diligence
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 export capability audit
We audit myCRMS.com across available export endpoints, data volume by record type, custom field schemas exposed in the export, Smart List definitions, owner assignments, and activity record types. This phase determines whether automated API extraction is possible or whether manual CSV export is required, and it surfaces any record types or historical data that may be inaccessible. The discovery output is a written migration scope with record counts, custom field inventory, and a recommendation on whether Odoo Community or Enterprise is the appropriate destination edition.
Schema design and field pre-creation
We design the destination Odoo schema before any data loads. This includes creating any missing custom fields on res.partner and crm.lead via Odoo Studio, configuring crm.team records to match myCRMS pipeline structure, and setting up crm.stage records with names, sequence, and probability matching the source. Custom field types are mapped to Odoo ir.model.fields types (char, integer, float, selection, many2one) and deployed via XML-RPC or directly through Odoo Studio. Schema is validated in the destination Odoo environment before production migration begins.
Smart List audit and domain translation
We document every myCRMS.com Smart List with its filter conditions expressed in both English and Odoo domain expression syntax. This translation identifies any conditions that require simplification because Odoo domain operators differ from myCRMS filter builder semantics. The Smart List translation document is delivered alongside the migration and serves as the handoff for the customer's admin to create Odoo ir.filters saved views after cutover.
Owner reconciliation and user provisioning
We extract every distinct myCRMS.com owner email from Contact, Company, Deal, and activity records and match against the destination Odoo res.users table. Owner emails without a matching Odoo user are listed in a reconciliation queue. The customer provisions missing users in Odoo (active for current team members, inactive for historical owners) before production migration begins. Migration cannot insert records with user_id references pointing to non-existent users without causing foreign key failures.
Production migration in dependency order
We run production migration in record-dependency order: crm.team and crm.stage configuration, res.partner Company records (is_company=True) first, res.partner Contact records second with parent_id resolved to the Company, crm.lead Deal records with stage_id and user_id resolved, then mail.activity and calendar.event records linked to parent records. Each phase emits a row-count reconciliation report before the next phase begins. We use Odoo's XML-RPC API with batch chunking and retry logic to handle rate limit responses.
Cutover, validation, and automation handoff
We freeze myCRMS.com write access 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 Smart List translation document and the automation inventory to the customer's admin team. We support a one-week hypercare window where we resolve reconciliation issues raised by the team. We do not rebuild myCRMS workflows or automations as Odoo Server Actions or Python models inside the migration scope; that is a separate engagement or an internal Odoo partner task.
Platform deep dives
myCRMS.com
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 1 of 8 objects need a manual workaround.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across myCRMS.com and Odoo CRM.
Object compatibility
1 of 8 objects need a manual workaround.
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
myCRMS.com: Not publicly documented.
Data volume sensitivity
myCRMS.com 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 myCRMS.com to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your myCRMS.com 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 myCRMS.com
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.