CRM migration
Field-level mapping, validation, and rollback between Merlin and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Merlin
Source
Odoo CRM
Destination
Compatibility
5 of 12
objects map 1:1 between Merlin and Odoo CRM.
Complexity
BStandard
Timeline
2-3 weeks
Overview
Moving from Merlin to Odoo CRM is an atypical migration because Merlin is an AI assistant, not a CRM. It does not store contacts, companies, or deals as structured objects. All CRM data must be reconstructed from Merlin's conversation history and uploaded documents through entity extraction and manual record creation. We guide customers through the manual dashboard export process since Merlin has no public API, parse conversation threads to identify person and company names, extract entities from uploaded PDF, Word, and PowerPoint files, and create corresponding Contact, Account, and Opportunity records in Odoo CRM. We preserve file attachments on the correct parent records and flag that Merlin's conversation metadata (model attribution, token counts) does not export, that no tagging system migrates, and that any business context embedded in documents must be manually validated by the customer's team post-migration. We do not migrate automations, workflows, or sequences because Merlin has no equivalent objects.
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 Merlin 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.
Merlin
Conversation Thread
Odoo CRM
Contact or Lead (entity extraction)
lossyMerlin stores chat threads but has no CRM schema. We parse conversation text to identify person names, email addresses, and company references. Each distinct person identified in conversations becomes either an Odoo Contact (if company affiliation is established) or a Lead (if no company link is found). We preserve the original conversation text as an Odoo Note linked to the created Contact or Lead. Email addresses found in conversations are validated and mapped to the email field on Contact/Lead. Name parsing splits first and last name where possible; ambiguous extractions go to a manual validation queue for the customer's team to confirm before final creation.
Merlin
Uploaded Document (PDF, Word, PowerPoint)
Odoo CRM
Contact or Account (attachment)
lossyMerlin's Document Chat uploads are stored as files in user-scoped storage. Free tier limits uploads to 10 pages; Pro allows unlimited length. We preserve the original file binary, filename, and upload date as an Odoo ir.attachment record. The attachment is linked to the most relevant Contact or Account based on entity extraction from the document text. Documents that reference multiple companies are attached to the primary Contact or Account identified in the document and noted in the attachment description for admin review.
Merlin
Document Chat Q&A Pairs
Odoo CRM
Note
1:manyEach Document Chat session in Merlin includes the uploaded file and the Q&A pairs generated during the session. We preserve these as Odoo Note records with the original question as the Note title and the AI-generated answer as the body. The Note is linked to the Contact or Account associated with the document. This captures the business context that was surfaced during the Merlin session even though the Q&A content does not map to a standard CRM field.
Merlin
User Account Metadata
Odoo CRM
User
1:1Merlin account metadata (email address and plan tier) is retrieved from account settings during the manual export. This information is used to map the Merlin user to a corresponding Odoo User record by email match. If the customer plans to continue using Merlin alongside Odoo for document analysis, the Odoo User record enables the admin to assign migrated entity ownership correctly. Note that Merlin does not support team workspaces, so any multi-user migration requires the customer to define role and territory assignments for Odoo User records that did not exist as structured concepts in Merlin.
Merlin
Image Generation Output
Odoo CRM
ir.attachment
1:1Merlin image generation outputs are stored as image files in user-scoped storage. We preserve the file binary, original generation timestamp, and file type as an Odoo ir.attachment record. These are attached to the relevant Contact, Account, or Opportunity based on the conversation context or document context in which the image was generated. Image metadata (prompts used, model attribution) is not available in Merlin export and is flagged as permanently unavailable.
Merlin
N/A (no contacts in Merlin)
Odoo CRM
Contact
lossyMerlin does not maintain a contacts database. Any Contact records created in Odoo are the result of entity extraction from conversation history and uploaded documents, not a direct object migration. We perform document-level entity extraction as a supplementary migration step to identify and structure any person names, email addresses, and phone numbers found in uploaded files. The customer reviews and approves all extracted contacts before creation in Odoo.
Merlin
N/A (no accounts in Merlin)
Odoo CRM
Account
lossyMerlin does not store company records. Any Account records created in Odoo are extracted from conversation text and document content where company names, domains, or business context is referenced. We use domain-name parsing from email addresses and document metadata to supplement company name extraction. Accounts are created in Odoo before Contacts so that Contact-Account lookups are satisfied at insert time.
Merlin
N/A (no pipeline in Merlin)
Odoo CRM
Opportunity
lossyMerlin has no deal or opportunity objects. Any Opportunity records in Odoo CRM must be manually defined by the customer based on business context recovered from conversation history and documents. We provide a structured template for the customer to document which conversations or documents reference deal values, pipeline stages, or sales milestones, and we create the corresponding Odoo Opportunity records from that documentation. This step requires significant customer involvement because deal data is not structurally stored in Merlin.
Merlin
N/A (no workflow in Merlin)
Odoo CRM
Automated Actions (Odoo Studio)
1:1Merlin has no workflow, automation, or sequence objects. Odoo CRM's Automated Actions cannot be populated from source data because there is no source equivalent. We deliver a written inventory of Odoo CRM's available automation capabilities and map each to the customer's documented business process requirements, but the customer rebuilds automations in Odoo Studio as a post-migration configuration step.
Merlin
N/A (no tags in Merlin)
Odoo CRM
Tags
1:1Merlin does not expose a tagging or labeling system that is accessible via export. We cannot migrate tags as structured metadata because no tags exist in the source platform. If the customer used informal tagging conventions within conversation titles or document filenames, we document those patterns and propose a Tags strategy in Odoo CRM during scoping.
Merlin
N/A (no custom properties in Merlin)
Odoo CRM
Custom Fields
1:1Merlin does not support user-defined properties or custom fields. Any structured data beyond conversation text and file blobs is not accessible for export. We cannot migrate custom properties because none exist. If the customer needs custom fields in Odoo for data that was conceptually tracked in Merlin conversations, we define those fields in Odoo Studio during the migration scope and document the mapping for the customer's admin to populate.
Merlin
N/A (no engagements in Merlin)
Odoo CRM
Task and Event
lossyMerlin stores no call, email, meeting, or task records as structured objects. Any business activities must be documented by the customer and manually created in Odoo CRM. We provide a CSV template that maps date, type, subject, and related Contact or Account for the customer to populate from their documented activity history. Odoo Tasks and Events are created from this template as a post-migration data entry step.
| Merlin | Odoo CRM | Compatibility | |
|---|---|---|---|
| Conversation Thread | Contact or Lead (entity extraction)lossy | Fully supported | |
| Uploaded Document (PDF, Word, PowerPoint) | Contact or Account (attachment)lossy | Fully supported | |
| Document Chat Q&A Pairs | Note1:many | Fully supported | |
| User Account Metadata | User1:1 | Fully supported | |
| Image Generation Output | ir.attachment1:1 | Fully supported | |
| N/A (no contacts in Merlin) | Contactlossy | Fully supported | |
| N/A (no accounts in Merlin) | Accountlossy | Fully supported | |
| N/A (no pipeline in Merlin) | Opportunitylossy | Fully supported | |
| N/A (no workflow in Merlin) | Automated Actions (Odoo Studio)1:1 | Fully supported | |
| N/A (no tags in Merlin) | Tags1:1 | Fully supported | |
| N/A (no custom properties in Merlin) | Custom Fields1:1 | Fully supported | |
| N/A (no engagements in Merlin) | Task and Eventlossy | 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.
Merlin gotchas
No public API for automated export
Document upload limit differences by tier are migration-critical
Conversation metadata is not exported
No contacts or CRM objects means context must be rebuilt
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
Customer-guided manual export from Merlin dashboard
We schedule a guided export session with the customer to capture all available data from the Merlin dashboard. This includes exporting conversation history (one ZIP file per conversation thread), downloading all uploaded documents from Document Chat (PDF, Word, PowerPoint files), and capturing account metadata (email, plan tier, usage quota) from account settings. Because Merlin has no public API, the customer performs the dashboard export while we provide step-by-step guidance and validate that all expected conversations and files are included in the export package. We verify file counts and conversation counts against the customer's documented estimate before proceeding.
Entity extraction and document parsing
We run entity extraction against all conversation text and uploaded documents to identify person names, email addresses, phone numbers, company names, and domain references. Extraction uses pattern matching for email addresses and phone numbers (high-confidence), named-entity recognition for person and company names (medium-confidence), and domain parsing from email addresses to suggest company associations. The extraction output is a draft Contact and Account candidate list with source provenance (which conversation or document each entity was found in). The customer reviews and approves the candidate list; we do not create any CRM records without customer sign-off on entity extraction results.
Schema design and Odoo environment preparation
We review the customer's Odoo CRM environment and design the destination schema. This includes activating the CRM app in Odoo, configuring the pipeline stages (default Odoo stages or custom stages defined by the customer), defining any required custom fields on Contact and Account (for data that the customer tracked in Merlin conversations but that has no standard Odoo field), and setting up Odoo Users to correspond with the Merlin account holders being migrated. If the customer uses Odoo Community Edition, we ensure the CRM module is installed and configured. If using Odoo Online or Odoo.sh, we verify access permissions and API credentials for the attachment migration step.
Sandbox validation and entity reconciliation
We run a full migration into an Odoo staging or sandbox environment (a second Odoo database or a pre-production snapshot) using the extracted conversation content and document corpus. The customer's team reviews the resulting Contact list, Account list, and any Opportunity records created from manual deal documentation. We reconcile the entity counts against the extraction candidate list, flag any duplicates (same person or company found in multiple conversations), and identify any entities that were implied but not explicitly named in Merlin content requiring customer clarification. Sign-off on the sandbox validation is required before production migration begins.
Production migration in dependency order
We run production migration in the following order: Accounts first (from extracted company names), then Contacts (with partner_id linking to Account), then Opportunities (from documented deal context), then Attachments (uploaded documents linked to the relevant Contact or Account via ir.attachment records), then Notes (conversation text and Document Chat Q&A pairs linked to parent records). Each phase emits a row-count reconciliation report. Attachments use Odoo's ir.attachment model with the res_model set to the target object (res.partner, res.partner, or crm.lead) and res_id set to the target record ID. Notes are created as Odoo Note records with the note message subtype.
Cutover, validation, and automation rebuild handoff
We freeze the Merlin account from active document uploads during the cutover window, run a final delta migration of any conversations or documents added since the initial export, and mark Odoo CRM as the system of record for migrated business data. We deliver a written document that inventories Odoo CRM's automation capabilities (Automated Actions, Studio workflows, server actions) mapped to the customer's documented business process requirements, along with a recommended rebuild approach for any automations the customer wishes to implement. We do not rebuild automations inside the migration scope. We support a five-business-day post-migration window for reconciliation issues raised by the customer's team.
Platform deep dives
Merlin
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a manual workaround.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Merlin 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
Merlin: Not publicly documented.
Data volume sensitivity
Merlin 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 Merlin to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Merlin 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 Merlin
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.