CRM migration

Migrate from Road Runner to Odoo CRM

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 logo

Road Runner

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

92%

11 of 12

objects map 1:1 between Road Runner and Odoo CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Road Runner logo

Road Runner

What's pushing teams away

  • Not applicable — there is no platform at this URL to leave. Road Runner Sports is a retailer; visitors leave the site when they finish shopping.
  • If the catalog intended the PHP RoadRunner server, customers migrate off RoadRunner v1 to RoadRunner v2 due to breaking API changes, or migrate to alternative PHP servers (FrankenPHP, Swoole, ReactPHP) for simpler operational profiles.

Choosing

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How Road Runner objects map to Odoo CRM

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)

maps to

Odoo CRM

res.partner (company=True)

1:1
Fully supported

Road 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)

maps to

Odoo CRM

res.partner (company=False)

1:1
Fully supported

Road 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)

maps to

Odoo CRM

crm.lead

1:many
Fully supported

Road 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

maps to

Odoo CRM

crm.lead

1:1
Fully supported

Road 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

maps to

Odoo CRM

crm.stage + crm.team

1:1
Fully supported

Road 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

maps to

Odoo CRM

project.task

1:1
Fully supported

Road 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)

maps to

Odoo CRM

mail.message

1:1
Fully supported

Road 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)

maps to

Odoo CRM

ir.model.data / x_studio_* custom field

1:1
Fully supported

Road 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

maps to

Odoo CRM

res.users

1:1
Fully supported

Road 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

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

Road 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

maps to

Odoo CRM

crm.tag

1:1
Fully supported

Road 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)

maps to

Odoo CRM

maintenance.equipment / crm.lead custom field

1:1
Fully supported

Road 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.

Gotchas + challenges

What specifically takes care here

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 logo

Road Runner gotchas

High

No public REST API for FSM record export

High

v1-to-v2 API rewrite requires complete config migration

Medium

Per-installation KV namespace schema varies

Medium

Bulk export not supported — we read incrementally

Low

Attachment and media files are external to RoadRunner

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • Odoo External API requires paid plan — Community edition has no API access

    Odoo's XML-RPC / JSON-RPC External API is not available on the Community edition. Standard plan has limited API access. Custom plan ($49/user/month) is required for full External API read/write. Migration tooling connects to the External API endpoint, so Odoo Community users must upgrade before FlitStack can migrate. This is a pre-migration configuration step that affects the project timeline and budget. Confirming API availability is part of the scoping phase. If your organization already uses Odoo Standard, verify that the API is enabled in the settings before scheduling the migration.

  • Lead-to-opportunity conversion does not automatically copy custom field data

    When an Odoo crm.lead converts to an opportunity via the standard conversion action, Odoo's native conversion wizard does not copy x_studio_* custom field values from the lead to the resulting opportunity record. If your migration strategy involves creating leads and converting them to opportunities, any custom field data from Road Runner must be re-mapped after conversion. We handle this by creating opportunities directly (type='opportunity') rather than relying on lead conversion, avoiding the conversion step entirely.

  • Odoo stores all datetimes in UTC — timezone metadata must be preserved from Road Runner

    Odoo stores all timestamp fields (create_date, write_date, date_deadline, activity_date_deadline) in the database as UTC regardless of the creating user's timezone setting. If Road Runner records were created in non-UTC timezones, migration of historical timestamps requires explicit timezone capture and re-posting so that dates display correctly in Odoo's interface. The user_id.tz field and Odoo's localization settings determine how UTC timestamps render — mismatches produce off-by-hours date displays in reports and should be validated during the reconciliation step.

  • Attachments require binary re-upload — Road Runner URLs cannot be referenced directly

    Road Runner stores attachment references as URLs or file identifiers in its API response. Odoo ir.attachment stores the actual file binary in its filestore and cannot reference external URLs. Migration requires downloading file content from Road Runner and POSTing it as base64-encoded data to Odoo's ir.attachment model. Large file volumes (>1GB total) may require chunked upload processing to stay within Odoo's request size limits. Files without discoverable URLs must be flagged for manual re-upload.

  • Custom field creation is plan-gated and not available on all Odoo editions

    Road Runner custom properties on contacts, companies, and deals require Odoo custom field creation before migration. We create Char, Text, or Selection fields on res.partner and crm.lead matching each custom property's name and inferred type. Custom field creation is available on Odoo Custom plan ($49/user/month) and partially on Standard. Community edition cannot create custom fields via Studio — in that case, we map custom properties to crm.tag records or serialize them in a text field.

Migration approach

Six steps for a successful Road Runner to Odoo CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

Context on both ends of the pair

Road Runner logo

Road Runner

Source

Strengths

  • Plugin-based architecture means FSM data lives in configurable storage backends, giving migration flexibility.
  • Native Temporal and Jobs support for background task queue migrations.
  • OpenTelemetry integration allows tracing data to be preserved during migration.
  • Distributed locks and health-check plugins give visibility into runtime state that helps us validate migration integrity.
  • Centrifuge websocket support enables real-time notification migration to destination platforms.

Weaknesses

  • No documented public REST API for standard CRM or FSM record types — all data lives in opaque plugin-specific storage.
  • FSM objects like Work Orders and Technicians have no native schema; they are custom KV namespaces that vary per installation.
  • No documented rate limit or bulk API — migration pacing must be negotiated per deployment.
  • RoadRunner v1-to-v2 migration has breaking changes across tuning, configuration, and API endpoints.
  • Road Runner Sports (roadrunnersports.com) usage suggests a heavily customised per-installation fork, making generic migration tooling unreliable.
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

Complexity grading

How hard is this migration?

Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Road Runner and Odoo CRM.

  • Object compatibility

    B

    2 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Road Runner: Not applicable.

  • Data volume sensitivity

    B

    Road Runner doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Road Runner to Odoo CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Road Runner to Odoo CRM data migrations

Answers to the questions buyers ask most during Road Runner to Odoo CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most Road Runner to Odoo migrations complete in 48–72 hours of clock time for under 50,000 records. Larger setups with 500k+ records, extensive custom properties, or attachment-heavy datasets extend to 5–7 days. The Odoo API availability check and custom field setup are the longest pre-migration steps. If the target Odoo instance is on Community edition, an upgrade to Standard or Custom is required first, adding 1–3 days to the project.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Road Runner.
Land in Odoo CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day