CRM migration

Migrate from RAYNET CRM to Odoo CRM

Field-level mapping, validation, and rollback between RAYNET CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.

RAYNET CRM logo

RAYNET CRM

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

83%

10 of 12

objects map 1:1 between RAYNET CRM and Odoo CRM.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from RAYNET CRM to Odoo CRM is a migration from a regional CRM purpose-built for Central-European SMB teams to an integrated ERP/CRM suite. RAYNET stores Contacts, Accounts, Deals, Activities, Sales Orders, and Quotes; Odoo CRM maps these to its crm.lead (which handles both Leads and Opportunities in one model), res.partner (which covers both individuals and companies), and crm.team objects. One structural difference requires design work upfront: RAYNET's separate Deal and Company objects map to Odoo's crm.lead opportunity stage and res.partner partner record, while RAYNET's GPS coordinates auto-derived for Map Analysis are stored as custom latitude/longitude fields since Odoo CRM does not auto-derive these from addresses. We sequence parent records (res.partner) before children (crm.lead, sale.order), resolve owner email cross-references, and chunk large record sets against Odoo's XML-RPC rate limits. Automation rules, conditional workflows, and Architect-tier automations do not migrate; we deliver a written automation inventory so the customer's Odoo admin rebuilds them in Odoo Studio or via server actions. Attachments export via XLSX cross-reference and re-associate in Odoo.

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

RAYNET CRM logo

RAYNET CRM

What's pushing teams away

  • Reporting and analytics remain basic compared to HubSpot or Salesforce, frustrating managers who need custom dashboards or revenue forecasting.
  • Integrations beyond Zapier and calendar sync are limited, creating friction for teams with established tool stacks outside the CRM.
  • Automation capabilities plateau at the Architect tier, pushing scaling teams toward platforms with more powerful workflow engines.
  • Custom fields and custom objects are less flexible than competing CRMs, limiting adaptation for non-standard sales motions.
  • Global feature parity concerns as the product expands internationally, with some users noting localization gaps in non-English markets.

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 RAYNET CRM objects map to Odoo CRM

Each row shows how a RAYNET 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.

RAYNET CRM

Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

RAYNET Contact records map to Odoo res.partner with type=contact. We preserve RAYNET's lifecycle stage as a custom selection field (x_raynet_lifecycle_stage) since Odoo CRM's crm.lead model derives stage from the opportunity pipeline rather than the contact. RAYNET's GPS coordinates (latitude/longitude auto-derived from address for Map Analysis) migrate to custom float fields x_latitude and x_longitude on res.partner because Odoo CRM does not auto-compute these from addresses. Standard name, email, phone, street, city, and country fields map 1:1.

RAYNET CRM

Account (Company)

maps to

Odoo CRM

res.partner

1:1
Fully supported

RAYNET Account records also map to res.partner with type=company. During scoping we identify whether the RAYNET Account and Contact share a single parent record or are separate entities, and design the Odoo partner hierarchy accordingly. Company-type partners get child contact partners linked via child_ids. Address fields (shipping, billing) migrate to partner address fields with dedicated contact address records.

RAYNET CRM

Deal

maps to

Odoo CRM

crm.lead (Opportunity)

1:1
Fully supported

RAYNET Deals map to Odoo crm.lead records with type=opportunity. The RAYNET pipeline maps to an Odoo crm.team, and RAYNET pipeline stages map to Odoo stage_ids within that team's stage sequence. Deal value, probability, estimated close date, and owner migrate to crm.lead fields expected_close_date, planned_revenue, user_id, and team_id. Closed-Won and Closed-Lost stages map to Odoo's won and lost stage states.

RAYNET CRM

Activity (Calls, Emails, Meetings)

maps to

Odoo CRM

mail.activity

1:1
Fully supported

RAYNET activity records (Calls, Emails, Meetings) map to Odoo mail.activity records linked to the migrated res.partner or crm.lead via res_id and res_model. Activity type (call, email, meeting) maps to Odoo's activity_type_id, with duration preserved in Odoo's date_deadline and note fields for call disposition. Email subject and body migrate as note body text.

