CRM migration
Field-level mapping, validation, and rollback between Market Maker and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Market Maker
Source
Odoo CRM
Destination
Compatibility
14 of 14
objects map 1:1 between Market Maker and Odoo CRM.
Complexity
CModerate
Timeline
3–5 business days
Overview
Market Maker stores CRM data across a standard contact-company-deal model typical of mid-market platforms, while Odoo CRM uses a fundamentally different architecture: Odoo unifies contacts and companies into a single res.partner object and merges leads with opportunities into crm.lead, using stage_id on the same record type rather than separate lead and opportunity objects. This architectural shift means every Market Maker contact that has associated company data must resolve to a single res.partner record with the company attached via partner_id, and every deal must attach to a crm.lead record with the pipeline stage stored as stage_id. We map Market Maker contacts to res.partner, companies to parent_id on the partner record, and deals to crm.lead with pipeline_id and stage_id populated from Odoo's crm.stage model. Custom fields migrate as ir.model.fields records on the destination model. Activity history (calls, emails, meetings, notes) maps to mail.activity with original create_date and user_id preserved. Owner resolution happens by email match against Odoo res.users — unmatched owners receive a fallback assignment and are flagged for admin review. Workflows, automation rules, email templates, and third-party integrations do not transfer and must be rebuilt using Odoo Studio or the automation tools available in your Odoo edition. The migration runs via Odoo's XML-RPC API with batched record creation to stay within rate-limit guidelines, followed by a 24–48 hour delta pickup window that captures any records modified during cutover.
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 Market Maker 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.
Market Maker
Contact
Odoo CRM
res.partner
1:1Odoo uses a single res.partner model for contacts and companies. Market Maker contacts migrate as res.partner records with partner_latitude/longitude, function (jobtitle), and category_id preserved. The primary company from Market Maker attaches as parent_id on the partner record; additional company associations require Account Contact Relation records in Odoo.
Market Maker
Company
Odoo CRM
res.partner (company type)
1:1Market Maker companies become res.partner records with is_company=True. The company name maps to name, domain to website, industry to industry_id via value_mapping, and annual_revenue to property_account_receivable_id for financial reporting. Child contacts from Market Maker link via parent_id to the migrated company partner.
Market Maker
Lead
Odoo CRM
crm.lead
1:1Market Maker leads map directly to Odoo crm.lead records. The type field is set to lead by default. Market Maker lead properties (source, score, status) migrate to crm.lead fields using value_mapping where pick-list values differ between platforms. The original lead create_date is preserved as create_date for reporting continuity.
Market Maker
Deal
Odoo CRM
crm.lead (type=opportunity)
1:1Market Maker deals become Odoo crm.lead records with type=opportunity. The deal amount maps to planned_revenue, deal name becomes name, and the close date maps to date_deadline. Pipeline stage from Market Maker translates to stage_id by looking up the matching crm.stage record by name within the target pipeline_id.
Market Maker
Pipeline
Odoo CRM
crm.team
1:1Market Maker deal pipelines map to Odoo crm.team (sales team) records. Each pipeline requires a corresponding crm.team to be created in Odoo before migration, with team_member assignments resolved by email matching to res.users. The crm.team's alias_name handles inbound email-to-lead routing.
Market Maker
Pipeline Stage
Odoo CRM
crm.stage
1:1Stage names from Market Maker require value-by-value mapping to existing Odoo crm.stage records. If a Market Maker stage name does not match an Odoo stage, the closest stage is selected and the original name is preserved in a custom Char field (x_original_stage_name__c) for audit purposes. Stage sequence order is preserved.
Market Maker
Engagement (Call)
Odoo CRM
mail.activity
1:1Market Maker call records migrate to Odoo mail.activity with activity_type_id set to call. The original call date maps to date_deadline and create_date, user_id maps to the matched owner, and the call outcome or notes map to activity note body. Activity records are linked to the parent res.partner or crm.lead via res_model and res_id.
Market Maker
Engagement (Email)
Odoo CRM
mail.activity
1:1Market Maker email engagement records become Odoo mail.activity with activity_type_id=email. The subject line maps to activity note body, sender/recipient preserved in description, and original timestamp maps to create_date. Email threads do not migrate as Odoo mail.message records because thread reconstruction requires access to raw MIME content not typically exported from Market Maker.
Market Maker
Engagement (Meeting/Note)
Odoo CRM
mail.activity
1:1Market Maker meetings map to mail.activity with activity_type_id=meeting, preserving original start and end timestamps as date_deadline and x_meeting_end_date__c custom fields. Notes map to mail.activity with activity_type_id=note, with the note body stored in the activity's note field. Both activity types inherit the create_date and user_id from the source record to maintain accurate audit trails and ownership attribution within Odoo's activity timeline view.
Market Maker
Custom Field (any object)
Odoo CRM
ir.model.fields
1:1Market Maker custom fields on any object require Odoo-side ir.model.fields creation before migration. We deliver a schema setup plan listing each custom field name, Odoo field type (Char, Selection, Float, etc.), and target model. Fields are created via FlitStack's Odoo setup module or provided as a guide for your admin to create before the migration run.
Market Maker
Attachment/File
Odoo CRM
ir.attachment
1:1Market Maker file attachments on records migrate as Odoo ir.attachment records with res_model pointing to the migrated model and res_id pointing to the migrated record's Odoo ID. Files are re-uploaded to Odoo's filestore. Large files (>25MB) may require Odoo filestore configuration adjustment before migration.
Market Maker
User/Owner
Odoo CRM
res.users
1:1Market Maker owner_id values are resolved by email match against Odoo res.users. Matched owners map to crm.lead user_id and res.partner user_id. Unmatched owners are assigned to a designated fallback user (created as a placeholder res.users record) and flagged in the migration report for admin review and reassignment.
Market Maker
Association Label
Odoo CRM
res.partner.industry or custom field
1:1Market Maker contact-to-company association labels (like 'Decision Maker' or 'Technical Contact') have no direct Odoo equivalent. Labels are preserved as a Selection field on the contact's res.partner record (x_association_label__c) for reference. Role-based relationship labeling requires rebuilding using Odoo's Contact / Company relationship settings post-migration.
Market Maker
Sales Activity Report
Odoo CRM
Custom report (PostgreSQL)
1:1Market Maker's built-in sales activity reports do not migrate. Historical data underlying the reports transfers as crm.lead and mail.activity records, which can be queried via Odoo's reporting interface or via direct PostgreSQL access for custom BI tools. FlitStack can deliver a sample SQL query set for Odoo reporting continuity.
| Market Maker | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner (company type)1:1 | Fully supported | |
| Lead | crm.lead1:1 | Fully supported | |
| Deal | crm.lead (type=opportunity)1:1 | Fully supported | |
| Pipeline | crm.team1:1 | Fully supported | |
| Pipeline Stage | crm.stage1:1 | Fully supported | |
| Engagement (Call) | mail.activity1:1 | Fully supported | |
| Engagement (Email) | mail.activity1:1 | Fully supported | |
| Engagement (Meeting/Note) | mail.activity1:1 | Fully supported | |
| Custom Field (any object) | ir.model.fields1:1 | Fully supported | |
| Attachment/File | ir.attachment1:1 | Fully supported | |
| User/Owner | res.users1:1 | Fully supported | |
| Association Label | res.partner.industry or custom field1:1 | Fully supported | |
| Sales Activity Report | Custom report (PostgreSQL)1: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.
Market Maker gotchas
Directory rather than CRM
USDA/state participation varies
No public API
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 Odoo schema preparation
FlitStack runs a scoped read of your Market Maker account to inventory all objects, field schemas, pipeline configurations, and attachment inventory. We deliver a schema setup plan for Odoo listing the crm.team records to create, crm.stage records to populate per team, and any ir.model.fields custom field definitions required before data lands. Your Odoo admin creates the schema elements following our plan, or our team handles it if you grant API access to your Odoo instance.
Owner and user resolution mapping
We extract all Market Maker owner_id values and match them against Odoo res.users by email. Unmatched owners are flagged and assigned to a designated fallback res.users placeholder. This step runs before the main migration so no crm.lead or res.partner record lands without a valid Odoo user_id. The owner resolution report is shared for admin review before the full run commits.
Migrate companies, contacts, and leads in dependency order
Odoo requires res.partner records to exist before crm.lead records can reference them via partner_id. We sequence the migration: first companies (res.partner with is_company=True), then contacts (res.partner linked to company via parent_id), then crm.lead records (leads and converted opportunities) with partner_id and team_id resolved from the migrated partner and team records. Stage values map via the pre-built value_mapping table against crm.stage records.
Migrate activity history and attachments
After all primary records are migrated, mail.activity records (calls, emails, meetings, notes) are created and linked to their parent res.partner or crm.lead via res_model and res_id. Attachments are re-uploaded to Odoo's filestore and linked via ir.attachment records. Files exceeding Odoo's size limit are flagged in the report for manual handling. Activity records preserve original create_date and user_id from the source.
Sample migration with field-level diff and full cutover with delta pickup
A representative sample (typically 100–500 records covering all object types) migrates first. We generate a field-level diff comparing source values to destination field values so you can verify mapping accuracy — especially for stage names, owner assignments, and pick-list value translations. After sample sign-off, the full migration runs. A 24–48 hour delta pickup window captures any records modified in Market Maker during cutover. An audit log records every operation, and one-click rollback is available if reconciliation fails.
Platform deep dives
Market Maker
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 5 of 8 objects need a manual workaround.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Market Maker and Odoo CRM.
Object compatibility
5 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
Market Maker: Not applicable..
Data volume sensitivity
Market Maker 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 Market Maker to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Market Maker 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 Market Maker
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.