CRM migration
Field-level mapping, validation, and rollback between Spotler CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Spotler CRM
Source
Odoo CRM
Destination
Compatibility
11 of 14
objects map 1:1 between Spotler CRM and Odoo CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Spotler CRM and Odoo CRM serve overlapping SMB segments but differ fundamentally in architecture. Spotler stores Contacts and Companies as separate relational tables linked by a foreign key; Odoo consolidates both into a single res.partner model with an is_company flag. We resolve this schema difference during migration by extracting Spotler Companies first, then creating Odoo Partners for each Spotler Company and each standalone Contact, preserving the relationship via parent_id on the Contact-side Partner record. Opportunities in Spotler map to Odoo crm.lead records, with pipeline stages reconstructed as Odoo stage definitions in the CRM app. Activity history migrates as mail.message records against the target Partner. Quotations require the Odoo Sales or Accounting app to be installed before migration; Cases require the Helpdesk app. We do not migrate Spotler Workflows, Sequences, or Reports. We deliver a written workflow inventory with Odoo Studio equivalents so your admin rebuilds the automation layer post-migration. Odoo Online starts at approximately $25 per user per month for the CRM app, compared to Spotler Professional at $30-33 per user per month, making the subscription cost broadly comparable or modestly lower depending on which Odoo modules are activated.
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 Spotler CRM 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.
Spotler CRM
Contact
Odoo CRM
res.partner (CRM Lead)
1:1Spotler Contacts map to Odoo CRM Lead records for deal-tracking use cases and to res.partner for address-book use cases. We export the full Contact table including custom field values and company_id foreign key, then create Partners in Odoo first so that the parent_id self-join resolves the Contact-to-Company relationship. Each Contact receives a Partner record; if the Contact has a company_id, the parent_id on that Partner points to the Company-side Partner. Custom field values from Spotler migrate to Odoo custom fields on res.partner, created in Odoo Studio before import. Email address is the dedupe key.
Spotler CRM
Company
Odoo CRM
res.partner (is_company = True)
1:1Spotler Company records map directly to Odoo res.partner with is_company set to True. Company-level address, industry, size, and custom properties migrate to matching Odoo custom fields. Company must import before Contact so that Contact records can reference the parent_id lookup at insert time. The Spotler company_id foreign key on each Contact resolves to the Partner.id of the imported Company record during the Contact phase.
Spotler CRM
Opportunity
Odoo CRM
crm.lead
1:1Spotler Opportunities map to Odoo crm.lead records. Spotler pipeline stages migrate as Odoo Stage definitions in the CRM app's kanban configuration, with stage probabilities mapped to Odoo's probability field. The Spotler deal value, expected close date, and owner migrate to Odoo expected_revenue, date_deadline, and user_id respectively. Closed-won and closed-lost outcomes set the Odoo stage to the equivalent won or lost stage. Opportunity-to-Contact linkage is preserved via the partner_id on crm.lead.
Spotler CRM
Pipeline and Stage
Odoo CRM
CRM Stage Configuration
lossyEach Spotler pipeline maps to a separate CRM team in Odoo with its own Stage sequence. We collect the full list of Spotler stage names, order, and probability percentages during discovery and reconstruct them as Odoo Stage records under the appropriate CRM team. Probability rounding to Odoo's integer-percentage model is applied per stage. Stages that do not exist in the destination org are created via Odoo Settings before any Opportunity records are imported.
Spotler CRM
Activity (Tasks, Calls, Meetings, Notes)
Odoo CRM
mail.message and note.note
1:1Spotler Activities (tasks, calls, meetings, notes) migrate as Odoo mail.message records attached to the target res.partner or crm.lead. The Spotler activity type maps to a mail.message.subtype: calls become note records with a call subtype; meetings become calendar.event records; tasks become Odoo project.task or note records depending on the Odoo apps installed. We export the related record ID from Spotler alongside the activity data so that the mail.message record attaches to the correct Partner or Lead after import. Note that Spotler stores note body as HTML; we strip unsupported tags and preserve the text content.
Spotler CRM
Custom Fields and Dropdown Lists
Odoo CRM
Custom Fields on res.partner and crm.lead
lossySpotler allows free-form custom field creation without enforced naming conventions. We export the field definition table (field name, type, dropdown options) alongside the data export. Each custom field is pre-created in Odoo Studio before data import: text fields become char, multi-value dropdowns become many2many tags, date fields become date, and numeric fields become float or integer depending on value type. Dropdown values in Spotler are stored as reference IDs separate from the field definition; we map each value to the Odoo selection option label explicitly to avoid silent mismatches.
Spotler CRM
Quotation
Odoo CRM
sale.order (Sales app required)
1:1Spotler Quotations (available on Professional and Enterprise plans) map to Odoo sale.order records when the Odoo Sales or Accounting app is installed in the destination database. Line items migrate as sale.order.line records with product, quantity, unit price, and tax. If the Sales app is not present in the destination Odoo instance, quotation headers and line items are exported as structured CSV and delivered for manual recreation in the target system. We confirm the destination app availability during discovery scoping and flag it as a dependency in the migration scope document.
Spotler CRM
Case (Service Ticket)
Odoo CRM
helpdesk.ticket (Helpdesk app required)
1:1Spotler Cases (Professional and Enterprise tiers) map to Odoo helpdesk.ticket records when the Helpdesk app is installed. Priority, status, assignment, and SLA fields migrate to their Odoo equivalents. Cases linked to Contacts or Companies attach to the Partner record via the partner_id field. If the Helpdesk app is not present, Cases migrate as CRM Lead records with a dedicated tag or stage to indicate ticket origin, and the customer installs the Helpdesk app as a post-migration step before recreating cases in the proper module.
Spotler CRM
Document
Odoo CRM
ir.attachment
1:1Spotler documents attached to Contacts, Companies, and Opportunities export as ir.attachment records in Odoo. We export document metadata (filename, size, linked record ID, upload date) and stage documents for post-migration re-attachment. Actual binary files require re-upload to Odoo's document management system because the file storage backend differs between platforms. We deliver a document mapping table listing each file, its Spotler parent record, and the target Odoo res.model and res.id for manual re-upload if the files are stored externally. Spotler plan storage limits (100MB Free, 1GB Starter, 5GB Professional) are checked against document volume during scoping to avoid exceeding Odoo storage on the target plan.
Spotler CRM
User
Odoo CRM
res.users
1:1Spotler Users (name, email, role, group membership) export to a user mapping table. Odoo requires each Spotler Owner to have a corresponding res.users record with a matching email address before OwnerId can be resolved on migrated Deals and Activities. We hold the user mapping during scoping and deliver a user provisioning checklist. The customer creates Odoo users before production migration begins. Inactive Spotler owners receive inactive Odoo users to preserve the audit trail without granting login access.
Spotler CRM
Tag and Static List
Odoo CRM
crm.tag
1:1Spotler Tags and static list memberships export per Contact and per Company. Tags migrate as Odoo crm.tag records attached to the relevant Partner via crm.lead.partner_category many2many relationship. If a Spotler static list has a filter condition rather than manual membership, we recreate it as an Odoo domain on the Partner model rather than a static tag. The customer chooses the tag strategy during scoping based on whether they prefer Odoo tags as a reporting segmentation tool or as literal group membership.
Spotler CRM
Workflow (Automations)
Odoo CRM
Not migratable
1:1Spotler Workflow definitions store automation logic referencing field IDs and object logic that cannot be exported. We do not migrate workflows as code. During discovery we document every active Spotler Workflow with its trigger event, condition logic, and action sequence, and deliver a written Odoo Studio Automated Action specification for the customer's admin to rebuild post-migration. Any workflows with complex multi-step branching are flagged for manual review before the rebuild begins.
Spotler CRM
Reports and Dashboards
Odoo CRM
Not migratable
1:1Spotler report definitions store query logic and visualization configuration tied to Spotler's internal schema and cannot be exported. We export the underlying data so that reports can be rebuilt in Odoo Reporting or a BI tool. The data export includes the raw record sets that feed each report, delivered as CSV alongside a report inventory document listing each Spotler report's name, object, filters, and column set. Rebuilding in Odoo Reporting uses the same data with Odoo's graph and pivot view builders.
Spotler CRM
MailSync Configuration
Odoo CRM
Re-connection Required
lossySpotler MailSync maintains a live two-way sync between CRM and Gmail or Outlook. This configuration belongs to the Spotler environment and does not export. Email history migrates as Activity records on the Contact timeline. Post-migration, the customer reconnects their email account in Odoo via the Discuss module's incoming email configuration. We provide a step-by-step reconnection guide and flag that any email threading history in Spotler MailSync will not carry over to Odoo's threaded conversation view.
| Spotler CRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner (CRM Lead)1:1 | Fully supported | |
| Company | res.partner (is_company = True)1:1 | Fully supported | |
| Opportunity | crm.lead1:1 | Fully supported | |
| Pipeline and Stage | CRM Stage Configurationlossy | Fully supported | |
| Activity (Tasks, Calls, Meetings, Notes) | mail.message and note.note1:1 | Fully supported | |
| Custom Fields and Dropdown Lists | Custom Fields on res.partner and crm.leadlossy | Mapping required | |
| Quotation | sale.order (Sales app required)1:1 | Fully supported | |
| Case (Service Ticket) | helpdesk.ticket (Helpdesk app required)1:1 | Fully supported | |
| Document | ir.attachment1:1 | Fully supported | |
| User | res.users1:1 | Fully supported | |
| Tag and Static List | crm.tag1:1 | Fully supported | |
| Workflow (Automations) | Not migratable1:1 | Fully supported | |
| Reports and Dashboards | Not migratable1:1 | Not supported | |
| MailSync Configuration | Re-connection Requiredlossy | 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.
Spotler CRM gotchas
Plan-tier company record caps block migrations at scale
Workflow definitions do not export and must be rebuilt
Document storage limits vary by plan tier
Custom fields require explicit schema mapping between environments
Two-way MailSync configuration does not transfer between CRMs
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 Odoo module availability check
We audit the Spotler CRM environment across all plan tiers and objects in scope: Contacts, Companies, Opportunities, Activities, custom fields and dropdowns, Quotations, Cases, document metadata, user accounts, and workflow definitions. We confirm which Odoo apps are active in the destination database (CRM, Sales, Helpdesk, Accounting) and flag any missing dependencies that affect migration scope. The discovery output is a written migration scope specifying the object list, record counts per object, custom field inventory, and Odoo app dependency checklist.
Schema design and Partner model consolidation
We design the destination Odoo schema before any records move. This includes creating custom fields on res.partner and crm.lead via Odoo Studio (matching Spotler custom field types and dropdown options), defining CRM Stage sequences from the Spotler pipeline stage list, creating crm.tag records for Spotler tags, and pre-provisioning the Sales app (for Quotations) or Helpdesk app (for Cases) if not yet installed. The critical design step is the Contact-Company consolidation: we produce a Contact partitioning document that specifies, for each Spotler Contact, whether it becomes a standalone Partner or a child Partner linked to a Company-side parent Partner via parent_id. This document is reviewed and signed off before the transform phase begins.
Sandbox migration and reconciliation
We run a full migration into an Odoo sandbox environment using representative data volume. The customer reconciles record counts, spot-checks 25-50 records against the Spotler source (field values, relationship integrity, pipeline stage mapping), and reviews the CRM kanban view to confirm stage ordering. Any mapping corrections, custom field type changes, or stage probability adjustments are made in the sandbox before production migration begins. Sign-off on the sandbox migration is required before we proceed to production.
User provisioning and owner reconciliation
We extract every Spotler Owner email referenced on Contacts, Companies, Deals, and Activities and match by email against the Odoo destination database's res.users table. Any Spotler owner without a matching Odoo user goes to a provisioning checklist delivered to the customer. The customer's Odoo admin creates missing users before production migration resumes. Migration cannot proceed past this step because user_id references on crm.lead require valid Odoo User records.
Production migration in dependency order
We run production migration in dependency order: res.partner records for Companies first (is_company=True), then res.partner records for Contacts (with parent_id resolved to the Company-side Partner where applicable), then crm.lead records for Opportunities, then Activities as mail.message records, then sale.order records (if Sales app is active), then helpdesk.ticket records (if Helpdesk app is active), then crm.tag assignments. Each phase emits a row-count reconciliation report before the next phase begins. We use Odoo's direct CSV import for structured records and XML-RPC API calls for records requiring computed lookups.
Cutover, validation, and Workflow rebuild handoff
We freeze writes in Spotler during cutover, run a final delta migration for any records modified during the migration window, then enable Odoo as the system of record. We deliver the Workflow inventory document with Odoo Studio Automated Action specifications. We reconnect MailSync via the Odoo Discuss configuration guide. We offer a one-week hypercare window to resolve reconciliation issues raised by the customer's sales team. We do not rebuild Spotler Workflows as Odoo Studio actions inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
Spotler CRM
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Spotler CRM and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Spotler CRM and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Spotler CRM and Odoo CRM.
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
Spotler CRM: Specific RPS limits are not publicly documented, but Spotler exposes per-user call quotas with configurable Usage Alerts and Failed Call Alerts under Settings > Integrations > API V4 to monitor consumption against the contracted ceiling..
Data volume sensitivity
Spotler CRM 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 Spotler CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Spotler CRM 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 Spotler CRM
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.