CRM migration
Field-level mapping, validation, and rollback between Kizen and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Kizen
Source
Odoo CRM
Destination
Compatibility
7 of 14
objects map 1:1 between Kizen and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Kizen and Odoo CRM represent two fundamentally different approaches to CRM architecture. Kizen uses an object-centric data model where every entity is a user-defined Object with custom fields and relationship types — meaning no two Kizen instances share an identical schema. Odoo CRM uses the Odoo framework's standard crm.lead, crm.opportunity, res.partner, and crm.lead.plan models with a fixed object structure that accepts custom fields but not new object types at the database level. We begin every Kizen migration with a schema discovery pass against the Kizen API to catalog every custom Object, field, and relationship before producing a field map. Kizen's AI-driven automations, multi-agent orchestration, and LLM-dependent logic do not transfer to Odoo; we export automation trigger conditions and action sequences as plain-text notes for the customer's Odoo admin to rebuild using Odoo's Studio or server actions. Relationships between Kizen Objects (Primary one-to-many and Additional many-to-many) must be denormalized or reconstructed using Odoo's many2one, one2many, and many2many field conventions. Attachments, tags, and historical engagement records migrate as structured data with parent-record references preserved.
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 Kizen 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.
Kizen
Contact (standard Kizen Object)
Odoo CRM
res.partner (contact type)
1:1Kizen Contacts map to Odoo res.partner records with partner_type = 'contact'. Standard Kizen fields (name, email, phone, address, lifecycle stage, owner) map to name, email, phone, street/city/country, category_id (as tags), and user_id respectively. Kizen custom Contact properties migrate as ir.model.fields on res.partner via a custom module deployed before migration. Owner resolution uses email match against Odoo's res.users table.
Kizen
Company (standard Kizen Object)
Odoo CRM
res.partner (company type)
1:1Kizen Companies map to Odoo res.partner records with partner_type = 'company'. Kizen's Primary relationship linking Contacts to Companies maps to Odoo's child_ids (one2many from the company partner to its contact children). Domain, industry, size, and revenue fields migrate as custom Char or Selection fields on res.partner. Company records are imported before Contact records to satisfy the parent partner lookup.
Kizen
Deal (standard Kizen Object)
Odoo CRM
crm.lead (opportunity)
1:1Kizen Deals map to Odoo crm.lead records with type = 'opportunity'. Deal stage maps to Odoo's stage_id using a stage-mapping table created during schema design. Deal amount, close date, and owner migrate to planned_revenue, date_deadline, and user_id respectively. Kizen's Primary relationship linking Deals to Companies and Contacts reconstructs as partner_id (many2one to res.partner) and contact_id on the crm.lead.
Kizen
Pipeline (standard Kizen Object)
Odoo CRM
crm.lead.plan
lossyKizen pipeline definitions (ordered stage lists with optional stage-specific defaults) map to Odoo crm.lead.plan records. We create one crm.lead.plan per Kizen pipeline and assign it to the corresponding crm.lead records during migration. Stage probabilities from Kizen are stored as custom Float fields on crm.lead for reporting use.
Kizen
Activity (Kizen activity object)
Odoo CRM
mail.message, calendar.event, note.note
1:manyKizen Activities are a generic interaction log linked to any Kizen Object. We split by activity_type at migration time: email activities map to Odoo mail.message records (via mail.thread convention), meetings map to calendar.event, tasks to project.task or crm.lead.calendar_event_ids, and generic notes to note.note. The parent Kizen Object reference resolves to the corresponding Odoo record ID using the migration ID cross-reference table.
Kizen
Custom Object (user-defined Kizen Object)
Odoo CRM
Custom module (ir.model + ir.model.fields)
lossyEach Kizen custom Object requires a custom Odoo module with ir.model and ir.model.fields declarations. We run schema discovery against the Kizen API to enumerate all custom Objects and their fields, then generate the XML metadata for the custom module during the schema design phase. Relationship fields in Kizen custom Objects (Primary and Additional types) map to many2one or many2many field declarations in the custom module. This is the most time-intensive part of a Kizen migration because there is no fixed target schema.
Kizen
Custom Field (global)
Odoo CRM
Custom field on target Odoo model
lossyKizen custom fields of type text, number, date, choice, currency, and relationship migrate as Odoo custom fields via Studio (for immediate needs) or via ir.model.fields XML in the custom module (for production deployments). Choice/picklist fields in Kizen map to Odoo selection fields with the same value labels. Currency fields map to monetary fields with the Odoo currency_id context set at migration time.
Kizen
Primary Relationship (Kizen one-to-many)
Odoo CRM
one2many field on parent model
lossyKizen Primary relationship fields link a parent Object to child Object records in a one-to-many structure. We map these to Odoo one2many fields declared on the parent model in the custom module. For example, a Kizen Company with a Primary relationship to Contacts becomes res.partner with a child_ids one2many pointing to contact-type partner records. The Odoo ORM enforces referential integrity automatically.
Kizen
Additional Relationship (Kizen many-to-many)
Odoo CRM
many2many field on both models
lossyKizen Additional relationship fields are many-to-many associations between Object records. We implement these as Odoo many2many fields declared on both participating models using the rel_table naming convention. If the many2many has additional attributes (e.g., a role field on the association), we create an intermediate Odoo model with two many2one fields, preserving the association metadata.
Kizen
Form and Survey
Odoo CRM
Survey survey (ir.model.data export of form structure)
1:1Kizen Forms and Surveys create and update Object records on submission. Form field definitions (names, types, conditional logic) are exported as a form structure document. Submitted form data (the resulting Object records) migrates as normal data into the mapped Kizen Object equivalents. The form definition itself is documented for manual rebuild in Odoo Survey or a custom module.
Kizen
Attachment / Document
Odoo CRM
ir.attachment
1:1Kizen file attachments linked to Objects migrate as Odoo ir.attachment records. We preserve the original filename, MIME type, and binary content. The res_model and res_id on ir.attachment point to the migrated Odoo model and record ID. Document management capabilities (shared documents, portals) are not migrated; the file binary is preserved but the document management UI must be configured in Odoo separately.
Kizen
Tag / Label
Odoo CRM
res.partner.category or custom tag field
lossyKizen tags applied to Object records migrate to Odoo res.partner.category (for partner tags), crm.tag (for opportunity tags), or a custom tag field depending on the target model. Tags stored as multi-checkbox custom properties in Kizen map to Odoo many2many tags. Tags without a clear Odoo equivalent are preserved as a multi-value Char field on the target record for the admin to classify post-migration.
Kizen
Owner
Odoo CRM
res.users
1:1Kizen Owners (users assigned to Object records) map to Odoo res.users by email match. We extract all distinct owner references from Kizen and match against the destination Odoo res.users table. Owners without a match enter a reconciliation queue for the customer to provision before record import resumes. Owner assignment on migrated records uses user_id on the Odoo model.
Kizen
Automations (standard workflow)
Odoo CRM
Written inventory (not migrated as code)
1:1Kizen standard workflow automations (field updates, email triggers, task creation, stage changes) are exported as a plain-text inventory documenting the trigger event, conditions, action sequence, and recommended Odoo Studio equivalent. The customer's Odoo admin rebuilds these using Studio server actions, automated actions, or a custom module. AI-driven Kizen automations are documented separately with a note that Odoo has no LLM-driven execution layer.
| Kizen | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact (standard Kizen Object) | res.partner (contact type)1:1 | Fully supported | |
| Company (standard Kizen Object) | res.partner (company type)1:1 | Fully supported | |
| Deal (standard Kizen Object) | crm.lead (opportunity)1:1 | Fully supported | |
| Pipeline (standard Kizen Object) | crm.lead.planlossy | Fully supported | |
| Activity (Kizen activity object) | mail.message, calendar.event, note.note1:many | Fully supported | |
| Custom Object (user-defined Kizen Object) | Custom module (ir.model + ir.model.fields)lossy | Fully supported | |
| Custom Field (global) | Custom field on target Odoo modellossy | Fully supported | |
| Primary Relationship (Kizen one-to-many) | one2many field on parent modellossy | Fully supported | |
| Additional Relationship (Kizen many-to-many) | many2many field on both modelslossy | Fully supported | |
| Form and Survey | Survey survey (ir.model.data export of form structure)1:1 | Fully supported | |
| Attachment / Document | ir.attachment1:1 | Fully supported | |
| Tag / Label | res.partner.category or custom tag fieldlossy | Fully supported | |
| Owner | res.users1:1 | Fully supported | |
| Automations (standard workflow) | Written inventory (not migrated as code)1: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.
Kizen gotchas
Custom Object schema discovery is required before migration scoping
AI-driven automations and multi-agent workflows do not transfer
No public bulk export API — pagination required for large datasets
Relationship field reconstruction at destination may alter record associations
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
Schema discovery and migration spec
We authenticate against the Kizen API using customer-provided credentials and run a schema discovery pass that enumerates every Kizen Object (standard and custom), all field definitions with data types, and all relationship field declarations (Primary and Additional). This output is the complete source schema. We pair it with a discovery call with the customer's Odoo admin to confirm the target Odoo version (Community or Enterprise), installed CRM apps, existing custom modules, and user count. The deliverable is a written migration spec covering the full object list, field-level mapping for each Object, relationship reconstruction strategy, and a migration sequence that respects record dependencies.
Custom Odoo module generation and deployment
We generate an Odoo custom module containing the ir.model and ir.model.fields XML declarations for every Kizen custom Object and custom field that does not have a native Odoo equivalent. This module also declares one2many and many2many fields for Kizen relationship fields, and intermediate models where the relationship has additional attributes. The module is deployed to a staging Odoo instance (Odoo.sh or a local Sandbox) before any data migration begins. Standard Kizen Objects (Contact, Company, Deal) use Odoo's native models and require no custom module, only Studio field additions if needed.
Staging migration and reconciliation
We run a full migration into the staging Odoo instance using production-equivalent data volume. The customer's Odoo admin and RevOps lead review the migrated records, spot-check 25-50 records per Object against the Kizen source (field values, relationship links, activity history), and validate that stage names, owner assignments, and tag mappings are correct. We correct any mapping errors and re-run the staging migration before production. The staging pass also surfaces any Odoo validation rules, required field constraints, or access rights that would block production import.
Owner and user reconciliation
We extract every distinct Kizen Owner referenced across all Object types and match against the destination Odoo's res.users table by email address. Any Kizen Owner without a matching Odoo User is placed in a reconciliation queue for the customer to provision the corresponding user account. This step must complete before record import resumes because OwnerId (user_id) is a required field on most Odoo CRM models. Inactive users may be provisioned as inactive and activated post-migration if the Kizen owner's historical assignment must be preserved.
Production migration in dependency order
We run production migration in this sequence: custom module deployment (staging-validated), standard Objects (res.partner as companies first, then contacts, then crm.lead as opportunities), custom Object records (using the generated custom module), relationship reconstruction (one2many and many2many via the cross-reference table), attachments (ir.attachment with res_model and res_id), activity history (mail.message, calendar.event, note.note via XML-RPC batch), and tags. Each phase emits a row-count reconciliation report before the next phase begins. We freeze Kizen write access during the cutover window and run a final delta migration of any records modified during the window.
Cutover, validation, and automation rebuild handoff
We freeze writes on Kizen, complete the delta migration, and enable Odoo as the system of record. We deliver a written automation inventory document cataloging every Kizen workflow (standard and AI-driven) with its trigger conditions, action sequence, and a recommended Odoo Studio or server action equivalent. We deliver the relationship reconstruction map documenting how each Kizen relationship was implemented in Odoo and any behavioral differences the team should expect. We support a one-week hypercare window for reconciliation issues raised by the customer's team. We do not rebuild Kizen automations as Odoo workflows inside the migration scope; that is a separate engagement for the customer's Odoo admin or an Odoo certified partner.
Platform deep dives
Kizen
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 Kizen 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
Kizen: Not publicly documented in Kizen's developer docs.
Data volume sensitivity
Kizen 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 Kizen to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Kizen 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 Kizen
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.