CRM migration
Field-level mapping, validation, and rollback between Combit CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Combit CRM
Source
Odoo CRM
Destination
Compatibility
10 of 12
objects map 1:1 between Combit CRM and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Combit CRM to Odoo CRM is a migration from a German-only, on-premise-oriented platform with no documented REST API to an open-source, API-first ERP suite with a CRM module accessible via XML-RPC. Combit CRM organizes data around Addresses, Contacts, Companies, Projects, Activities, and Deals; Odoo CRM models prospects and opportunities as a single crm.lead object with stage-based pipeline control. Because Combit has no REST API, we extract via direct database access when the on-premise version is in use, or via the application's built-in CSV/Excel export when cloud-hosted. All German field labels, picklist values, and object names must be translated during the mapping phase. We pre-create the destination schema in Odoo—including custom fields, CRM stages, and tags—before any data loads, then sequence record imports in dependency order (Accounts/Partners first, then Contacts, then Opportunities/Deals, then Activities) with reconciliation reports at each phase. Combit workflow automations do not migrate; we deliver a written inventory of every automation for the customer's admin to rebuild in Odoo's Action Rules and Studio.
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 Combit 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.
Combit CRM
Address (Anschrift)
Odoo CRM
res.partner (address fields)
1:1Combit CRM's Address records store location data (street, city, postal code, country) as separate records linked to multiple Contact records. We extract address fields from the Anschrift table and map them to the standard address fields on res.partner in Odoo (street, street2, city, zip, country_id). Because Odoo's Contact model does not use a separate address record, we resolve the contact-to-address relationship during the transform phase and populate partner address fields directly. If a Combit contact has multiple addresses, the primary (default) address maps to res.partner and additional addresses migrate to res.partner.address_ids as a one2many relation.
Combit CRM
Contact (Kontakt)
Odoo CRM
res.partner
1:1Combit Contacts map to Odoo res.partner records. The mapping preserves name fields (firstname, lastname, function/title), phone, email, and website, and resolves the parent Address record reference to Odoo's inline address fields. Combit's contact type (person vs. organization) maps to Odoo's is_company flag: individual contacts set is_company=False; organization contacts set is_company=True and the name maps to the company name field. Partner lang defaults to en_US unless the customer's scoping identifies a different language preference.
Combit CRM
Company (Firma)
Odoo CRM
res.partner (company type)
1:1Combit Companies map to Odoo res.partner records with is_company=True. Company name, industry classification, revenue range, and number of employees migrate to the corresponding Odoo partner fields. Company records serve as the parent for related Contact records; we create the Company partner first, then resolve the parent_id reference when importing the associated Contact partners. Website domain from Combit maps to partner website field and is used as the deduplication key if the customer has existing partner records in Odoo.
Combit CRM
Deal (Verkauf/Geschäft)
Odoo CRM
crm.lead
1:1Combit Deals map to Odoo crm.lead records in the Opportunities view. We preserve the deal name, value (expected_revenue), expected_close date, stage name, and owner. Combit's configurable pipeline stages map to Odoo's crm.stage values, which we pre-create in the destination Odoo instance before migration to match the Combit stage names translated to English. Loss reason and win reason from Combit custom fields migrate to Odoo's lost_reason and won_reason fields. Note that Odoo uses a single crm.lead model for both inbound leads and opportunities; Combit's separate Deal concept maps to crm.lead with type='opportunity'.
Combit CRM
Deal Stage
Odoo CRM
crm.stage
lossyEach Combit Deal pipeline stage becomes an Odoo crm.stage record. We preserve stage sequence order, probability percentage (where set in Combit), and the stage name in English. The Combit pipeline (if multiple exist) maps to Odoo crm.team, with each Combit pipeline assigned to a separate sales team in Odoo. If Combit has custom stage colors or categories, these map to Odoo's stage_color field if available or are documented as notes for the admin.
Combit CRM
Activity (Aktivität)
Odoo CRM
crm.activity + mail.message
1:1Combit Activities (calls, meetings, tasks, notes) attached to Contacts or Deals map to Odoo's crm.activity records for calendar events and to mail.message records for the chatter timeline. We preserve activity type, date, duration, description, and owner. Combit's Activity-to-Contact and Activity-to-Deal lookups resolve to the migrated Odoo partner_id and crm_lead_id references. If Combit stores email body content in activities, that migrates as a mail.message on the crm.lead or res.partner.
Combit CRM
Project (Projekt)
Odoo CRM
project.project
1:1Combit Projects span multiple contacts and activities and may include budgets, line items, and dates. If the destination Odoo instance includes the Project module (Odoo Enterprise or a community project app), we map Combit Projects to project.project records with tasks migrated as project.task. If only the CRM module is in scope, Combit Projects with linked Deals map to crm.lead records with project name preserved in a custom field for reference, and we flag the project-object gap in the handoff documentation. Project-to-Deal relationships are preserved via a lookup field.
Combit CRM
Custom Field (Benutzerdefiniertes Feld)
Odoo CRM
ir.model.fields (custom)
lossyCombit CRM supports extensive user-defined fields across all objects. We identify every custom field definition during the discovery phase (field name in German, data type, picklist values), translate the label to English, map the Combit data type to the equivalent Odoo field type (char, text, integer, float, selection, many2one, one2many), and pre-create the fields in the destination Odoo schema via data migration or a Studio export-import round trip before the main record import begins. Multi-select picklists map to Odoo many2many tags or selection fields depending on expected cardinality.
Combit CRM
User / Owner (Benutzer/Vertriebspartner)
Odoo CRM
res.users
1:1Combit Users map to Odoo res.users records. We resolve by email match. If the customer has an existing Odoo instance with existing users, we match Combit owner email to Odoo user login. Any Combit owner without a match goes to a reconciliation queue for the customer's admin to provision before record import resumes. Inactive Combit owners (departed employees) map to inactive Odoo users to preserve historical assignment data.
Combit CRM
Tag / Category (Kategorie)
Odoo CRM
crm.tag
1:1Combit Categories used to tag Contacts, Companies, and Deals map to Odoo crm.tag records. Multi-value category assignments on a single Combit record map to multiple crm.tag records via crm.tag.rel many2many table entries. We preserve tag names in English (translated during the mapping phase) and flag any tag that appears on fewer than 5 records as a low-frequency tag that may need cleanup in Odoo.
Combit CRM
Attachment / Document
Odoo CRM
ir.attachment
1:1Combit CRM file attachments on records migrate to Odoo ir.attachment records linked via res_model and res_id to the migrated parent record (res.partner or crm.lead). We extract files from the Combit database or file store, preserve original filenames and MIME types, and store them in Odoo's attachment storage (database or filestore depending on Odoo configuration). Files larger than Odoo's default attachment size limit are flagged for the admin to review before migration.
Combit CRM
Engagement history (full timeline)
Odoo CRM
mail.message + crm.activity
1:1Combit's complete engagement timeline—calls, meetings, tasks, notes, and logged emails—migrates to Odoo's crm.activity records (for calendar-type entries) and mail.message records (for note-style entries and email content). The original timestamp, owner, and description are preserved. Activity type mapping: Combit 'Telefonat' maps to crm.activity with subtype='call'; 'Besprechung' maps to crm.activity with subtype='meeting'; 'Notiz' maps to mail.message; emails map to mail.message with message_type='email'. The parent record reference (contact_id, lead_id) is resolved to the migrated Odoo IDs at migration time.
| Combit CRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Address (Anschrift) | res.partner (address fields)1:1 | Fully supported | |
| Contact (Kontakt) | res.partner1:1 | Fully supported | |
| Company (Firma) | res.partner (company type)1:1 | Fully supported | |
| Deal (Verkauf/Geschäft) | crm.lead1:1 | Fully supported | |
| Deal Stage | crm.stagelossy | Fully supported | |
| Activity (Aktivität) | crm.activity + mail.message1:1 | Fully supported | |
| Project (Projekt) | project.project1:1 | Fully supported | |
| Custom Field (Benutzerdefiniertes Feld) | ir.model.fields (custom)lossy | Fully supported | |
| User / Owner (Benutzer/Vertriebspartner) | res.users1:1 | Fully supported | |
| Tag / Category (Kategorie) | crm.tag1:1 | Fully supported | |
| Attachment / Document | ir.attachment1:1 | Fully supported | |
| Engagement history (full timeline) | mail.message + crm.activity1: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.
Combit CRM gotchas
No documented REST API for automated migration
German-language interface complicates discovery
On-premise deployments require database-level extraction
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 extraction method confirmation
We scope the Combit CRM instance via bilingual contact or German-speaking analyst. We identify the deployment model (cloud-hosted vs. on-premise), the database type and access method for on-premise instances, the built-in export options for cloud instances, the full list of custom objects and user-defined fields (translated from German), the pipeline stage definitions, and the engagement volume across activities. This produces a written migration scope document that confirms the extraction method, the data model gap analysis, and the Odoo edition recommendation (Community vs. Online vs. Odoo.sh).
German schema translation and Odoo destination schema design
We translate every Combit object name, field label, and picklist value from German to English and document the mapping table. We design the destination Odoo schema: pre-create all custom fields via Studio or direct data migration, define crm.stage values matching the Combit pipeline stages in sequence order, configure crm.team records if multiple Combit pipelines exist, and create the crm.tag records. The schema is deployed into a staging Odoo instance (Odoo Online test database or Odoo.sh branch) before any record migration begins.
Data extraction from Combit CRM
For on-premise deployments, we connect with read-only database credentials and run extraction queries against the Combit schema, extracting Addresses, Contacts, Companies, Deals, Activities, Projects, custom fields, tags, and attachments in dependency order. For cloud deployments, we use the Combit application's built-in export to generate CSV or Excel files for each object. We validate row counts from the export against the application's reported totals at the record level. Any gaps are reconciled with the customer before the transform phase begins. Attachments are exported to a file store with their original filenames preserved.
Transformation and staging migration
We run the transform logic: German-to-English field name mapping, data type casting, relationship resolution (Contact-to-Address, Deal-to-Contact, Activity-to-Contact/Deal), owner-to-user email matching against the Odoo User table, and tag consolidation. We load a first staging migration into the staging Odoo instance, produce a row-count reconciliation report (Records In, Records Out, Records Rejected, Rejection Reasons), and deliver a random-sample spot-check of 25-50 records for the customer's admin to verify against the Combit source. Any mapping corrections are applied before the production migration begins.
Production migration in dependency order
We run the production migration in record-dependency order: res.partner (Companies first as parent, then Contacts), crm.lead (Deals as opportunities with partner_id resolved), crm.activity and mail.message (Activities), project.project (if in scope), ir.attachment (files linked by res_model and res_id). Each phase emits a reconciliation report. The migration user in Odoo is granted elevated permissions (API access, write access to all CRM models) during the migration window only. Any validation rule rejections trigger a data-fix pass before the next phase begins.
Cutover, validation, and automation handoff
We freeze writes to Combit during the cutover window, run a final delta migration of any records created or modified during the migration, then confirm Odoo as the system of record. We deliver the Workflow and Automation Inventory document listing every Combit workflow with its trigger, conditions, actions, and recommended Odoo Action Rule equivalent. We support a one-week hypercare window for reconciliation issues. We do not rebuild Combit automations as Odoo Action Rules inside the migration scope; that work is a separate engagement or an internal admin task.
Platform deep dives
Combit CRM
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Combit CRM and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Combit CRM and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Combit 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
Combit CRM: Not publicly documented.
Data volume sensitivity
Combit 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 Combit CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Combit 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 Combit 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.