CRM migration

Migrate from Kordeva to Odoo CRM

Field-level mapping, validation, and rollback between Kordeva and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.

Kordeva logo

Kordeva

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

83%

10 of 12

objects map 1:1 between Kordeva and Odoo CRM.

Complexity

BStandard

Timeline

2-3 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Kordeva to Odoo CRM is a migration from a niche bundled platform with sparse API documentation to the world's most deployed open-source business suite with over 5 million users. Odoo CRM ships as a module within Odoo's modular ERP stack starting at $24.90/user/month. We migrate Contacts, Companies, Deals, and Activities using Odoo's XML-RPC API with batch chunking and parent-record lookup resolution. Kordeva's Custom Fields API lets us carry extended resource attributes into Odoo's custom field system. Odoo's data model splits what Kordeva may bundle as a single Contact into Lead and Contact objects; we resolve that split during scoping using Kordeva's lifecycle or status properties as the split criteria. Workflow configurations, Intelligent Workflow automation, and In-Depth Reporting are Premium-tier in Kordeva and do not migrate; we deliver a written automation inventory for Odoo Studio or automated action rebuild. Campus Management and Call Center records are excluded as separate product lines outside the CRM schema.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Kordeva logo

Kordeva

What's pushing teams away

  • The CRM market is crowded with better-known alternatives like HubSpot, Zoho CRM, and Pipedrive that have larger review communities and more third-party integrations.
  • Only one verified G2 review exists for Kordeva CRM, making it difficult for prospective buyers to assess real-world performance and support quality.
  • Kordeva lacks visible public documentation on API rate limits, endpoint specifications, and bulk export capabilities, raising concerns for teams needing programmatic data access.
  • The bundled feature set (CRM, campus management, call center) may represent unnecessary complexity for teams that only need a standalone CRM.

Choosing

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How Kordeva objects map to Odoo CRM

Each row shows how a Kordeva 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.

Kordeva

Contact

maps to

Odoo CRM

Lead or Contact (split required)

1:many
Fully supported

Kordeva Contacts with a defined lifecycle or status property split into Odoo CRM Lead (unqualified prospects) and Contact (qualified buyers attached to a Company). We apply the split rule during scoping using Kordeva's contact status or custom lifecycle field as the criterion, and store the original Kordeva lifecycle value in a custom field on the Odoo Lead or Contact for historical audit. If no lifecycle property exists, all Contacts migrate to Odoo Lead by default and the customer decides which records to convert to Contact post-migration.

Kordeva

Company

maps to

Odoo CRM

Company

1:1
Fully supported

Kordeva Company records map directly to Odoo CRM Company. The company name becomes the Odoo Company name field, and any Kordeva custom company-level fields migrate to Odoo custom fields on the res.partner model. Company-contact associations preserve as Odoo's child-partner relationships under the parent Company.

Kordeva

Deal

maps to

Odoo CRM

Opportunity

1:1
Fully supported

Kordeva Deals map to Odoo CRM Opportunity. The deal name maps to opportunity name, deal amount maps to Odoo's expected_revenue and planned_revenue fields, and Kordeva pipeline stage names map to Odoo stage values. We create Odoo stages matching Kordeva's pipeline stages before migration and configure probability percentages per stage.

Kordeva

Deal Stage

maps to

Odoo CRM

Opportunity Stage

lossy
Fully supported

Each Kordeva deal pipeline maps to an Odoo CRM team with its own stage sequence. Stage names migrate verbatim or are renamed during scoping if the customer wants a cleaner Odoo stage label set. Stage probabilities transfer as integer percentages on each Odoo stage record.

Kordeva

Custom Fields

maps to

Odoo CRM

Custom Fields

1:1
Fully supported

Kordeva Custom Fields API exposes extended attributes on Contacts, Companies, Deals, and Activities. We enumerate every custom field definition during discovery, preserve field type (text, number, date, picklist, checkbox), and recreate each as an Odoo custom field on the matching model before data import. Multi-select picklists in Kordeva map to Odoo selection fields or many2many tags depending on the field cardinality.

Kordeva

Owner

maps to

Odoo CRM

User

1:1
Fully supported

Kordeva Owners (the assigned user on Contact, Company, Deal, and Activity) map to Odoo CRM User by email match. We extract every distinct owner referenced on migrating records and match against Odoo user records. Any Kordeva Owner without a matching Odoo User enters a reconciliation queue for the customer's admin to provision before record import resumes.

Kordeva

Engagement: Email

maps to

Odoo CRM

mail.message (via mail.thread)

1:1
Fully supported

Kordeva email engagements (email logs against a Contact or Deal) migrate to Odoo mail.message records linked via the mail.thread model to the corresponding Odoo Lead, Contact, Company, or Opportunity. Email body, subject, sender, and timestamp transfer. Odoo's mail.tracking.value model preserves tracking status if Kordeva provides it.

