CRM migration
Field-level mapping, validation, and rollback between CRM Runner and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
CRM Runner
Source
Odoo CRM
Destination
Compatibility
7 of 12
objects map 1:1 between CRM Runner and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from CRM Runner to Odoo CRM is a transition from an all-in-one field-service and office-management platform into a modular ERP-adjacent CRM with deep customization potential. CRM Runner bundles field-service operations (jobs, dispatch, GPS tracking) with CRM primitives under a single UI, while Odoo CRM presents as a bolt-on module within a broader ERP suite where CRM strength depends heavily on whether the business is already running Odoo's Sales or Accounting modules. We handle the data extraction from CRM Runner's UI-based export environment, map CRM Runner's Jobs to Odoo's Project and Task objects, preserve the Team Member-to-User relationship, and flatten the embedded communications history into Odoo Lead notes or chatter entries. Custom fields, IFTTT automations, and embedded payment records do not migrate as code; we document every automation as a written specification for manual rebuild in Odoo's studio and deliver time-clock data as a separate CSV package for payroll-tool ingestion. The migration timeline is shaped primarily by data volume, custom field count, and how many Odoo modules are being activated alongside the CRM module.
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 CRM Runner 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.
CRM Runner
Contact
Odoo CRM
Lead / Contact
1:1CRM Runner Contact records map 1:1 to Odoo CRM Lead or Contact depending on qualification status. We extract contact name, email, phone, address, and custom fields during scoping. If the contact has associated Companies, we map to Odoo Contact under a Partner record; if the contact is a standalone prospect, it lands as a Lead. We preserve any CRM Runner custom field definitions as Odoo custom fields on the partner model using Odoo Studio before import.
CRM Runner
Company
Odoo CRM
Partner (company type)
1:1CRM Runner Company records map to Odoo Partner records with the Company Type flag set. The Partner record becomes the parent of any related Contact records migrated in the previous phase. We use company name as the Odoo Partner name and preserve the domain, address, and any company-level custom fields. Parent-company hierarchies in CRM Runner map to Contact-type Partner records with parent_id set to the Company-type Partner.
CRM Runner
Job
Odoo CRM
Project + Task
1:manyCRM Runner Job is the primary field-service record carrying work order details, assigned team members, location, job status, and embedded time entries. We map each Job to an Odoo Project record, with individual job line items or sub-tasks as Odoo Task records within that Project. Job status maps to Project stage; assigned team members map to Odoo Project assignees. Jobs without sub-items map to a single Task under a Project. This split is the most significant structural transformation in the migration and requires careful stage and user mapping during schema design.
CRM Runner
Team Member
Odoo CRM
User
1:1CRM Runner Team Members map to Odoo User records. We extract role, department, and permission level during scoping and map them to Odoo's access rights groups. CRM Runner's admin account (which does not count toward seat licenses) maps to an Odoo administrator account with full access rights. Team Members without a clear Odoo role are mapped to the internal user group pending admin assignment. We flag any Team Member records that reference inactive CRM Runner users for manual review.
CRM Runner
Task
Odoo CRM
Task
1:1CRM Runner standalone Tasks map directly to Odoo Task records under the customer's Odoo CRM project or under a default pipeline project. Due date, assignee (via Team Member-to-User mapping), status, and description migrate 1:1. Custom fields on tasks map to Odoo custom fields on the project.task model.
CRM Runner
Communication: Call
Odoo CRM
Lead Note / Chatter Entry
lossyCRM Runner call logs are discrete records attached to Contacts or Jobs. We flatten them into Odoo Lead chatter notes or Project Task chatter entries with a formatted note body (date, duration, disposition, recording reference if present). Call records that reference a Contact linked to a Job project get attached to the corresponding Project via Odoo's chatter thread. We do not create Odoo VoIP call records because that requires the Odoo VoIP module to be active; if VoIP is activated, we can adjust the mapping to use Odoo's crm.phone.call model.
CRM Runner
Communication: SMS
Odoo CRM
Lead Note / Chatter Entry
lossyCRM Runner SMS threads map to Lead or Contact chatter entries as formatted notes with sender, recipient, timestamp, and message body. If the Odoo SMS module is active in the destination, we map to the Odoo sms.sms model instead. We preserve the SMS direction (sent/received) as a prefix in the note body for audit clarity.
CRM Runner
Time Entry
Odoo CRM
Separate CSV Package
1:1CRM Runner time-clock records tied to Team Members and Jobs are payroll-adjacent and do not map cleanly to standard CRM objects. We export them as a separate structured CSV package with employee name, date, hours, job reference, and clock-in/clock-out timestamps. We recommend pairing the CRM migration with a dedicated payroll or accounting tool migration for this dataset rather than forcing it into Odoo CRM. If Odoo Timesheet module is active, we can map time entries to Odoo account.analytic.line records as a configuration option discussed during scoping.
CRM Runner
Pipeline
Odoo CRM
CRM Stage Configuration
lossyCRM Runner pipeline stages map to Odoo CRM stage configuration within the CRM pipeline view. We extract stage names, order, and any custom stage logic during scoping and replicate them in Odoo's pipeline editor. CRM Runner's stage-level automation triggers (IFTTT-style) are documented as written specifications for Odoo Studio automated action rebuild. Stage probability values map to Odoo's probability field if they exist in CRM Runner.
CRM Runner
Custom Field
Odoo CRM
Custom Field (Studio)
lossyCRM Runner custom fields on Contacts, Companies, and Jobs are extracted during scoping and recreated as Odoo custom fields using Studio before data import begins. We document the original CRM Runner field name, data type, and any picklist values as a mapping artifact. Custom fields that reference other CRM Runner objects (e.g., a job reference on a contact) are mapped using the CRM Runner record ID preserved as an external identifier in Odoo.
CRM Runner
IFTTT Automation
Odoo CRM
None (documented for rebuild)
1:1CRM Runner IFTTT-style automations (trigger-action rules) have no documented export or migration path. We extract every automation during discovery, documenting trigger type, conditions, actions, and any dependent custom fields as a written specification. This document is handed off to the customer's Odoo admin for rebuild using Odoo Studio's automation builder or server actions. Automations are explicitly excluded from the migration deliverable and represent a post-migration implementation step with its own timeline.
CRM Runner
Payment / Transaction
Odoo CRM
Separate CSV Package
1:1CRM Runner embedded payment records tied to Jobs or Contacts are accounting-adjacent and migrate best to a dedicated accounting tool. We export them as a separate structured CSV with transaction ID, amount, date, customer reference, job reference, and payment method. If Odoo Accounting is active in the destination, these can be imported as vendor bills or customer payments depending on direction; this requires coordination with the Odoo Accounting module configuration.
| CRM Runner | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | Lead / Contact1:1 | Fully supported | |
| Company | Partner (company type)1:1 | Fully supported | |
| Job | Project + Task1:many | Fully supported | |
| Team Member | User1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Communication: Call | Lead Note / Chatter Entrylossy | Fully supported | |
| Communication: SMS | Lead Note / Chatter Entrylossy | Fully supported | |
| Time Entry | Separate CSV Package1:1 | Fully supported | |
| Pipeline | CRM Stage Configurationlossy | Fully supported | |
| Custom Field | Custom Field (Studio)lossy | Fully supported | |
| IFTTT Automation | None (documented for rebuild)1:1 | Fully supported | |
| Payment / Transaction | Separate CSV Package1: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.
CRM Runner gotchas
No free trial and immediate billing on subscription
No publicly documented API or export endpoints
IFTTT automations must be manually rebuilt post-migration
Time entries and payment data require separate export treatment
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 scoping
We conduct a structured discovery session covering CRM Runner's object inventory (Contacts, Companies, Jobs, Team Members, Tasks, Pipelines), custom field definitions, IFTTT automation inventory, embedded communications volume, and time-entry and payment record counts. We also confirm the Odoo destination: which Odoo apps are active (CRM, Project, Timesheet, Accounting), which Odoo version (Odoo Online, Odoo.sh, or on-premise), and whether Odoo Studio is available for custom field creation. The discovery output is a written migration scope with object-level mapping, a record-count estimate, and a go/no-go on the UI extraction feasibility given the data volume.
Data extraction from CRM Runner
We perform UI-based data extraction from CRM Runner across all core objects. Contacts and Companies are exported as structured CSV or spreadsheet packages. Jobs are extracted with all associated sub-fields (status, assigned team members, location, notes) and are tagged with a unique CRM Runner record identifier for later cross-reference. Team Members are extracted with role, department, and permission level. Communication history (calls, SMS, chat) is extracted as discrete records with timestamps and content. Time entries and payment records are extracted as separate packages. Custom field definitions and pipeline stage configurations are documented as mapping artifacts.
Odoo schema pre-creation and stage design
We pre-create the Odoo destination schema before any data is imported. This includes activating the CRM and Project apps, creating custom fields on the res.partner model (Contacts and Companies), creating custom fields on crm.lead, configuring CRM pipeline stages to match CRM Runner pipeline stage names and order, and designing the Job-to-Project mapping with stage alignment. If Odoo Timesheet or Accounting is active, we create the necessary analytic account structure for time entry mapping. The schema is validated in an Odoo staging database before production migration begins.
Sandbox migration and reconciliation
We run a full migration into an Odoo staging environment using production-equivalent data volume. The customer's admin reviews record counts (Partners in, Leads in, Projects in, Tasks in), spot-checks 20-40 records against CRM Runner source data, and validates that the Project-Task hierarchy reflects the original Job structure. Any field mapping corrections, custom field gaps, or stage alignment issues are resolved at this stage. The customer signs off on the staging migration before production cutover is scheduled.
Production migration in dependency order
We run production migration in record-dependency order: Partners (Company-type first, then Contact-type as children), then Leads (for unqualified prospect records), then Projects (from CRM Runner Jobs), then Tasks (from CRM Runner Job sub-items and standalone Tasks), then Team Members-to-User mapping, then communication history flattened into Lead and Project chatter. Each phase emits a row-count reconciliation report. Time-entry and payment CSV packages are delivered as separate artifacts for downstream payroll or accounting ingestion. CRM Runner's legacy record IDs are preserved as external identifiers on Odoo records for cross-system reference.
Cutover, validation, and automation rebuild handoff
We freeze CRM Runner write access during cutover, run a delta migration of any records modified during the migration window, then designate Odoo CRM as the system of record. We validate critical record relationships (Contacts under correct Partners, Tasks under correct Projects, Team Members assigned to correct Projects) and deliver the IFTTT automation inventory document to the customer's Odoo admin for studio rebuild. We support a five-business-day hypercare window for reconciliation issues. We do not rebuild CRM Runner automations as Odoo Studio actions inside the migration scope; that rebuild is a separate engagement or an internal admin task.
Platform deep dives
CRM Runner
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 CRM Runner 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
CRM Runner: Not publicly documented.
Data volume sensitivity
CRM Runner 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 CRM Runner to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your CRM Runner 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 CRM Runner
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.