CRM migration

Migrate from Cordis CRM to Odoo CRM

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

Cordis CRM logo

Cordis CRM

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

67%

8 of 12

objects map 1:1 between Cordis CRM and Odoo CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Cordis CRM to Odoo CRM is a migration from a standalone SMB CRM with limited API visibility to a modular open-source ERP platform where CRM is one of many integrated applications. Cordis CRM does not publish a documented REST or bulk-export API; customers must request a scoped data export from Cordis support or perform a manual CSV extraction. We normalize that export, resolve contact-company relationships, map Cordis pipeline stages to Odoo stages, and load via Odoo's XML-RPC or web service interface. We do not migrate Cordis automations, document version histories, or Google Workspace email threads as these either lack export paths or require separate extraction vectors. Odoo CRM's strength is its ERP ecosystem depth; teams moving to Odoo typically intend to activate accounting, inventory, or project modules alongside CRM, which means the migration scope often extends beyond standalone CRM data into partner and product records.

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

Cordis CRM logo

Cordis CRM

What's pushing teams away

  • Vendor explicitly states 'VCA software does not provide an API' (per SoftwareSuggest listing) — closing off programmatic integration and self-serve data extraction.
  • Pricing is fully sales-led with no public tier breakdown, making procurement and budgeting unpredictable.
  • Limited public review footprint — SourceForge shows zero user reviews, leaving teams without independent third-party validation.
  • Documentation footprint is thin compared to mainstream CRMs, slowing onboarding and reducing peer-driven knowledge resources.
  • Bundled with broader VCA suite — teams wanting only CRM may find the broader BPM/ERP framing heavier than needed.

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 Cordis CRM objects map to Odoo CRM

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

Cordis CRM

Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

Cordis CRM Contacts map to Odoo res.partner records with partner_type set to 'contact'. The Cordis contact profile fields (name, email, phone, address) map to Odoo's standard partner fields. Interaction history and custom contact properties transfer to Odoo partner fields or custom res.partner fields created during schema setup. We resolve the company linkage using Cordis's company relationship graph and assign partner_id (the company contact record) in Odoo.

Cordis CRM

Company

maps to

Odoo CRM

res.partner (company type)

1:1
Fully supported

Cordis CRM Company records map to Odoo res.partner with is_company=True. The company name maps to name, website from Cordis's domain field, and any industry or revenue data to custom fields. Company is created before contact import so that the partner_id lookup is satisfied at the moment of contact insert.

Cordis CRM

Pipeline

maps to

Odoo CRM

crm.lead (stage + team)

lossy
Fully supported

Cordis CRM pipeline stages map to Odoo crm.lead stage_id values within the appropriate sales team (crm.team). Each Cordis pipeline becomes a separate Odoo sales team or a stage category, with stage order and probability percentages preserved. We create the Odoo stage configuration before migration and assign stage_ids during lead import.

Cordis CRM

Pipeline Stage

maps to

Odoo CRM

crm.stage

lossy
Fully supported

Cordis stage names and probabilities migrate to Odoo crm.stage records within the relevant crm.team. Stage probability percentages map to Odoo's probability field on crm.lead. Stage order is preserved using Odoo's sequence field on stage.

Cordis CRM

Deal

maps to

Odoo CRM

crm.lead (opp type)

1:1
Fully supported

Cordis CRM Deals map to Odoo crm.lead records with type='opportunity'. The Cordis deal amount, close date, and stage map to Odoo's expected_revenue, date_closed, and stage_id. The associated contact and company resolve to Odoo res.partner records via the ID mapping table created during earlier import phases.

Cordis CRM

Task (automated and manual)

maps to

Odoo CRM

project.task or calendar.event

1:1
Fully supported

Cordis CRM Tasks map to Odoo project.task records (for project-tied tasks) or calendar.event records (for scheduled activities). Task status, due date, and assigned owner migrate. Recurrence rules from Cordis do not transfer automatically; we document recurrence patterns in the handoff inventory for manual reconfiguration in Odoo's activity plan scheduling.

Cordis CRM

Document

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

Cordis CRM documents linked to contact or company records migrate as Odoo ir.attachment records attached to the corresponding res.partner. We export the latest version of each document, preserve the filename, and re-associate via the record ID mapping table. Document version history (lineage) is not guaranteed to migrate; we flag multi-version documents in the scope document for customer review.

Cordis CRM

Campaign

maps to