Kordeva

Engagement: Call

maps to

Odoo CRM

Note (Call subtype)

1:1
Fully supported

Kordeva call engagements map to Odoo Note records with a call subtype tag. Call duration, disposition, and recording URL (if stored as a URL reference in Kordeva) migrate to Odoo note body fields. Odoo's phone module fields (x_phone_call_duration__c) are created during schema setup if structured call data is present.

Kordeva

Engagement: Meeting

maps to

Odoo CRM

Calendar.Event

1:1
Fully supported

Kordeva meeting engagements map to Odoo Calendar.Event records. Meeting title, start and end datetime, location, and attendee list transfer. Odoo Calendar attendee links (res.partner records) are resolved by email match against the migrated Contact or Lead records.

Kordeva

Engagement: Task

maps to

Odoo CRM

Project.Task (CRM project)

1:1
Fully supported

Kordeva task engagements map to Odoo CRM project tasks within the default CRM project. Task name, description, due date, priority, and assigned user transfer. Status mapping aligns Kordeva task states to Odoo stage values on the CRM task project. If Kordeva task hierarchy (subtasks) exists, we flatten to top-level tasks in Odoo with a parent task reference in the notes field.

Kordeva

Engagement: Note

maps to

Odoo CRM

Note

1:1
Fully supported

Kordeva free-text notes logged against Contacts, Companies, or Deals migrate to Odoo Note records. Notes attach to the Odoo record via Odoo's res_id/res_model referencing the migrated Lead, Contact, Company, or Opportunity. Rich text content transfers as-is; attachments migrate as Odoo IrAttachment records linked to the Note.

Kordeva

Accounts and Invoicing

maps to

Odoo CRM

res.partner (Accounting flag)

1:1
Mapping required

Kordeva invoice records, line items, and payment status transfer to Odoo as res.partner records with an accounting flag indicating billing relationship. Odoo's full Accounting module (Invoicing) is a separate module from CRM; invoice records requiring full invoice schema (invoice number, date, amount, tax, payment terms) are migrated separately as Odoo account.move records only if the customer activates the Odoo Accounting module. Without Accounting active, invoice metadata migrates as structured note fields on the Contact for accounts receivable context.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

Kordeva logo

Kordeva gotchas

High

Sparse public API documentation limits migration tooling confidence

Medium

Premium-tier feature boundary affects what data exists to migrate

Low

Single verified review on G2 creates information asymmetry

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • Kordeva sparse API limits extraction confidence

    Kordeva's Custom Fields API is documented on the kordon.app developer portal but no public documentation exists for contact export, bulk read, or webhook endpoints. Before migration scoping, we request API credentials and run a connectivity test against the Custom Fields and base CRM endpoints to confirm read access and response schemas. Without verified API access, we fall back to CSV export from the Kordeva UI, which may not capture custom fields or historical activity records. This is a pair-specific gotcha because the extraction method changes based on what we can verify in the API test.

  • Odoo Lead versus Contact split requires design decision

    Odoo CRM separates unqualified prospects (Lead) from qualified contacts attached to a Company (Contact). Kordeva has a single Contact object. We apply a split rule during migration using Kordeva's contact lifecycle stage or status property, but if no such property exists, all Kordeva Contacts migrate to Odoo Lead and the customer converts them manually post-migration. Skipping this design step results in orphaned Leads with no Company attachment or Contacts without the parent Company lookup.

  • Kordeva Intelligent Workflow does not migrate to Odoo Automated Actions

    Kordeva Premium tier's Intelligent Workflow automation is a rule-based system separate from Odoo's Automated Actions (Python server actions). We do not migrate Intelligent Workflow configurations as code. We deliver a written inventory of every active Kordeva automation rule with its trigger, conditions, and actions, plus a recommended Odoo Automated Action or Studio action equivalent. The customer's admin or an Odoo partner rebuilds them post-migration. Teams on Kordeva Regular tier have no Intelligent Workflow to migrate.

  • Invoice records require Odoo Accounting module activation

    Kordeva bundles Accounts and Invoicing at the Regular tier, but Odoo places full invoicing in a separate Accounting module with its own data model (account.move records). Without activating the Odoo Accounting module, invoice records transfer as structured notes on the Contact rather than as invoice objects. We scope whether the customer needs full invoice migration during discovery and configure the Odoo Accounting module before invoice-phase migration if required.

  • Odoo XML-RPC rate limits require batch chunking

    Odoo's XML-RPC API does not publish a formal per-hour rate limit in its public documentation, but community guidance and practical load testing suggest chunking large datasets into batches of 100-500 records per API call to avoid 502 or timeout errors on large imports. We apply batch chunking with retry logic on Odoo write operations. This is a technical constraint not unique to Kordeva but relevant to all Odoo migration targets.