RAYNET CRM

Sales Order

maps to

Odoo CRM

sale.order

1:1
Fully supported

RAYNET Sales Orders map to Odoo sale.order records. Order lines migrate as sale.order.line records with product, quantity, unit price, and taxes. The linked Account maps to the Odoo res.partner partner_id, and the associated Deal maps to the crm.lead origin_id if the customer enables the CRM-Sales integration in Odoo. Shipping and billing addresses migrate as partner shipping contact records.

RAYNET CRM

Quote

maps to

Odoo CRM

sale.order (quotation state)

1:1
Fully supported

RAYNET Quotes with validity dates and line-item pricing map to Odoo sale.order records in draft or sent state. Quote validity dates migrate to sale.order validity_date. Line items migrate as sale.order.line records with product, description, quantity, and unit price. If the Quote was signed, we attach a note indicating the signed status and copy any signature metadata as a custom field x_signed since Odoo handles e-signatures via external integrations.

RAYNET CRM

Custom Fields (Contact and Account)

maps to

Odoo CRM

Custom Fields (res.partner)

1:1
Fully supported

RAYNET custom fields on Contact and Account objects migrate to Odoo res.partner custom fields. We extract the custom field schema via RAYNET list export, map each field to the equivalent Odoo field type (char, selection, date, float, integer), and pre-create the fields in Odoo via Odoo Studio or data migration script before import. Fields without a direct Odoo equivalent store as x_raynet_cf_{fieldname} char fields for admin review.

RAYNET CRM

Owner / User

maps to

Odoo CRM

res.users

1:1
Fully supported

RAYNET Users map to Odoo res.users by email match. We extract every distinct owner_id on Contact, Account, Deal, and Activity and resolve against the destination Odoo instance's users list. Any RAYNET Owner without a matching Odoo User enters a reconciliation queue for the customer's Odoo admin to provision before record import proceeds. Inactive RAYNET owners map to Odoo inactive users with a flag in x_raynet_owner_active.

RAYNET CRM

Tag

maps to

Odoo CRM

res.partner.category

lossy
Fully supported

RAYNET Tags on Contacts and Deals migrate to Odoo res.partner.category (tags) for partner records and crm.lead tag_ids for opportunity records. We extract all distinct tag values, create the corresponding Odoo tag categories, and re-associate them during import. If Odoo tag limits are a concern at scale, we alternatively map tags to a custom multi-select Char field for admin review.

RAYNET CRM

Pipeline Stage

maps to

Odoo CRM

crm.stage

lossy
Fully supported

RAYNET pipeline stage names, order, and probabilities map to Odoo crm.stage records within each crm.team. We extract the full stage configuration including stage colors (if set) and map probabilities to Odoo's probability field. If RAYNET has multiple pipelines (ENTERPRISE tier), each becomes a separate crm.team in Odoo with its own stage sequence. Stage count limits are not a constraint in Odoo at any tier.

RAYNET CRM

Attachment

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

Files attached to RAYNET Contacts, Accounts, Deals, and Activities export via RAYNET XLSX export cross-referenced with the record list. We export the file references and URLs, then upload attachments to Odoo ir.attachment records linked via res_model and res_id to the migrated res.partner or crm.lead. Attachment re-association uses the cross-reference ID map built during scoping.

RAYNET CRM

Automations (Builder/Architect)

maps to

Odoo CRM

Not migratable — documentation only

1:1
Fully supported

RAYNET Automation rules (conditions, triggers, and actions at the Builder and Architect tier) are stored in a RAYNET-specific format with no documented export endpoint. We identify every active automation rule during scoping and deliver a written inventory listing each rule's trigger object, conditions, actions, and Odoo Workflow or automated action equivalent. The customer's Odoo admin rebuilds these post-migration. Skipping this step leaves business processes unautomated in the new platform.

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.

RAYNET CRM logo

RAYNET CRM gotchas