Odoo CRM

crm.tag or utm.mixin

lossy
Fully supported

Cordis CRM Campaign records and membership data map to Odoo utm.mixin tracking fields on crm.lead (source_id, campaign_id, medium_id) plus crm.tag records for campaign categorization. Campaign engagement metrics are noted in the handoff inventory for Odoo reporting configuration.

Cordis CRM

Custom Fields

maps to

Odoo CRM

ir.model.field (custom)

lossy
Mapping required

Cordis CRM custom contact and company fields are surveyed during scoping and created as custom ir.model.field records on res.partner in Odoo before import. Field data types are mapped: text to char, numeric to float or integer, date to date, dropdown to selection. Custom field values on records migrate with field-to-field mapping per the scoping survey output.

Cordis CRM

Attachment

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

File attachments linked to Cordis CRM records export individually with filename preservation. We re-associate them to Odoo records (res.partner, crm.lead) using the ID mapping table generated during import. Attachments without a resolvable parent record are placed in an attachments queue for customer admin resolution.

Cordis CRM

Owner

maps to

Odoo CRM

res.users

1:1
Fully supported

Cordis CRM Owners resolve by email match against Odoo res.users in the destination database. Owners without a matching Odoo user go to a reconciliation queue for the customer's admin to provision or map before record import resumes. Owner mapping must complete before opportunity and task import to satisfy assignment fields.

Cordis CRM

Activity History (emails, calls, meetings)

maps to

Odoo CRM

mail.message + calendar.event

1:1
Fully supported

Cordis CRM interaction history (emails, call logs, meeting records) migrates to Odoo mail.message records linked to the parent res.partner or crm.lead via the ID mapping table. Email content attaches as mail.message body text; call duration and disposition become custom fields. Note that Cordis Google Workspace email history is not auto-exported; we extract from Gmail directly where the customer authorizes access rather than relying on the CRM export.

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.

Cordis CRM logo

Cordis CRM gotchas

High

No documented public API for self-service bulk export

Medium

Google Workspace integration does not auto-export email history

Medium

Document version history may not export cleanly

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

  • Cordis CRM has no public bulk-export API

    Cordis CRM does not appear to have a publicly documented REST API or bulk export endpoints in the sources reviewed. Customers must request a scoped data export file from Cordis support or perform manual CSV extraction before migration. We receive the export file, validate its completeness against the scoping survey, and normalize the format before loading into our pipeline. If the export is unavailable or incomplete, we escalate to a vendor-assisted export request before beginning the migration. This step adds one to two weeks to the timeline compared to migrations with self-service API access.

  • Google Workspace email history does not auto-export from Cordis

    Cordis CRM's Google Workspace integration enables document access from Drive but does not automatically sync email conversations or activity logs. G2 reviews confirm this behavior. We handle email history as a separate migration vector, extracting directly from Gmail via authorized access where the customer permits, and loading into Odoo mail.message records. Email threads not already logged in Cordis before the migration window require this separate extraction to preserve historical context in Odoo.

  • Odoo res.partner handles both contacts and companies

    Odoo does not have separate Contact and Company objects. The res.partner model serves both roles, distinguished by the is_company boolean flag and the parent_id self-referential link for contact-address hierarchies. Cordis CRM has distinct Contact and Company records. We map Company to res.partner with is_company=True first, then map Contact to res.partner with is_company=False and parent_id pointing to the mapped company. Failure to establish this hierarchy before importing leads to orphaned partner records and broken relationship data in Odoo reports.

  • Document version history may not migrate completely

    Cordis Technology Products document management supports version tracking for Excel files and other documents, but version lineage is not guaranteed to export as a complete audit trail in CSV format. We export the latest version of each document and flag any records with multiple versions in the scope document for the customer to decide whether earlier versions require manual restoration post-migration. Odoo's native attachment model (ir.attachment) does not have built-in version control without third-party add-ons.

  • Odoo custom field mapping across CRM and Sales modules requires configuration

    Odoo Community discussions confirm that custom fields on crm.lead (opportunities) do not automatically map to res.partner fields when a lead converts to a customer. Third-party add-ons (crm_custom_fields) or manual field mapping configuration are required to preserve custom field values during lead-to-partner conversion. We configure these mappings during the Odoo schema setup phase and document any conversion-related custom field requirements in the handoff inventory for the customer's admin to validate.

Migration approach

