CRM migration
Field-level mapping, validation, and rollback between CDK Global and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
CDK Global
Source
Odoo CRM
Destination
Compatibility
11 of 12
objects map 1:1 between CDK Global and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
CDK Global is a dealer management system purpose-built for automotive retail: it tracks vehicles by VIN, manages F&I products (GAP, paint protection, extended service contracts), and ties customer records to specific units across sales, service, and parts departments. Odoo CRM is a modular ERP that models the world as contacts (res.partner), leads and opportunities (crm.lead), and pipeline stages (crm.stage) — it has no native automotive vehicle concept. Migrating from CDK Global to Odoo CRM requires flattening an industry-specific relational model into a general-purpose CRM schema. We extract CDK data via the Fortellis API or CDK Data Export Tool, pulling customers, vehicle associations, F&I deal line items, and service records. In Odoo, customers become res.partner records (company and contact roles), vehicle associations become custom char fields on the partner or a linked stock.vehicle record, F&I deals map to crm.lead with custom fields for product type and reserve amounts, and service history becomes an activity log or a linked crm.lead record per RO number. Odoo's XML-RPC API or CSV import handles the load, with post-migration Odoo Studio configuration to surface the CDK fields in the correct Kanban and form views. Workflows, F&I product rules, and CDK automations cannot migrate — they are destination-side configuration that your Odoo admin rebuilds using Odoo's automation rules and the sale.order product-line model. We flag every untranslatable construct before the migration runs so nothing is lost silently.
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 CDK Global 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.
CDK Global
CDK Customer
Odoo CRM
res.partner
1:1CDK customer records (name, email, phone, address) map directly to Odoo res.partner. CDK supports both individual buyers and business entities; the is_company flag on res.partner distinguishes them. CDK customer IDs are stored in a custom field (cdk_customer_id) on the partner for delta-run tracking.
CDK Global
CDK Vehicle / Unit
Odoo CRM
res.partner (custom field) + stock.vehicle (optional)
1:1CDK vehicle records (VIN, year, make, model, trim, stock number) have no direct Odoo CRM equivalent. We map VIN to a custom char field (x_vin) on res.partner and optionally create stock.vehicle records for dealerships that want full inventory tracking in Odoo Inventory app. The primary vehicle association is stored as x_primary_vehicle_vin on the contact.
CDK Global
CDK Customer-Vehicle Association
Odoo CRM
res.partner (multiple records)
many:1CDK allows one customer to be linked to multiple vehicles (buyer of Vehicle A, co-signer on Vehicle B, previous owner of Vehicle C). Odoo res.partner is one record per person. We preserve the full vehicle-association history as a JSON field (x_vehicle_links) on the primary res.partner, with type, role, and dates per vehicle link. Dealerships can optionally split these into Account Contact Relationships if Odoo Enterprise.
CDK Global
CDK F&I Deal / Finance Application
Odoo CRM
crm.lead
1:1CDK F&I deals track finance applications, approved products (GAP, wheel & tire, maintenance contracts), reserve amounts, and lender info. We map these to crm.lead with custom fields: x_fi_product_type (Selection), x_fi_reserve_amount (Monetary), x_fi_lender (Char), and x_fi_deal_number (Char). The lead name reflects the customer + vehicle. Product line items become sale.order.line after opportunity conversion.
CDK Global
CDK F&I Product (GAP, Etch, etc.)
Odoo CRM
product.product + sale.order.line
1:1CDK F&I product catalog entries map to Odoo product.product records. Each product type (GAP, tire protection, paint sealant) becomes a product with type=service. CDK product pricing maps to Odoo list_price. Products are linked to the crm.lead via x_fi_product_ids (Many2many) and materialize as sale.order.line after the opportunity converts to a quotation.
CDK Global
CDK Service Repair Order
Odoo CRM
crm.lead (activity log) or crm.lead (separate record)
1:1CDK service ROs are first-class records with RO number, vehicle, line items, technician, and close date. Odoo CRM has no native service RO object. We map RO data as activities on the linked crm.lead (log note with x_ro_number, x_ro_technician, x_ro_total), or as a separate crm.lead per RO with stage='Won' if the dealership wants full RO history visible as records. The mapping choice is confirmed during the pre-migration discovery call.
CDK Global
CDK Lead / Prospect
Odoo CRM
crm.lead
1:1CDK leads and internet leads (from CDK CRM or third-party sites via CDK integration) map directly to Odoo crm.lead. Source of lead (website form, phone inquiry, walk-in) is preserved in x_lead_source. CDK lead status maps to crm.stage: New → New, Working → Qualified, Sold → Won, Lost → Lost. Probability is set per stage in Odoo's pipeline configuration.
CDK Global
CDK Pipeline / Sales Stage
Odoo CRM
crm.stage
1:1CDK pipeline stages (Lead, App Started, Submitted, Funded, Booked) map to Odoo crm.stage records. Each stage gets a probability value matching the CDK close probability for accurate forecasting. New stages can be created in Odoo Settings → CRM → Stages before migration to match CDK's exact stage names.
CDK Global
CDK User / Employee / Owner
Odoo CRM
res.users
1:1CDK users (salespeople, F&I managers, service advisors) are matched to Odoo res.users by email address. CDK role (salesperson, finance director, service manager) maps to Odoo res.users groups: salesperson → Sales / User, manager → Sales / Manager. Unmatched CDK users are flagged as a pre-migration action item — the dealership must create Odoo user accounts before migration so owner fields resolve correctly.
CDK Global
CDK Deal / Sold Unit
Odoo CRM
crm.lead (stage=Won) + sale.order
1:1CDK sold deals represent a finalized vehicle sale with customer, vehicle, F&I products, and payment details. We map the sold unit to a crm.lead in Won stage (preserving create date and close date) and optionally generate a sale.order for the F&I product bundle. The sale.order links the customer (res.partner), the product/services sold, and the salesperson (user_id).
CDK Global
CDK Attachment / Document
Odoo CRM
ir.attachment
1:1CDK file attachments (credit applications, service invoices, vehicle photos) stored in CDK's document management export as files. We re-upload these to Odoo's ir.attachment table linked to the corresponding res.partner or crm.lead record. Odoo Cloud has a 115MB attachment limit per file; files larger than this are flagged for manual delivery.
CDK Global
CDK Inventory / Parts
Odoo CRM
product.product
1:1CDK parts inventory records (part number, description, cost, list price, bin location) map to Odoo product.product with type=product for parts and type=service for labor. CDK bin location maps to x_bin_location (Char) as a custom field. Parts not intended for Odoo Inventory app (i.e., reference-only) are stored as x_cdk_part_number on the contact record.
| CDK Global | Odoo CRM | Compatibility | |
|---|---|---|---|
| CDK Customer | res.partner1:1 | Fully supported | |
| CDK Vehicle / Unit | res.partner (custom field) + stock.vehicle (optional)1:1 | Fully supported | |
| CDK Customer-Vehicle Association | res.partner (multiple records)many:1 | Fully supported | |
| CDK F&I Deal / Finance Application | crm.lead1:1 | Fully supported | |
| CDK F&I Product (GAP, Etch, etc.) | product.product + sale.order.line1:1 | Fully supported | |
| CDK Service Repair Order | crm.lead (activity log) or crm.lead (separate record)1:1 | Fully supported | |
| CDK Lead / Prospect | crm.lead1:1 | Fully supported | |
| CDK Pipeline / Sales Stage | crm.stage1:1 | Fully supported | |
| CDK User / Employee / Owner | res.users1:1 | Fully supported | |
| CDK Deal / Sold Unit | crm.lead (stage=Won) + sale.order1:1 | Fully supported | |
| CDK Attachment / Document | ir.attachment1:1 | Fully supported | |
| CDK Inventory / Parts | product.product1:1 | 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.
CDK Global gotchas
CDK's 2024 ransomware outage sets migration precedent
Accounting records are migration-excluded by design
Deal/F&I bundle requires custom field mapping
Data Export Tool output requires transformation for non-CDK targets
Fortellis API rate limits are unpublished
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
Inventory CDK data objects and export mechanism
FlitStack runs a discovery session with the dealership's CDK admin to map all data objects in use — customers, vehicles, F&I deals, service ROs, parts inventory, leads, and users. We identify whether the CDK account uses the CDK Data Export Tool (SFTP push) or the Fortellis API (REST pull) and test connectivity. This step produces a data inventory spreadsheet listing record counts per object, estimated export file sizes, and the export schedule. We flag any custom CDK objects or fields that require field-mapping work before the test migration.
Design Odoo schema and create custom fields
Before data moves, FlitStack creates all required custom fields in Odoo: x_vin, x_vehicle_year, x_vehicle_make, x_vehicle_model, x_vehicle_trim, x_fi_deal_number, x_fi_product_type, x_fi_reserve_amount, x_fi_lender, x_ro_number, x_ro_status, x_ro_total, x_cdk_customer_id, x_vehicle_links, and x_bin_location. We configure the CRM pipeline stages to match CDK lead and deal statuses. For Enterprise plan users, we set up XML-RPC API credentials; for Community users, we configure the CSV import template. Odoo Studio is used to add custom fields to the contact form and lead Kanban view.
Resolve CDK users to Odoo user accounts
FlitStack exports the CDK user list (names, emails, roles) and matches each against the dealership's planned Odoo res.users accounts. Salespeople, F&I managers, and service advisors in CDK must have corresponding Odoo user accounts before owner fields can resolve during import. Unmatched CDK users are listed as a pre-migration action item — the dealership creates the Odoo accounts or assigns a fallback user. No record lands in Odoo without a resolved owner_id.
Run sample migration with field-level diff
A representative slice (typically 100–500 records spanning customers, vehicles, F&I deals, and service ROs) migrates to Odoo first. FlitStack generates a field-level diff comparing source CDK values against the destination Odoo fields for each record. The dealership's admin reviews the diff to confirm vehicle-association mapping, F&I product type assignment, and service RO activity log format. This is the validation gate — if custom field names are missing or value mappings are incorrect, they are corrected before the full run.
Execute full migration with delta-pickup window
The full CDK dataset is extracted and loaded into Odoo using the validated mapping. A delta-pickup window (24–48 hours) captures any CDK records created or modified during the cutover window — the dealership team continues working in CDK until the final delta is confirmed. FlitStack provides an audit log of every import operation (record count, field count, errors, skipped records) and a one-click rollback script that reverts all imported records if reconciliation fails. After rollback confirmation, the CDK account is placed in read-only mode and the dealership confirms Odoo as the system of record.
Platform deep dives
CDK Global
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 CDK Global 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
CDK Global: Not publicly documented by CDK.
Data volume sensitivity
CDK Global exposes a bulk API — large-volume migrations stream efficiently.
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 CDK Global to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your CDK Global 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 CDK Global
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.