CRM migration

Migrate from Onsite CRM to Odoo CRM

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

Onsite CRM logo

Onsite CRM

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

69%

9 of 13

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

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Onsite CRM to Odoo CRM is a migration from a limited Weebly-hosted platform with no public API to a full open-source ERP suite with a mature XML-RPC and JSON-RPC interface. Onsite CRM exports data only through in-app CSV, which constrains extraction to whatever fields the UI exposes and limits record volume. Odoo CRM uses a partner-centric data model where res.partner serves as both Contact and Company depending on the is_company flag, and crm.lead serves as the lead and opportunity record with stage management through crm.stage. We extract Onsite CRM records as CSV, normalize them against the UI-exposed schema, resolve the Contact-Company relationship before import, and load into Odoo through the XML-RPC API with batch chunking. Workflows, automations, and sequence tools do not migrate; we deliver a written inventory of any configured automations for the customer's Odoo admin to rebuild in Odoo's Studio or automated actions framework.

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

Onsite CRM logo

Onsite CRM

What's pushing teams away

  • Extremely limited market presence with minimal third-party reviews and community discussion, making it difficult to assess long-term viability.
  • No publicly documented API, SDK, or webhook infrastructure limits integration options and blocks automated data extraction.
  • Appears to have weaker reporting and analytics depth compared to established CRM competitors like HubSpot or Pipedrive.
  • Very small user base on review platforms like G2 and Capterra suggests limited adoption and support ecosystem.
  • Lacks enterprise-grade features needed as teams scale, driving migration to platforms with better customization and API access.

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

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

Onsite CRM

Contact

maps to

Odoo CRM

res.partner (Contact)

1:1
Fully supported

Onsite CRM Contact records map to Odoo res.partner with is_company=False. The email field maps to email, phone maps to phone, and the contact name maps to name. We use email as the deduplication key during import. If Onsite CRM stores a contact's associated Company as a lookup field, we resolve that reference after the Company phase completes and backfill partner_id on each Contact record.

Onsite CRM

Company

maps to

Odoo CRM

res.partner (Company)

1:1
Fully supported

Onsite CRM Company records map to Odoo res.partner with is_company=True and commercial_partner_id pointing to itself. Company name maps to name, domain maps to website, and address fields map to street, city, state, zip, country using Odoo's partner address fields. Company records import first because Contact records reference them via partner_id or commercial_partner_id.

Onsite CRM

Deal

maps to

Odoo CRM

crm.lead

1:1
Fully supported

Onsite CRM Deal records map to Odoo crm.lead. The deal name maps to name, deal value maps to planned_revenue, close date maps to date_deadline, and stage maps to stage_id via a stage lookup resolved against Odoo's crm.stage table. We preserve the original Onsite CRM deal ID in a custom field x_onsite_deal_id__c on the Odoo lead for audit and cross-reference.

Onsite CRM

Pipeline Stage

maps to

Odoo CRM

crm.stage

lossy
Fully supported

Onsite CRM pipeline stages are extracted during scoping by requesting screenshots of the pipeline configuration from the customer. Each stage name maps to a crm.stage record within the appropriate crm.team. Probability percentages from Onsite CRM map to Odoo stage probability values. We create the stage records in Odoo before Deal import begins.

Onsite CRM

Activity (Call)

maps to

Odoo CRM

crm.phone.call

1:1
Fully supported

Onsite CRM call logs migrate to Odoo's crm.phone.call model if the Odoo CRM instance has the phone module active. The call direction (inbound/outbound) maps to direction, duration maps to duration, and the call notes map to description. If crm.phone.call is not available in the customer's Odoo edition, call logs migrate as mail.message records on the related crm.lead.

Onsite CRM

Activity (Email)

maps to

Odoo CRM

mail.message

1:1
Fully supported

Onsite CRM email records migrate as mail.message entries attached to the relevant res.partner or crm.lead via model and res_id. The email subject becomes message_subject, body becomes body_html, and the email date becomes date. We reconstruct the email thread by matching message_id headers if available, otherwise import as standalone entries.

Onsite CRM

Activity (SMS)

maps to

Odoo CRM

mail.message

1:1
Fully supported

Onsite CRM SMS records migrate as mail.message with a note subtype and a custom x_onsite_sms__c flag to distinguish them from internal notes. SMS content and timestamp map to body and date respectively. We attach each message to the related partner or lead record using the same model-res_id pattern as email.