Six steps for a successful Cordis CRM to Odoo CRM data migration

  1. Export coordination and scoping

    We audit the Cordis CRM instance across contacts, companies, pipelines, stages, tasks, documents, campaigns, and custom fields. Because Cordis lacks a self-service API, we coordinate with the customer to submit a vendor-assisted export request to Cordis support or prepare a manual CSV extraction. We validate the export completeness against the scoping survey and normalize the format (UTF-8 encoding, consistent date formats, dedupe of duplicates) before loading into our migration pipeline. Any gaps trigger a re-export request before migration begins.

  2. Odoo schema design and configuration

    We design the destination Odoo schema including custom fields on res.partner and crm.lead (ir.model.field creation), Odoo sales team configuration (crm.team), stage definitions (crm.stage with probability and sequence), and custom field visibility settings. If the customer plans to activate Odoo accounting or inventory alongside CRM, we extend the schema to include product records (product.template), currency configuration, and warehouse settings at this stage. Schema is deployed to a staging database for validation before production migration.

  3. Staging migration and reconciliation

    We run a full migration into a staging Odoo database using the exported Cordis data at representative volume. The customer reconciles record counts (partners, leads, opportunities, tasks, attachments), spot-checks 20-30 records for field-level accuracy against the Cordis source, and validates that pipeline stage order and probability assignments match. Mapping corrections happen in this phase. Owner resolution (email matching to res.users) also completes here with a reconciliation queue for any unmapped owners.

  4. Document and email history extraction

    We extract documents from Cordis CRM records and prepare them for ir.attachment loading. For email history, we coordinate Gmail extraction where the customer authorizes access, separate from the Cordis export, and prepare mail.message records for loading. Document version lineage is noted; only the latest version migrates unless the customer specifically requests earlier versions be included in the scope. The document inventory is matched against the ID mapping table to establish parent record links.

  5. Production migration in dependency order

    We run production migration in record-dependency order: res.partner companies first (is_company=True), then res.partner contacts with parent_id resolved, crm.team and crm.stage configuration, crm.lead opportunities with partner_id and stage_id resolved, project.task and calendar.event activity records, ir.attachment document records, and mail.message engagement history. Each phase emits a row-count reconciliation report before the next phase begins. We use Odoo's XML-RPC or web service API with batch chunking and rate-limit handling.

  6. Cutover, validation, and handoff

    We freeze Cordis CRM writes during the cutover window, run a final delta migration of records modified since the initial export, then mark Odoo as the system of record. We deliver the handoff inventory covering active task status, pipeline stage mapping, document version flags, email extraction status, and automation rebuild recommendations. We do not rebuild Cordis automations as Odoo server actions; that work is documented separately for the customer's admin. We support a five-day hypercare window for reconciliation issues.

Platform deep dives

Context on both ends of the pair

Cordis CRM logo

Cordis CRM

Source

Strengths

  • Integrated with the broader Cordis VCA suite (CRM + ERP + BPM), useful for teams consolidating multiple business functions.
  • User-based pricing scales with team size rather than feature gating.
  • Real-time sales, financial, and forecast reporting dashboards.
  • 24/7 live support plus online support channels per vendor listing.
  • Free trial available to evaluate before commitment.

Weaknesses

  • Vendor confirms no API is provided, blocking standard programmatic integration patterns.
  • Pricing is sales-led with no public tier disclosure.
  • Negligible third-party review footprint (zero reviews on SourceForge).
  • Catalog website discrepancy — cordissolutions.com (in the catalog) is a different company (SAP-Microsoft interoperability) while the actual CRM lives at cordis.us, causing confusion in vendor identification.
  • Public documentation on data export, schema, and migration paths is not available.
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. 3 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 Cordis CRM and Odoo CRM.

  • Object compatibility

    B

    3 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

    Cordis CRM: Not applicable — no public API..

  • Data volume sensitivity

    B

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

Estimator

Estimate your Cordis CRM 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 Cordis CRM to Odoo CRM data migrations

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

Can't find your answer?

Walk through your Cordis CRM 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 three and five weeks for accounts under 5,000 contacts and straightforward pipeline structures. The export coordination phase (waiting on vendor-assisted extraction or manual CSV preparation) adds one to two weeks compared to migrations with self-service API access. Migrations with document exports, large engagement histories, custom field inventories, or planned activation of Odoo accounting or inventory modules extend to six to ten weeks.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Cordis CRM.
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