CRM migration
Field-level mapping, validation, and rollback between Kursaha and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Kursaha
Source
Odoo CRM
Destination
Compatibility
7 of 12
objects map 1:1 between Kursaha and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Kursaha to Odoo CRM is a structural migration from a marketing automation-first tool to a full ERP-adjacent CRM platform. Kursaha organizes data around Campaigns, Contacts, and Channels with behavioral audience segments; Odoo CRM uses Leads, Opportunities, pipeline Stages, and tags with optional integration to Odoo Sales, Accounting, Inventory, and Project. Because Kursaha has no publicly documented REST API, we extract all migratable objects via dashboard CSV exports and map them to Odoo's standard CSV import format and XML-RPC API. We preserve campaign membership as Odoo Tags and recreate segment filter logic in Odoo's native group and domain filtering. Analytics events, behavioral tracking data, and engagement metrics computed by Kursaha's processing layer are not exportable and do not migrate; we advise customers to capture screenshots of historical campaign performance before cutover. Odoo CRM pricing starts at $24 per user per month for the standalone CRM app with unlimited pipelines from the base tier. We do not migrate Kursaha's automations, AI template workflows, WhatsApp channel configurations, or third-party integrations; these require reconfiguration in Odoo or a replacement tool post-migration.
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 Kursaha 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.
Kursaha
Contact
Odoo CRM
Contact (res.partner)
1:1Kursaha Contact records (name, email, phone, company, custom properties, lifecycle stage) map to Odoo Contact (res.partner). Standard fields map directly. Custom properties on Kontaha that have no Odoo standard field equivalent are created as custom fields via Odoo Studio before import. Lifecycle stage from Kontaha migrates as a custom selection field kontact_lifecycle_stage__c on Contact for audit continuity. We resolve the owner-to-User mapping by email match and set responsible_id on Contact during import.
Kursaha
Campaign
Odoo CRM
CRM Campaign (crm.campaign)
1:1Kursaha Campaigns (name, status, start/end dates, channel assignment) map to Odoo CRM Campaign. Channel assignment (mail, WhatsApp, SMS) is preserved as tag records or a custom channel field on the Odoo campaign. Campaign-level audience membership from Kontaha migrates as Odoo Contact tags with the campaign name as tag value, so sales reps can filter the pipeline by audience origin.
Kursaha
Audience Segment
Odoo CRM
Contact Tag or Saved Filter (ir.filters)
lossyKursaha audience segments are defined by filter rules against contact properties. We reconstruct segment logic using Odoo's native domain filtering in Saved Filters (ir.filters) with the same field, operator, and value logic. For segments used in campaign targeting, we recreate them as Odoo Contact tags. Rule complexity that exceeds Odoo's domain filter syntax is flagged for manual rebuild or scoped as a custom development item.
Kursaha
Template
Odoo CRM
Note (ir.ui.view or mail.template)
1:1Kursaha templates for mail, WhatsApp, and SMS content migrate as Odoo Note records or Odoo Email Templates (mail.template) depending on whether the template is intended for recurring use. We preserve template text content and basic HTML structure. Advanced AMP markup and interactive elements do not carry over and are flagged as a content rebuild item in the migration report.
Kursaha
Channel Assignment
Odoo CRM
Tag (res.partner.category)
1:1Kursaha channel assignments (mail, WhatsApp, SMS) are linked to campaigns rather than stored as independent contact records. We preserve channel-to-contact associations as Odoo Contact tags (mail_contact, whatsapp_contact, sms_contact) using a lookup table generated from the Kontaha CSV exports. Tags are created during the campaign import phase and linked during the contact reconciliation phase.
Kursaha
User Account
Odoo CRM
User (res.users)
1:1Kursaha user accounts (name, email, role) map to Odoo User records. We match by email and flag any Kontaha user without a matching Odoo User for admin provisioning before contact migration begins. Role assignments (admin, editor, viewer) in Kontaha map to Odoo access rights groups (Sales / Administrator / Custom) that the Odoo admin assigns post-migration.
Kursaha
Analytics Events
Odoo CRM
None
1:1Kursaha's real-time analytics and campaign engagement metrics (opens, clicks, conversions, cohort analysis) are computed by the platform's processing layer and are not exported as discrete records. We do not migrate analytics event history. Customers should capture screenshots of historical campaign performance dashboards before cutover and rebuild reporting using Odoo's native dashboard builder or a connected BI tool.
Kursaha
Integration Configuration
Odoo CRM
None
1:1Kursaha integrations with third-party tools (forms, CRM connections, analytics) are configuration-level settings that do not carry over during migration. Each integration must be reconfigured independently in Odoo. We document the existing integration list from the Kontaha dashboard during scoping and deliver it as a reconfiguration checklist for the customer's admin team.
Kursaha
Custom Properties
Odoo CRM
Custom Field (ir.model.fields)
lossyKursaha contacts and campaigns may include custom properties beyond the standard set (name, email, phone, company). We audit custom properties during discovery, create matching Odoo custom fields via Studio or metadata API before import, and map them in the transformation layer. Properties that use non-standard data types in Kontaha are flagged for type-normalization during mapping.
Kursaha
Campaign Activity Log
Odoo CRM
Note or Activity (mail.activity)
1:manyKursaha campaign activity logs (send events, delivery receipts) are exported as campaign event CSVs. We split these into Odoo Note records attached to the relevant Contact for historical reference, or into Odoo Activity records if the customer requests task-style follow-up reconstruction. Plain-text event content migrates; engagement metrics (open rate, click rate) do not because Kontaha does not export these as discrete records.
Kursaha
WhatsApp / SMS Channel Data
Odoo CRM
Tag + Custom Field
lossyKursaha WhatsApp and SMS channel assignments and message content are preserved as Odoo Contact tags (whatsapp_optin, sms_optin) plus a custom field for the most recent channel interaction date. Full message history is not migratable in the standard scope; we flag it as a separate re-engagement scope if the customer requires it post-migration.
Kursaha
Behavioral Property
Odoo CRM
Custom Field or Tag
lossyKursaha behavioral properties on contacts (engagement scores, last active date, click history) are extracted from the contact CSV where available. We map them to Odoo custom fields for numeric/scoring data and to Odoo Tags for categorical behavioral segments. Properties that are computed server-side by Kontaha and not present in the export are flagged as non-migratable in the discovery report.
| Kursaha | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | Contact (res.partner)1:1 | Fully supported | |
| Campaign | CRM Campaign (crm.campaign)1:1 | Fully supported | |
| Audience Segment | Contact Tag or Saved Filter (ir.filters)lossy | Fully supported | |
| Template | Note (ir.ui.view or mail.template)1:1 | Fully supported | |
| Channel Assignment | Tag (res.partner.category)1:1 | Fully supported | |
| User Account | User (res.users)1:1 | Fully supported | |
| Analytics Events | None1:1 | Not supported | |
| Integration Configuration | None1:1 | Fully supported | |
| Custom Properties | Custom Field (ir.model.fields)lossy | Fully supported | |
| Campaign Activity Log | Note or Activity (mail.activity)1:many | Fully supported | |
| WhatsApp / SMS Channel Data | Tag + Custom Fieldlossy | Fully supported | |
| Behavioral Property | Custom Field or Taglossy | 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.
Kursaha gotchas
No public API documentation complicates automated migration
Analytics and behavioral event data are not exportable
On-premise deployment complicates data retrieval
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 CSV export validation
We audit the source Kontaha account via screen-share with the customer's admin to confirm which data objects are available for export. We validate that dashboard exports cover Contacts, Campaigns, Audience Segments, and Templates at the volumes expected. We confirm the Kontaha tier (Starter, Standard, Enterprise Cloud, or Enterprise On-Premise) and flag whether on-premise database access or VPN credentials are required. The discovery output is a written migration scope with record counts per object, a data quality pre-audit (duplicate rate, missing required fields, encoding issues), and a confirmation of which objects are in-scope versus non-migratable.
Odoo schema preparation
We configure the destination Odoo CRM instance before any data import. This includes creating custom fields via Odoo Studio or metadata API for any Kontaha custom properties without standard Odoo equivalents, setting up at least one CRM pipeline with relevant stages mapped from Kontaha campaign channels, creating Contact tag categories for audience segments and channel assignments, and configuring the responsible User structure to match the Kontaha owner model. Schema preparation runs in a staging environment first, with validation by the customer's Odoo admin before production deployment.
CSV extraction and data normalization
We extract CSV files from Kontaha for each in-scope object: Contacts, Campaigns, Audience Segments, Templates, and User Accounts. The normalization step runs in a Python ETL pipeline that restores phone number formatting (including leading zeros), re-encodes all fields to UTF-8, parses flattened multi-value fields into Odoo tag-compatible format, flags records with missing required fields for customer review, and deduplicates contact records using email as the primary key. Normalized CSVs are validated against Kontaha source counts before Odoo import begins.
Staged import in dependency order
We import data into Odoo in dependency order: User records first (manual provisioning validated), then Contacts (with tag assignments resolved), then CRM Campaigns (with tag assignments for audience membership), then Saved Filters for segment reconstruction, then Templates as Notes or mail.template records, then campaign activity logs as Notes or Activities. Each phase emits a row-count reconciliation report. Contact-to-Campaign membership is established through the tag layer after both objects are imported. Bulk import uses Odoo's CSV import wizard for smaller volumes or the XML-RPC API for larger datasets with batch chunking.
Sandbox validation and customer sign-off
We run a full migration into the customer's Odoo staging or sandbox environment using production-like data volumes. The customer's admin reviews a random sample of 25-50 records per object against the Kontaha source, validates tag accuracy on Contacts, confirms campaign pipeline assignment, and signs off the mapping before production migration begins. Any field mapping corrections, custom field additions, or tag restructuring happen at this stage.
Production cutover and post-migration handoff
We freeze Kontaha writes during the cutover window, run a final delta migration of any records modified after the initial export, then enable Odoo as the system of record. We deliver the reconfiguration checklist for Integrations and the content rebuild notes for AMP templates, WhatsApp/SMS channel setup, and automation reconstruction. We provide a one-week hypercare window for reconciliation issues. We do not rebuild Kontaha automations or AI template workflows in Odoo; the handoff package documents the existing automation logic for the customer's admin or an Odoo implementation partner to rebuild post-migration.
Platform deep dives
Kursaha
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 Kursaha and Odoo CRM.
Object compatibility
1 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
Kursaha: Not publicly documented.
Data volume sensitivity
Kursaha 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 Kursaha to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Kursaha 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 Kursaha
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.