High

Automation rules do not export or migrate

Medium

Pipeline stage count varies by plan tier

Medium

API call limits are capped and billed as an add-on

Low

Pricing displayed inconsistently across aggregator sites

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

  • RAYNET Automations do not export or migrate to Odoo Workflow

    RAYNET's Automation Builder and Architect rules (conditions, triggers, and actions) are stored in a platform-specific format with no documented export endpoint. Odoo Workflow and automated actions use a different data model (Python-based server actions, record rules, and ir.actions), so there is no automated migration path. We audit every active automation during scoping and deliver a written inventory with Odoo equivalents for the customer's admin to rebuild. Teams that skip this step go live with zero automated workflows, creating manual-process bottlenecks on day one.

  • Odoo crm.lead unifies Leads and Opportunities — RAYNET Deal model requires restructuring

    RAYNET uses separate Contact, Account, and Deal objects where Deals are pipeline-stage opportunities tied to Accounts. Odoo CRM uses a single crm.lead model where the stage field determines whether the record is an unqualified Lead or a qualified Opportunity. During scoping we design the stage-to-record-state mapping: RAYNET Deals in open pipeline stages become Odoo Opportunities; RAYNET Contacts without Deals that represent prospects become Odoo Leads. If RAYNET has multiple pipelines on Enterprise tier, each maps to a separate crm.team in Odoo. Migrations that skip this design step end up with all Deals in the same Odoo pipeline regardless of business line.

  • RAYNET GPS coordinates require explicit migration as custom fields

    RAYNET's Map Analysis feature auto-derives latitude and longitude from contact address strings. Odoo CRM does not perform this auto-derivation. If the customer uses Map Analysis for geographic sales planning or territory management, we must extract these coordinates explicitly from RAYNET's address-derived fields and store them as custom float fields x_latitude and x_longitude on res.partner. Without explicit extraction they are silently lost during migration. We flag this during scoping for confirmation before extraction begins.

  • Odoo XML-RPC rate limits require chunking and backoff on large migrations

    Odoo's XML-RPC API has per-request overhead that becomes a bottleneck at scale. RAYNET exports with over 10,000 Deals or 50,000 Activities require chunked batch processing with exponential backoff and retry logic. We monitor Odoo server response times during migration and reduce batch size if response times exceed 30 seconds. For the largest migrations we use Odoo's base_import import module (which handles up to 10,000 rows per file) combined with XML-RPC for records requiring relationship resolution.

  • RAYNET API add-on blocks may be exhausted before migration completes

    RAYNET's base API rate limit is not publicly documented and increases in blocks of 10,000 requests per day for $50/month. Large migrations exceeding 50,000 total records can exhaust daily API capacity before cutover. We monitor response headers during extraction and negotiate API block purchases with the customer before proceeding. For migrations approaching this threshold we use RAYNET's XLSX export as a fallback data source and process via Odoo's base_import module rather than live API calls, which avoids the RAYNET API entirely and speeds up the migration.

Migration approach