Migration approach

Six steps for a successful Kordeva to Odoo CRM data migration

  1. API connectivity test and extraction method selection

    We request Kordeva API credentials (client ID, secret, and base URL) and run a connectivity test against the Custom Fields API and base CRM endpoints. We attempt to retrieve a sample of Contact, Company, Deal, and Activity records via API. If API access is confirmed and returns structured data, we plan XML-RPC batch extraction. If API access fails or returns incomplete data, we fall back to CSV export from the Kordeva UI and document which fields (particularly custom fields and activity history) may be unavailable. The extraction method is locked before schema design begins.

  2. Discovery and schema design

    We audit the Kordeva CRM environment: tier (Regular or Premium), object counts per type, custom field definitions and their Kordeva data types, pipeline and stage names, owner distribution, and activity volume by type. We pair this with Odoo CRM module activation decisions: whether the customer needs the Accounting module for invoice migration, whether Projects is required for task hierarchy, and which Odoo CRM team(s) will own the migrated data. We design the Odoo schema (Lead/Contact split rule, custom fields, stage sequences, team structure) and deploy it to an Odoo test database via XML-RPC before any production migration.

  3. Data quality audit and deduplication

    We run a data quality audit on extracted Kordeva records: duplicate contacts (same email, different records), incomplete fields (Contacts with no name or email), inconsistent phone number formats, and orphaned Deals (Deals with no associated Contact or Company). We provide the customer with a data quality report and a deduplication recommendation. We do not auto-delete records; we flag duplicates and let the customer's admin decide which record to keep or merge before migration.

  4. Owner reconciliation and User provisioning

    We extract every distinct Kordeva Owner referenced on Contacts, Companies, Deals, and Activities and match by email against Odoo User records. Owners without a matching Odoo User enter a reconciliation queue. The customer's admin provisions any missing Odoo Users (active or inactive depending on whether the original Kordeva owner is still employed). Migration cannot proceed past the Owner step because Odoo requires a valid res.users reference on record assignment fields.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Odoo Users (manual provisioning validated), Companies (from Kordeva Company records), Leads and Contacts (with the Kordeva lifecycle-based split applied and Company lookup resolved), Opportunities (with Lead/Contact lookup and Owner resolved), Custom Fields data (as x_custom_field__c on the relevant model), Activity history (emails, calls, meetings, tasks as mail.message and Note records via XML-RPC batch), and Invoice records (if Odoo Accounting module is active). Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and automation handoff

    We freeze Kordeva write access during cutover, run a final delta migration of any records modified during the migration window, then validate Odoo as the system of record. We reconcile record counts against the Kordeva export baseline and spot-check 20-30 random records for field accuracy. We deliver the Intelligent Workflow inventory document (Premium tier) and the automation rebuild guide for Odoo Automated Actions. We support a five-business-day hypercare window where we resolve data issues. We do not rebuild Kordeva Intelligent Workflow configurations inside the migration scope; that is a separate engagement.

Platform deep dives

Context on both ends of the pair

Kordeva logo

Kordeva

Source

Strengths

  • Bundles CRM, call center, and campus management in one vendor relationship.
  • Includes accounts and invoicing at the base tier without requiring a separate accounting tool.
  • Custom Fields API enables programmatic access to extended resource attributes.
  • Intelligent Workflow and In-Depth Reporting available on Premium tier.
  • Regular IT Support included across all tiers.

Weaknesses

  • Extremely limited public review presence with only one verified G2 review on record.
  • API documentation is sparse; no public rate limit specifications or bulk export endpoints found.
  • Campus Management and Call Center modules are separate product lines that may not integrate deeply with the CRM core.
  • Competitor research (TrustRadius) lists Kordeva alongside much larger CRM vendors, suggesting it occupies a niche position without comparable market traction.
  • No public pricing page found in the research data, making cost comparison difficult.
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

Complexity grading

How hard is this migration?

Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Kordeva and Odoo CRM.

  • Object compatibility

    B

    2 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Kordeva: Not publicly documented.

  • Data volume sensitivity

    B

    Kordeva doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Kordeva to Odoo CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Kordeva to Odoo CRM data migrations

Answers to the questions buyers ask most during Kordeva to Odoo CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Kordeva to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between two and three weeks for accounts under 15,000 Contacts and 3,000 Deals with no complex custom field hierarchies and no Odoo Accounting module requirement. Migrations with large engagement histories (over 200,000 activity records), multiple custom field groups, Kordeva Premium tier with active Intelligent Workflow configurations, or full invoice schema migration move to four to six weeks because of schema design, batch processing, and automation inventory work.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Kordeva.
Land in Odoo CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day