Onsite CRM

Activity (Meeting/Note)

maps to

Odoo CRM

mail.message or project.task

1:1
Fully supported

Onsite CRM meeting records and general notes map to mail.message entries with a note subtype and meeting subtype respectively. Meeting location and scheduled time migrate as body content if available. If the customer uses Odoo Project to track follow-up tasks derived from meetings, we create project.task records linked to the crm.lead with the meeting context preserved in the task description.

Onsite CRM

Task

maps to

Odoo CRM

project.task

1:1
Fully supported

Onsite CRM task records map to Odoo project.task. Task name maps to name, due date maps to date_deadline, assignee maps to user_id via email resolution against res.users, and status maps to stage_id within the Odoo project. We import tasks into a dedicated CRM project or the default Odoo Tasks project depending on the customer's configuration.

Onsite CRM

User

maps to

Odoo CRM

res.users

1:1
Fully supported

Onsite CRM user records map to Odoo res.users via email match. The customer's Odoo admin provisions the destination users before migration begins. We reconcile Onsite CRM owner references against the provisioned user list and flag any owner without a matching Odoo user for admin provisioning. Active/inactive status maps from Onsite CRM to the Odoo active flag.

Onsite CRM

Tag

maps to

Odoo CRM

crm.tag

lossy
Fully supported

Onsite CRM tags applied to Contacts or Deals migrate as crm.tag records. Each tag name maps to a tag in Odoo's crm.tag table, and the tag-lead relationship migrates via crm.lead.tag_ids. If the customer's Onsite CRM uses a tagging taxonomy with hierarchical categories, we normalize it to flat tags in Odoo and document the taxonomy mapping for the admin.

Onsite CRM

Custom Field (Contact)

maps to

Odoo CRM

ir.model.fields (Custom)

lossy
Fully supported

Onsite CRM custom fields on Contact require manual scoping during discovery. We request screenshots of the Contact record layout to identify all visible custom fields. Each custom field is mapped to a corresponding custom field in Odoo created via Odoo Studio or ir.model.fields before Contact import. Field types (text, number, date, picklist) map to equivalent Odoo field types with appropriate column_index adjustments.

Onsite CRM

Custom Field (Deal)

maps to

Odoo CRM

ir.model.fields (Custom)

lossy
Fully supported

Custom fields on Onsite CRM Deals migrate to custom fields on crm.lead in Odoo. The same scoping process applies: we request screenshots of the Deal record layout, create the corresponding custom fields in Odoo before migration, and map values during the Deal import phase. Any custom field that has no Odoo equivalent is flagged for manual review and documented in the migration inventory.

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.

Onsite CRM logo

Onsite CRM gotchas

High

No public API documentation found

Medium

Weebly-hosted infrastructure limits data access

Medium

Limited historical activity export

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

  • Onsite CRM has no API—extraction relies entirely on CSV

    Onsite CRM is hosted on the Weebly infrastructure with no documented REST API, SDK, or webhook system according to apitracker.io. All data extraction occurs through in-app CSV exports, which are constrained by whatever fields the UI exposes and by Weebly's export size limits. If the customer has more than 10,000 records or complex custom field configurations, export size limits become a bottleneck. We request customer-supplied screenshots of their data structure during scoping to confirm what objects and fields the UI actually exposes before designing the migration sequence.

  • Odoo's partner-company model requires Contact-Company normalization

    Odoo uses a single res.partner model for both individuals and organizations, with an is_company flag distinguishing them. Onsite CRM uses separate Contact and Company objects. We must resolve the Onsite CRM Contact-Company association before import so that each Contact's partner_id points to the correct res.partner Company record. If Onsite CRM stores companies as free-text rather than lookups, we attempt to match by company name or domain and flag unmatched Contacts for manual resolution.

  • Activity history export may be incomplete from Onsite CRM

    CRM migration reviews consistently surface that teams want five years of call notes, email logs, and activity history. Onsite CRM's in-app export options may not include rich activity history in a single downloadable file. We advise customers to request a pre-migration export of activity records separately and budget time for manual activity re-entry if the export is incomplete. We include a note in the migration inventory documenting any activity records that could not be exported from Onsite CRM.

  • Odoo custom fields need schema creation before data import

    Onsite CRM custom fields do not have a programmatic export mechanism, and Odoo requires custom fields to be created in the schema before data can be loaded into them. We request screenshots of Onsite CRM record layouts during scoping, create the corresponding custom fields in Odoo via Studio or ir.model.fields before import, and map values during the data load phase. If the customer has many custom fields, this step adds scope to the project timeline.

