CRM migration
Field-level mapping, validation, and rollback between Jarvis CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Jarvis CRM
Source
Odoo CRM
Destination
Compatibility
10 of 13
objects map 1:1 between Jarvis CRM and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Jarvis CRM to Odoo CRM is a structural migration from a per-customer FileMaker Pro instance with no documented REST API to a modular open-source ERP with a full XML-RPC and REST API. There is no API to query Jarvis data directly, so we work with the customer's FileMaker host to extract contacts, companies, opportunities, projects, and time entries via FileMaker export scripts, preserving primary and foreign keys across all tables. We reconstruct the relational links in Odoo using its CRM Contacts, Accounts, and Opportunities objects, map pipeline stages to Odoo stages, and handle multi-company configuration if the destination Odoo deployment uses company isolation. Custom fields, vendor records, and product catalogs migrate as typed fields or mapped records. One-time automations and FileMaker Pro scripts do not migrate; we deliver a written inventory for the customer's team to rebuild in Odoo's action-automation framework.
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 Jarvis 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.
Jarvis CRM
Contact
Odoo CRM
CRM Contact
1:1Jarvis CRM Contacts map to Odoo CRM Contacts. We extract contact records via FileMaker export or direct table access, preserving the contact's primary key and any foreign-key links to the parent company table. Email address is used as the dedupe key during Odoo import. Custom contact fields identified in the schema audit become Odoo CRM custom fields on the res.partner model.
Jarvis CRM
Company
Odoo CRM
CRM Account
1:1Jarvis CRM Company records map to Odoo CRM Accounts. The company name becomes the Account name, and the FileMaker company ID is preserved as an external reference field for relational integrity. We export the Company table before the Contact table so that Account records are available to satisfy the many2one lookup at Contact import time.
Jarvis CRM
Opportunity
Odoo CRM
CRM Opportunity
1:1Jarvis CRM Opportunities map to Odoo CRM Opportunities (crm.lead with type='opportunity'). We extract deal values, stage names, owner assignments, and associated contact and company references. Pipeline stage names vary per Jarvis deployment; we map them to Odoo stage IDs configured during Odoo CRM setup. Lost and Won reasons from custom Jarvis fields migrate as Odoo lead custom fields.
Jarvis CRM
Pipeline / Deal Stage
Odoo CRM
Stage + Sales Team
lossyJarvis pipeline stages are fully customizable per deployment. We map each source stage to an Odoo CRM stage within the designated pipeline, preserving stage ordering and probability percentages where available. Odoo's Kanban view order is set by the sequence field. If the destination uses Odoo Sales Teams, pipeline ownership maps to team_id on the Opportunity record.
Jarvis CRM
Project
Odoo CRM
Project Management (project.project)
1:1Jarvis CRM Projects map to Odoo Project Management (project.project). We extract project name, description, assignees, and task structure. Gantt chart layout data migrates as project metadata (tags, custom fields); raw task dependencies require manual reconstruction in Odoo because the Gantt constraint model differs. Customer (client) association maps to an Odoo partner_id on the project record.
Jarvis CRM
Task
Odoo CRM
Project Task (project.task)
1:1Jarvis Tasks and activities map to Odoo Project Tasks. We extract task name, description, assignee (mapped to Odoo User via email match), due date, and linked project reference. If the task is CRM-related rather than project-related in the source, it maps to an Odoo CRM Note or the chatter on the relevant Opportunity or Contact record.
Jarvis CRM
Time Entry
Odoo CRM
Timesheet (account.analytic.line) or Project Task
1:1Jarvis time entries (billable and non-billable hours) map to Odoo Timesheet records (account.analytic.line) if the Odoo deployment includes the Timesheet app, or to Project Task records with time-tracking fields if only the Project app is active. We preserve the original time entry ID, the associated project or contact reference, and the billing flag to maintain audit continuity.
Jarvis CRM
Product / Service
Odoo CRM
Product Template (product.template)
1:1Jarvis CRM Product and Service catalog records map to Odoo Product Templates. We extract item names, descriptions, prices, and SKU values. Product-to-opportunity associations in Jarvis (line items on deals) map to Odoo Opportunity Line Items if the Odoo deployment includes the Sale Orders app. Pricing rules from Jarvis migrate as Odoo pricelist items.
Jarvis CRM
Vendor / Purchase Order
Odoo CRM
Purchase app (res.partner + purchase.order)
1:1Jarvis CRM Vendor records map to Odoo Contacts with supplier flag enabled (res.partner with supplier_rank > 0). Purchase order headers and line items migrate to Odoo Purchase Orders (purchase.order and purchase.order.line) if the destination Odoo deployment includes the Purchase app. QuickBooks Online vendor data held within Jarvis may duplicate or conflict with imported vendor records; we flag duplicates for the customer to resolve before import.
Jarvis CRM
Marketing Campaign / Group
Odoo CRM
CRM Tag or Mailing List
lossyJarvis CRM Campaign and contact group records have no direct Odoo CRM analog. We map campaign membership to Odoo CRM Tags on the Contact record, preserving the original campaign name as a tag value. If the Odoo deployment includes the Email Marketing app, contacts are added to corresponding Odoo Mailing Lists. The customer selects the preferred segmentation strategy during scoping.
Jarvis CRM
Custom Object / Custom Property
Odoo CRM
Custom Field or Custom Module
lossyJarvis FileMaker custom fields and custom tables vary per deployment. We identify every custom property during the mandatory schema audit, classify each as either a standard-field equivalent (and map it to an Odoo standard field) or a genuine custom field (and create it as an Odoo custom field on the relevant model). Custom FileMaker tables without an Odoo equivalent require a separate custom module scope, which we estimate separately from the base migration fee.
Jarvis CRM
Attachment
Odoo CRM
Document (ir.attachment)
1:1File attachments stored within the Jarvis FileMaker instance can be exported as binary files and stored in Odoo Document Management (ir.attachment) linked to the parent record (Contact, Account, Opportunity, Project). Attachment storage paths vary by deployment; we identify them during scoping. We include file naming conventions that preserve record context (e.g., ContactID_Filename) to maintain discoverability in Odoo.
Jarvis CRM
User / Owner Assignment
Odoo CRM
User (res.users)
1:1Jarvis CRM Owner assignments on records map to Odoo User records. We resolve owners by email match against the destination Odoo User table. Any Jarvis owner without a matching Odoo User goes to a reconciliation queue for the customer's admin to provision before record import resumes. Inactive Odoo users are matched only if the customer specifies that historical owner assignment must be preserved.
| Jarvis CRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | CRM Contact1:1 | Fully supported | |
| Company | CRM Account1:1 | Fully supported | |
| Opportunity | CRM Opportunity1:1 | Fully supported | |
| Pipeline / Deal Stage | Stage + Sales Teamlossy | Fully supported | |
| Project | Project Management (project.project)1:1 | Fully supported | |
| Task | Project Task (project.task)1:1 | Fully supported | |
| Time Entry | Timesheet (account.analytic.line) or Project Task1:1 | Fully supported | |
| Product / Service | Product Template (product.template)1:1 | Fully supported | |
| Vendor / Purchase Order | Purchase app (res.partner + purchase.order)1:1 | Fully supported | |
| Marketing Campaign / Group | CRM Tag or Mailing Listlossy | Fully supported | |
| Custom Object / Custom Property | Custom Field or Custom Modulelossy | Fully supported | |
| Attachment | Document (ir.attachment)1:1 | Fully supported | |
| User / Owner Assignment | User (res.users)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.
Jarvis CRM gotchas
No documented public API means migration requires FileMaker-native exports
FileMaker schema varies per deployment because the platform is fully customizable
Customizations are not included in base pricing and require separate engagement
Data relationships between FileMaker tables must be reconstructed manually
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 FileMaker schema audit
We audit the source Jarvis FileMaker Pro instance to identify all active tables, fields, relationships, and custom scripts. We coordinate with the customer's FileMaker host to access the live deployment and document the layout structure, foreign-key references between tables, and any custom fields that have been added since initial deployment. We pair this with Odoo setup scoping: which Odoo apps are active (CRM only, or CRM plus Project, Purchase, and Inventory), whether multi-company mode is in use, and which custom fields are needed in Odoo before import begins. The discovery output is a written migration scope and data model map.
FileMaker data extraction with relational-ID preservation
We extract data from the FileMaker instance in CSV or direct table-export format. We request every table in scope (Contacts, Companies, Opportunities, Projects, Tasks, Time Entries, Products, Vendors, and any custom tables) in a single coordinated extraction window so that all foreign-key IDs are captured at the same point in time. We export the primary key and every foreign-key column from each table as text fields, even if they are not displayed in the FileMaker UI, so that we can reconstruct the relational structure in Odoo. We validate record counts per table against the customer's expectations before proceeding.
Odoo environment setup and custom field creation
We configure the destination Odoo CRM environment: create custom fields on res.partner (Contact and Account), crm.lead (Opportunity), project.project and project.task (Project and Task), and account.analytic.line (Timesheet) to match the custom fields identified in the FileMaker schema audit. We configure pipeline stages with the correct names, sequences, and probabilities, and set up multi-company isolation if applicable. We create Odoo Users for every distinct owner referenced in the source data and match them by email against the existing Odoo User table.
Sandbox migration and reconciliation
We run a full migration into the customer's Odoo staging environment using production-like data volume. The customer reconciles record counts (Contacts in, Accounts in, Opportunities in, Tasks in), spot-checks 25-50 random records against the FileMaker source, and verifies that relational links (contact-to-account, opportunity-to-contact) are intact in Odoo. Any field mapping corrections, custom field additions, or stage configuration adjustments happen here, not in production. We obtain written sign-off on the sandbox result before scheduling production cutover.
Production migration in dependency order
We run production migration in strict dependency order: Odoo Users (validated), Accounts (from Companies), Contacts (with partner_id resolved to the Account), Opportunities (with partner_id and user_id resolved, and stage_id mapped to the Odoo pipeline), Products and Pricelists, Project records, Tasks (linked to Projects or CRM records), Time Entries, Vendor records, and custom fields last. Each phase emits a row-count reconciliation report before the next phase begins. We use Odoo's XML-RPC batch import with appropriate chunking for large record sets.
Cutover, validation, and automation rebuild handoff
We freeze FileMaker writes during cutover, run a final delta migration of any records created or modified during the migration window, and switch Odoo CRM to the system of record. We deliver the FileMaker script and automation inventory document to the customer's team for rebuild in Odoo Studio or as ir.actions. We support a one-week post-cutover window where we resolve any record-count discrepancies or broken relationship links raised by the customer's team. We do not rebuild FileMaker scripts as Odoo automations inside the migration scope; that is a separate engagement.
Platform deep dives
Jarvis CRM
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 Jarvis CRM 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
Jarvis CRM: Not publicly documented.
Data volume sensitivity
Jarvis 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 Jarvis CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Jarvis 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 Jarvis 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.