Six steps for a successful RAYNET CRM to Odoo CRM data migration

  1. Discovery and scoping

    We audit the source RAYNET portal across tier (START/PROFESSIONAL/ENTERPRISE), active pipelines, pipeline stage counts, custom fields on Contact and Account objects, active Automation rules, and engagement volume. We pair this with an Odoo edition decision: Community (free, self-hosted) for teams with technical resources; Online or.sh (hosted) for teams preferring managed infrastructure; Enterprise for teams needing official support, advanced reporting, and Studio customisation. The discovery output is a written migration scope document covering record counts per object, custom field schema, pipeline-to-crm.team mapping, and automation audit list.

  2. Schema design and crm.lead stage configuration

    We design the destination Odoo CRM schema. This includes provisioning custom fields on res.partner (including x_latitude and x_longitude for GPS coordinates), configuring crm.team records (one per RAYNET pipeline), and defining crm.stage sequences with probability percentages matching RAYNET stage values. We design the Lead versus Opportunity classification rule based on whether the RAYNET Contact has an associated Deal and its pipeline stage. Schema is validated in an Odoo staging database before production migration begins.

  3. Owner and User reconciliation

    We extract every distinct RAYNET Owner referenced on Contact, Account, Deal, and Activity records and match by email against the destination Odoo instance's res.users table. RAYNET owners without a matching Odoo user enter a reconciliation queue for the customer's Odoo admin to provision before record import proceeds. Owner assignments on records cannot be resolved without active user records in Odoo, so this step gates all subsequent import phases.

  4. Sandbox migration and data reconciliation

    We run a full migration into an Odoo test database using production-equivalent data volume. The customer's CRM admin reconciles record counts (Contacts in, Accounts in, Deals in, Activities in), spot-checks 25-50 records against the RAYNET source for field accuracy and GPS coordinate preservation, and signs off the schema and mapping before production migration begins. GPS coordinate preservation is validated explicitly since it requires a custom field approach not native to Odoo.

  5. Production migration in dependency order

    We run production migration in record-dependency order: res.users (manual provisioning validated), res.partner parent records (RAYNET Accounts as company-type partners), res.partner child records (RAYNET Contacts linked to parent), crm.lead opportunities (RAYNET Deals with crm.team and stage resolved), sale.order quotations and orders (RAYNET Quotes and Sales Orders), mail.activity history (RAYNET Activities via chunked XML-RPC or base_import), ir.attachment re-association (RAYNET file references cross-referenced to migrated record IDs). Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and automation rebuild handoff

    We freeze RAYNET write access during cutover, run a final delta migration of records modified during the migration window, then set Odoo CRM as the system of record. We deliver the automation inventory document to the customer's Odoo admin team with Odoo Workflow and automated action equivalents for each RAYNET rule. We support a one-week hypercare window where we resolve reconciliation issues raised by the customer's sales team. We do not rebuild RAYNET Automations as Odoo Workflow inside the migration scope; that is documented for the customer's admin or an Odoo implementation partner.

Platform deep dives

Context on both ends of the pair

RAYNET CRM logo

RAYNET CRM

Source

Strengths

  • Per-user pricing model that does not scale with contact volume, providing cost predictability for SMB teams.
  • Clean, intuitive interface with high user adoption rates reported across verified review platforms.
  • Map Analysis feature auto-derives GPS coordinates from contact addresses for geographic visualization.
  • Automation tiers (Builder/Architect) offer workflow automation without requiring developer resources.
  • 30-day free trial with no credit card required for initial evaluation.

Weaknesses

  • Basic reporting and analytics compared to enterprise CRM platforms, limiting advanced forecasting capabilities.
  • Limited native integrations beyond Zapier, requiring custom development for most third-party tool connections.
  • Automation complexity caps out at the Architect tier, pushing scaling teams to evaluate alternatives.
  • Custom object flexibility is constrained relative to Salesforce or HubSpot, limiting adaptation for niche sales motions.
  • Pricing varies across review aggregators, making it difficult to confirm exact current tier features without direct vendor confirmation.
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. 1 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 RAYNET CRM and Odoo CRM.

  • Object compatibility

    B

    1 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

    RAYNET CRM: Not publicly documented; base limit expandable in 10,000-request/day blocks for $50/month.

  • Data volume sensitivity

    B

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

Estimator

Estimate your RAYNET CRM 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 RAYNET CRM to Odoo CRM data migrations

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

Can't find your answer?

Walk through your RAYNET CRM to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between two and four weeks for accounts under 15,000 Contacts and 3,000 Deals with no custom objects and a single RAYNET pipeline. Migrations with Sales Order and Quote history, multiple RAYNET pipelines (ENTERPRISE tier), large activity volumes (over 50,000 activity records), or extensive custom fields move to six to ten weeks because of Odoo XML-RPC chunking, crm.lead model design, GPS coordinate extraction, and automation inventory work.

Adjacent paths

Related migrations to explore

Ready when you are

Move from RAYNET CRM.
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