Migration approach

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

  1. Discovery and CSV extraction design

    We audit Onsite CRM by requesting screenshots of every record type (Contacts, Companies, Deals, Activities) and pipeline configuration. We map the UI-exposed fields to a migration schema and design the CSV extraction sequence. Because Onsite CRM has no API, we guide the customer through the in-app export process and specify the export format (CSV column headers, delimiter, encoding) required for our ingestion pipeline. We confirm the record counts for each object and identify any custom fields that require Odoo Studio configuration before import.

  2. Odoo schema preparation and stage configuration

    We provision the Odoo destination environment: creating crm.stage records for each Onsite CRM pipeline stage, configuring crm.team assignments, creating any required custom fields on crm.lead and res.partner via Odoo Studio, and setting up res.users matching the Onsite CRM owner list. The Odoo admin confirms the stage probabilities and team assignments before we begin data loading. Schema is validated in an Odoo test database before production loading.

  3. CSV extraction and data normalization

    The customer exports data from Onsite CRM using our extraction specification. We receive the CSV files and run a normalization step that includes dedupe on email (for Contacts), company name normalization (for Companies), date format standardization, and null field handling. We generate a data quality report flagging incomplete records, missing required fields, and duplicate entries for the customer's review before import begins.

  4. Sandbox migration and reconciliation

    We run a full migration into an Odoo test environment using production-like data volume. The customer reconciles record counts (Contacts in, Companies in, Deals in, Activities in), spot-checks 20-30 records against the source CSV, and confirms the stage configuration and custom field mappings before production migration begins. Any mapping corrections or schema adjustments happen in this phase.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Companies (res.partner with is_company=True), Contacts (res.partner with is_company=False and commercial_partner_id resolved), crm.stage records, Deals (crm.lead with stage_id and partner_id resolved), Users (validated against res.users provisioning), Tags (crm.tag), then Activities (mail.message attached to the correct res.partner or crm.lead). Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and automation inventory delivery

    We freeze Onsite CRM writes during cutover and run a final delta migration of any records modified during the migration window. We deliver the written automation inventory: a document listing any Onsite CRM automations, outreach sequences, or configured rules with a recommended Odoo automated action or Studio workflow equivalent for the customer's admin to rebuild. We support a 48-hour hypercare window for reconciliation issues. We do not rebuild automations in Odoo inside the migration scope.

Platform deep dives

Context on both ends of the pair

Onsite CRM logo

Onsite CRM

Source

Strengths

  • Combines CRM, calling, SMS, and email marketing in a single subscription for small teams.
  • Weebly-hosted platform offers straightforward initial setup for businesses already using Weebly.
  • Provides basic pipeline visualization and deal tracking for straightforward sales processes.
  • Lead conversion tools and real-time outreach automation for teams prioritizing outbound activity.
  • Established in 2010, indicating over a decade of operational history.

Weaknesses

  • No publicly documented REST API, SDK, or webhook system according to apitracker.io, severely limiting programmatic integrations and data extraction options.
  • Extremely limited market visibility with minimal reviews, community discussion, or third-party integrations.
  • Appears to lack enterprise-grade features like advanced reporting, custom objects, or sophisticated workflow automation.
  • Data export is limited to in-app CSV/PDF options with no bulk API access, complicating large-scale migrations.
  • Small user base and limited review presence make it difficult to assess platform reliability and long-term vendor viability.
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. 3 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 Onsite CRM and Odoo CRM.

  • Object compatibility

    B

    3 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

    Onsite CRM: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Onsite 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 three and five weeks for accounts under 10,000 Contacts and 2,000 Deals with straightforward pipeline stages and no complex custom field configurations. Migrations with large activity histories, non-standard pipeline definitions, many custom fields, or batch-extraction challenges from Onsite CRM's Weebly-hosted CSV export move to six to ten weeks. The CSV extraction step depends on the customer's ability to navigate the Onsite CRM UI and export each object type, which can add time if the UI requires multiple pagination steps.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Onsite 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