CRM migration
Field-level mapping, validation, and rollback between Jiva and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Jiva
Source
Odoo CRM
Destination
Compatibility
11 of 12
objects map 1:1 between Jiva and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Jiva is a healthcare-CRM platform built on a modified Salesforce architecture — it shares Salesforce's core data model (Contacts, Accounts, Opportunities) and extends it with healthcare-specific custom objects, care-plan fields, and workflow rules tailored to population-health workflows. Odoo CRM uses a unified crm.lead model for both leads and opportunities, stores contacts as res.partner records, logs engagement as mail.activity, and stores attachments in ir.attachment with res_model/res_id linking. FlitStack AI migrates Jiva Contacts to crm.lead records (using Jiva's deal status field to determine stage), maps healthcare custom fields to Odoo custom fields on crm.lead, preserves activity engagement timestamps and types in mail.activity, and re-uploads files to ir.attachment using Odoo's attachment URI model. One key model difference: Jiva stores deals as separate objects while Odoo consolidates leads and opportunities into one crm.lead — the migration routes each Jiva deal based on its status field. Workflows, sequences, and care-plan automations cannot migrate and must be exported as configuration documentation for Odoo Studio rebuild. The migration uses Jiva's REST API for export and Odoo XML-RPC for import, with a 24–48 hour delta-pickup window capturing in-flight records at cutover.
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 Jiva 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.
Jiva
Contact
Odoo CRM
crm.lead
1:1Jiva Contact records (people with name, email, phone, jobtitle, address) map directly to Odoo crm.lead records. FlitStack AI maps contact name to contact_name on crm.lead, email to email_from, phone to phone, and creates a res.partner record as a side-effect when Odoo's partner linking is active. Jiva's contact type and lifecycle-stage custom fields migrate as custom selection fields on crm.lead.
Jiva
Company
Odoo CRM
res.partner
1:1Jiva Company records (name, domain, industry, employee count, annual revenue, parent_company link) map to Odoo res.partner records. Jiva's parent_company_id becomes Odoo's parent_id on res.partner. Industry pick-list values require value mapping against Odoo's pre-defined industry list. Multi-company Jiva setups require careful sequencing: parent companies migrate before subsidiaries so parent_id resolves correctly.
Jiva
Deal
Odoo CRM
crm.lead
1:manyJiva Deal records map to Odoo crm.lead but the routing depends on Jiva's deal status field: Deals marked as 'Open' or 'Working' land in Odoo as crm.lead with stage_id set to the first pipeline stage; Deals marked as 'Closed Won' or 'Closed Lost' set the stage accordingly and preserve amount in planned_revenue. The Jiva dealname becomes the crm.lead name field; amount maps to planned_revenue.
Jiva
Healthcare Custom Object (Care Plan)
Odoo CRM
Custom Fields on crm.lead
1:1Jiva Care Plan records (care_plan_id, plan_status, enrollment_date, provider_id) have no direct Odoo CRM equivalent. We map these as custom fields on crm.lead: x_care_plan_id (char), x_plan_status (selection), x_enrollment_date (date), x_provider_id (char). The relationship between Jiva's Care Plan and Contact/Deal is preserved as notes in a dedicated custom text field for reference.
Jiva
Engagement / Call
Odoo CRM
mail.activity
1:1Jiva call engagement records (call_date, duration, direction, outcome, owner) map to Odoo mail.activity with type='call'. The call_date maps to create_date, duration stored in a custom x_call_duration (char) field as 'HH:MM:SS', direction stored in x_call_direction (selection), and outcome in x_call_outcome (char). Owner resolved by email match to Odoo res.users.
Jiva
Engagement / Email
Odoo CRM
mail.activity + mail.message
1:1Jiva email engagement records (email_date, subject, body, to_address, from_address, owner) map to Odoo mail.activity (type='email') with the email subject stored in the activity's note field and a mail.message record created for the full email body. Original timestamps preserved via create_date. Bcc and thread_id fields from Jiva are stored as custom char fields for email continuity.
Jiva
Engagement / Meeting
Odoo CRM
calendar.event
1:1Jiva meeting records (meeting_date, duration, subject, location, attendees) map to Odoo calendar.event. The meeting subject becomes the event name, start_date maps to start, duration converted to end, and location stored in location. Attendee emails resolved to Odoo res.partner records and added to calendar.event partner_ids.
Jiva
Attachment / File
Odoo CRM
ir.attachment
1:1Jiva file attachments on any record (filename, MIME type, download_url, attached_to_object, owner) map to Odoo ir.attachment. The res_model set to 'crm.lead', res_id set to the migrated lead ID. Odoo's ir.attachment uses a database or filestore path; files are re-uploaded via Odoo XML-RPC binary write. Filename preserved in the name field for user recognition.
Jiva
User / Owner
Odoo CRM
res.users
1:1Jiva owner_id fields on Contacts, Companies, and Deals resolve by email match against Odoo res.users. Unmatched owners are flagged before migration; their records can be assigned to a designated fallback user or the Odoo admin. Jiva's full user list is exported first and a user-resolution table produced as part of the migration plan.
Jiva
Custom Field
Odoo CRM
Custom Field (ir.model.fields)
1:1Jiva custom fields beyond standard CRM objects (healthcare-specific pick-lists, multi-select arrays, calculated fields) are enumerated during discovery and mapped to Odoo custom fields via Settings > Technical > Models. Field types are matched: Jiva date fields become Odoo date fields, Jiva pick-lists become Odoo selection fields, Jiva multi-selects become Odoo char or many2many depending on structure. Custom field labels are preserved from Jiva's field labels.
Jiva
Workflow / Automation
Odoo CRM
Not Migrated
1:1Jiva workflow rules, care-plan triggers, and sequence automations built in Jiva's workflow engine cannot migrate to Odoo CRM. These are exported as configuration documentation listing rule names, trigger conditions, and action definitions. Odoo Studio, server actions, and automated actions provide the rebuild surface. FlitStack AI delivers a Workflow Rebuild Reference document alongside the migration output.
Jiva
Tag
Odoo CRM
crm.tag
1:1Jiva tags applied to Contacts, Companies, and Deals are extracted and migrated to Odoo crm.tag records. FlitStack deduplicates the tag list during extraction and bulk-inserts the unique tags into crm.tag before any leads import. During lead migration, tags are linked to crm.lead via the crm.lead.res_partner_crm_tag_rel many-to-many association table, preserving the original tagging relationships from Jiva across all three object types.
| Jiva | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | crm.lead1:1 | Fully supported | |
| Company | res.partner1:1 | Fully supported | |
| Deal | crm.lead1:many | Fully supported | |
| Healthcare Custom Object (Care Plan) | Custom Fields on crm.lead1:1 | Fully supported | |
| Engagement / Call | mail.activity1:1 | Fully supported | |
| Engagement / Email | mail.activity + mail.message1:1 | Fully supported | |
| Engagement / Meeting | calendar.event1:1 | Fully supported | |
| Attachment / File | ir.attachment1:1 | Fully supported | |
| User / Owner | res.users1:1 | Fully supported | |
| Custom Field | Custom Field (ir.model.fields)1:1 | Fully supported | |
| Workflow / Automation | Not Migrated1:1 | Fully supported | |
| Tag | crm.tag1: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.
Jiva gotchas
No publicly documented REST API for bulk data export
Client-configurable rules are not portable across platforms
Clinical note attachments lack a migration path
Program and enrollment status values are customer-defined
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
Enumerate Jiva objects and custom field schema
FlitStack AI queries Jiva's REST API to produce a complete inventory of standard objects (Contact, Company, Deal), custom objects (Care Plan, Health Metrics), and custom field definitions including field type, pick-list values, and cross-object relationships. We cross-reference this inventory against Odoo CRM's standard crm.lead, res.partner, and mail.activity models to build the field mapping matrix. Custom field creation scripts are generated for Odoo so custom fields exist before any record import runs.
Resolve Jiva users to Odoo res.users by email
FlitStack AI exports Jiva's full user list and attempts email-based matching against Odoo res.users. A User Resolution Report is produced listing matched users, unmatched users, and recommended fallback assignments. Unmatched users must be created in Odoo or assigned a fallback owner before the migration commits records. This step prevents null user_id assignments that would strip ownership history from contacts, companies, and deals.
Create Odoo pipeline stages matching Jiva deal stages
Before any lead data lands in the target system, FlitStack AI reads Jiva's complete deal stage taxonomy including stage names, sequence positions, probability percentages, and forecast category assignments. We then create corresponding Odoo crm.stage records with matching names and sequence ordering. Probability values and forecast categories are re-applied from Odoo's stage configuration interface. If Jiva uses custom stage statuses beyond the standard set (Open, Working, Closed Won, Closed Lost), we create matching custom stages in the Odoo pipeline before data import begins. This preparatory step ensures that stage_id value-mapping resolves correctly for every deal record during migration, preventing records from landing in the wrong Kanban column due to missing stage definitions.
Run sample migration with field-level diff
A representative slice of Jiva records — typically 100–500 records covering contacts, companies, deals, and activities — migrates to Odoo as a validation run. We generate a field-level diff report comparing source Jiva values against destination Odoo values for every mapped field. You verify lifecycle stage mapping, healthcare custom field transfer, stage routing, and owner resolution before the full migration commits. Sample diff output is available within 24 hours of starting this step.
Execute full migration with delta-pickup window
Full migration runs: Contacts and Companies migrate first so partner records exist before leads link to them. Deals migrate as crm.lead records with stage_id and planned_revenue mapping. Activities (calls, emails, meetings) import to mail.activity and calendar.event. Attachments download from Jiva and re-upload to ir.attachment. A delta-pickup window of 24–48 hours captures any records modified or created in Jiva during cutover. An audit log records every import operation for reconciliation.
Deliver Workflow Rebuild Reference and post-migration audit
FlitStack AI exports Jiva workflow definitions as a structured configuration document listing each automation rule, trigger conditions, and action sequence. This document serves as the rebuild specification for Odoo Studio, server actions, and CRM lead scoring. The post-migration audit log is delivered as a CSV showing every record imported, its Odoo ID, import timestamp, and any errors encountered. One-click rollback reverts the Odoo database to its pre-migration state if reconciliation reveals critical data issues.
Platform deep dives
Jiva
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Jiva and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Jiva and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Jiva 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
Jiva: Not publicly documented.
Data volume sensitivity
Jiva 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 Jiva to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Jiva 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 Jiva
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.