CRM migration
Field-level mapping, validation, and rollback between Road Runner and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Road Runner
Source
Odoo CRM
Destination
Compatibility
11 of 12
objects map 1:1 between Road Runner and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Road Runner is a field-service management and CRM platform that stores contacts, companies, deals, tasks, and custom properties. Odoo CRM uses res.partner for contacts and companies, crm.lead for leads and opportunities, and project.task for tasks. The migration maps Road Runner contacts to Odoo res.partner records keyed by contact type — 'customer' and 'company' types map directly, while standalone contacts with no company association land as crm.lead records. Deals map to crm.lead with stage mapping to Odoo crm.stage records. Custom properties require Odoo custom field creation before migration; owner resolution happens by email match to Odoo res.users. Workflows, automations, and custom scripts cannot migrate and must be rebuilt in Odoo using Studio or automation rules. FlitStack sequences the migration via Odoo's XML-RPC External API, supported by scoped read access on Road Runner during the cutover window. FlitStack validates each batch against Odoo ORM constraints and generates a reconciliation report showing field-level diffs. A delta capture window runs during cutover, recording any changes made in Road Runner after the initial export. Historical create dates and stage transition timestamps are preserved to maintain audit continuity. The migration leverages Odoo's XML-RPC External API, which requires a Standard or Custom plan; Community edition users must upgrade prior to migration.
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 Road 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.
Road Runner
Contact (type: company)
Odoo CRM
res.partner (company=True)
1:1Road Runner contacts flagged as 'company' type map directly to Odoo res.partner with company=True. Address fields (street, city, state, zip, country) split into Odoo's five-field address schema. Email, phone, and website preserved. Industry requires a custom field or category tag since res.partner has no native industry pick-list.
Road Runner
Contact (type: individual)
Odoo CRM
res.partner (company=False)
1:1Road Runner contacts flagged as 'contact' type map to Odoo res.partner with company=False and parent_id pointing to the associated company partner. Job title stored in the function field. Mobile and direct phone map to partner.phone and partner.mobile respectively as needed.
Road Runner
Contact (no company association)
Odoo CRM
crm.lead
1:manyRoad Runner contacts without a primary company link route to Odoo crm.lead rather than res.partner, since Odoo requires a partner_id for contact records. Email, phone, name, and custom properties carry over. The creating sales rep resolves to user_id by email match against res.users.
Road Runner
Deal / Opportunity
Odoo CRM
crm.lead
1:1Road Runner deals map to Odoo crm.lead records with type='opportunity'. Deal name becomes crm.lead.name; amount maps to planned_revenue; expected close date maps to date_deadline. Stage names map to Odoo crm.stage records by value lookup — each Road Runner stage must have a corresponding Odoo stage pre-created in the target pipeline.
Road Runner
Pipeline / Stage
Odoo CRM
crm.stage + crm.team
1:1Road Runner pipelines map to Odoo crm.team records; each pipeline's stages map to crm.stage records within that team. Stage probability, next_step, and fold status are native stage attributes that Road Runner may not have equivalents for — these default based on Odoo stage configuration or get mapped from Road Runner's stage probability data if available.
Road Runner
Task
Odoo CRM
project.task
1:1Road Runner tasks with a project association map to Odoo project.task records. Task name, description, assigned user (resolved by email), due date, and stage/status map directly. Tasks without a project association map to crm.lead activity records (mail.message) instead as needed.
Road Runner
Activity (call, email, note)
Odoo CRM
mail.message
1:1Road Runner activity records (call logs, email logs, notes) map to Odoo mail.message records on the parent crm.lead or res.partner. Message type is set to 'email' for email activities, 'comment' for notes, and 'notification' for internal call logs. Original timestamps preserved; author resolved by email to res.users.
Road Runner
Custom Property (contact/company/deal)
Odoo CRM
ir.model.data / x_studio_* custom field
1:1Road Runner custom properties on any object require pre-migration Odoo custom field creation. FlitStack creates Char, Text, or Selection fields depending on data type. Multi-select or complex pick-list custom properties may need custom widget configuration or intermediary many2many relations in Odoo.
Road Runner
User / Owner
Odoo CRM
res.users
1:1Road Runner users are matched to Odoo res.users records by email address. Unmatched owners are flagged before migration — the team either invites them to Odoo first or assigns their records to a fallback user. No record lands without a valid Odoo owner assignment.
Road Runner
Attachment / File
Odoo CRM
ir.attachment
1:1Road Runner file attachments on records are downloaded and re-uploaded to Odoo ir.attachment. Each attachment record includes res_model (the target Odoo model) and res_id (the target record ID) for correct linking. Binary file content is stored in Odoo's filestore; original filenames and create dates preserved.
Road Runner
Tag / Category
Odoo CRM
crm.tag
1:1Road Runner tags applied to contacts, companies, or deals map to Odoo crm.tag records. Tags are de-duplicated during migration — identical tag names collapse to a single crm.tag record and are linked via the crm.lead.tag_ids many2many relation for reporting purposes.
Road Runner
Equipment / Asset (if applicable)
Odoo CRM
maintenance.equipment / crm.lead custom field
1:1Road Runner equipment or asset records do not have a native Odoo CRM equivalent. If the Maintenance module is activated, equipment maps to maintenance.equipment with installation date and location. Otherwise, equipment references migrate as custom fields on crm.lead for reporting continuity.
| Road Runner | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact (type: company) | res.partner (company=True)1:1 | Fully supported | |
| Contact (type: individual) | res.partner (company=False)1:1 | Fully supported | |
| Contact (no company association) | crm.lead1:many | Fully supported | |
| Deal / Opportunity | crm.lead1:1 | Fully supported | |
| Pipeline / Stage | crm.stage + crm.team1:1 | Fully supported | |
| Task | project.task1:1 | Fully supported | |
| Activity (call, email, note) | mail.message1:1 | Fully supported | |
| Custom Property (contact/company/deal) | ir.model.data / x_studio_* custom field1:1 | Fully supported | |
| User / Owner | res.users1:1 | Fully supported | |
| Attachment / File | ir.attachment1:1 | Fully supported | |
| Tag / Category | crm.tag1:1 | Fully supported | |
| Equipment / Asset (if applicable) | maintenance.equipment / crm.lead custom field1: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.
Road Runner gotchas
No public REST API for FSM record export
v1-to-v2 API rewrite requires complete config migration
Per-installation KV namespace schema varies
Bulk export not supported — we read incrementally
Attachment and media files are external to RoadRunner
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
Verify Odoo API availability and extract Road Runner data via REST
FlitStack authenticates to Road Runner using API key credentials and enumerates the available objects (contacts, companies, deals, tasks, activities, attachments). We simultaneously confirm that the target Odoo instance is on a plan with External API access (Standard or Custom). If Odoo Community is detected, we document the required plan upgrade as a blocking pre-requisite before proceeding. Data export runs against Road Runner's REST endpoints with pagination to handle large record sets without rate-limit hits.
Build Odoo schema: stages, custom fields, and owner resolution
Before any records land, we create the Odoo crm.stage records matching Road Runner's pipeline stage names within the target crm.team. Custom fields (x_studio_*) are created on res.partner and crm.lead matching Road Runner custom property names and inferred data types. We run an owner-resolution pass against Road Runner user records, matching each by email to Odoo res.users — unmatched users are flagged for team assignment or invitation before migration day.
Load data into Odoo via XML-RPC: partners, leads, then activities
We load data in dependency order using Odoo's External API: companies first (res.partner with company=True), then contacts with parent_id linking to companies, then crm.lead records for deals. This sequencing ensures foreign-key resolution — crm.lead.partner_id must reference an existing res.partner. Activities and attachments load last, with attachments requiring binary upload and res_model/res_id linkage to parent records created in prior steps. Each batch is validated against Odoo's ORM constraints before committing.
Run sample migration with field-level diff
A representative slice (typically 100–500 records spanning contacts, companies, deals, and activities) migrates first. We generate a field-level diff between the Road Runner source values and the resulting Odoo record values, surfaced in a FlitStack reconciliation report. You verify stage mapping, owner resolution, custom field population, and attachment linkage before the full run commits. Any mapping adjustments are made before proceeding.
Execute full migration with delta-pickup and rollback planning
Full migration runs against Odoo with a delta-pickup window (typically 24–48 hours) capturing any records modified in Road Runner during the cutover. FlitStack maintains a pre-migration snapshot of Odoo state enabling one-click rollback if reconciliation fails. Audit log captures every operation. After validation, your team switches to Odoo and Road Runner access is scoped to read-only or decommissioned. All batches are re-validated against Odoo ORM constraints before final commit to ensure data integrity.
Platform deep dives
Road Runner
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 Road Runner and Odoo CRM.
Object compatibility
2 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
Road Runner: Not applicable.
Data volume sensitivity
Road 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 Road Runner to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Road 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 Road 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.