ERP migration

Migrate from Selly Erp to Odoo ERP

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

Selly Erp logo

Selly Erp

Source

Odoo ERP

Destination

Odoo ERP logo

Compatibility

83%

10 of 12

objects map 1:1 between Selly Erp and Odoo ERP.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Selly ERP to Odoo ERP is a platform consolidation that trades a flat-rate Italian CRM for a modular open-source ERP with native accounting, inventory, and reporting depth. The primary migration constraint is Selly ERP's absence of a public API — every export originates from the customer's in-app manual data dump, which we coordinate and validate before ingestion. We map Selly ERP's company and deal records to Odoo's Partner and Opportunity objects, reconcile pipeline stages to Odoo project stages or CRM pipeline stages, and archive invoice PDFs as document attachments while re-importing line items as structured records. Workflow automations inside Selly ERP are undocumented and cannot transfer; we deliver a written specification for rebuilding in Odoo's Automations module. Odoo Community is free; Odoo Enterprise starts around $24.90 per user per month with a free trial available, making the platform accessible for SMB teams that want ERP depth without enterprise licensing overhead.

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

Selly Erp logo

Selly Erp

What's pushing teams away

  • Third-party ERP integrations are limited — existing accounting or inventory systems do not integrate smoothly with open platforms, forcing manual data re-entry.
  • Technical studios and businesses with specialist workflow needs report that Selly ERP requires significant customisation workarounds to fit their use case, which some find unsustainable.
  • Customers migrating away report that the platform lacks a well-documented public API, making automated data extraction difficult and dependent on in-app exports.
  • The analytics and reporting module is described as functional but not deep — power users needing custom dashboards or advanced forecasting outgrow the built-in capabilities.

Choosing

Odoo ERP logo

Odoo ERP

What's pulling them in

  • Modular pay-as-you-grow model with 80+ apps under one database — teams start with CRM and add Accounting, Inventory, or Manufacturing without switching platforms.
  • Free Community edition lets businesses validate Odoo fit before committing to Enterprise licensing costs that scale with user count.
  • Lowest per-user pricing among mid-market ERPs, with a published free tier for one app and Standard plans starting around $24.90 per user per month.
  • Native integration between modules — a confirmed Sales Order automatically updates inventory, invoicing, and accounting without manual re-entry.
  • Strong Odoo Gold Partner ecosystem provides local implementation support, reducing risk for companies without in-house developers.

Object mapping

How Selly Erp objects map to Odoo ERP

Each row shows how a Selly Erp object lands in Odoo ERP, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

Selly Erp

Lead

maps to

Odoo ERP

Lead (CRM module)

1:1
Fully supported

Selly ERP Lead records map to Odoo CRM Lead (also called crm.lead). We extract first name, last name, email, phone, company name, source, and status fields. The lead priority (low, medium, high) maps to Odoo's priority field (0-5 scale). We create the Lead before any Opportunity creation so that crm.lead/opportunity conversion links correctly.

Selly Erp

Customer

maps to

Odoo ERP

Contact (res.partner)

1:1
Fully supported

Selly ERP Customer records map to Odoo res.partner with type=contact. Company details map to parent_id on the partner record. Billing and shipping addresses migrate as partner addresses with address_type fields. The partner's VAT number, fiscal position, and payment terms transfer as fields on res.partner.

Selly Erp

Company (within Customer)

maps to

Odoo ERP

Company (res.partner with type=company)

1:1
Fully supported

Selly ERP's embedded company data within Customer records extracts as Odoo res.partner with type=company. We create the company partner first and then link individual contacts as child partners under the parent company, preserving the relationship structure from Selly ERP.

Selly Erp

Opportunity

maps to

Odoo ERP

Opportunity (crm.lead converted to opportunity)

1:1
Fully supported

Selly ERP Opportunities map to Odoo CRM Opportunities. The deal name, estimated value, close date, and probability migrate. Stage names from Selly ERP's custom pipeline are extracted during scoping and created as Odoo stage records in the CRM pipeline before import. Probability percentages are stored as stage_weight values in Odoo's stage configuration.

Selly Erp

Pipeline Stages

maps to

Odoo ERP

Stage (crm.stage)

lossy
Mapping required

Selly ERP allows custom pipeline stage names per account. We extract the complete stage list during scoping and create corresponding Odoo CRM stages in the destination pipeline, preserving the ordering sequence. Stage colors and is_won flags are configured to match the customer's visual conventions where possible.

Selly Erp

Deal

maps to

Odoo ERP

Opportunity or Project Task

1:1
Fully supported

Selly ERP Deals map to Odoo CRM Opportunities for sales-cycle tracking. If the customer uses Selly ERP's task or project submodule within a deal context, those items map to Odoo Project Task records linked to the corresponding Opportunity. We confirm the deal-to-task split strategy with the customer during scoping based on how they use Deals in Selly ERP.

Selly Erp

Invoice

maps to

Odoo ERP

Account Invoice (account.move)

1:1
Fully supported

Selly ERP Invoice records migrate as Odoo account.move entries with type=out_invoice or out_refund. Invoice line items transfer as move_line records with account_id resolved from the Odoo chart of accounts mapping. The original invoice PDF is archived as an Odoo attachment on the move record for audit reference, but the PDF does not replace the structured line-item record.

Selly Erp

Quote

maps to

Odoo ERP

Sale Order (sale.order)

1:1
Fully supported

Selly ERP Quotes map to Odoo Sale Orders. Quote line items, totals, validity dates, and payment terms transfer. Custom quote templates from Selly ERP do not carry over; we document the template structure separately so the customer can rebuild in Odoo's Sale Order report designer.

Selly Erp

Activity (calls, emails, meetings, notes)

maps to

Odoo ERP

Mail Activity + Project Task

1:1
Fully supported

Selly ERP Activity records (calls, emails, meetings, tasks, notes) migrate as Odoo mail.activity entries linked to the parent crm.lead or res.partner. Timestamps are preserved in UTC and converted to the destination timezone during import. Note content migrates as Odoo note.doc records attached to the parent record.

Selly Erp

User and Owner

maps to

Odoo ERP

User (res.users)

1:1
Fully supported

Selly ERP user accounts and owners map to Odoo res.users records via email match. We resolve each HubSpot owner ID to the corresponding Odoo user. Any Selly ERP user without a matching Odoo user goes to a reconciliation queue for the customer's admin to provision before the record import phase resumes, because OwnerId references are required on most Odoo document types.

Selly Erp

Custom Fields

maps to

Odoo ERP

Custom Fields (ir.model.fields)

lossy
Mapping required

Custom fields on any Selly ERP object are extracted during export. We preserve the field name, data type, and values, and create matching custom fields in Odoo (via Settings > Technical > Database Structure > Fields) before importing values. Field types are mapped to Odoo field definitions including selection, char, float, date, datetime, many2one, and one2many where applicable.

Selly Erp

Attachment

maps to

Odoo ERP

Ir Attachment

1:1
Fully supported

File attachments linked to records in Selly ERP (customer documents, deal files, invoice PDFs) are extracted from the export and stored for re-upload to Odoo as ir.attachment records linked to the corresponding res.partner, crm.lead, or account.move. Attachment migration runs after record creation so that the res_model and res_id references resolve correctly during import.

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.

Selly Erp logo

Selly Erp gotchas

High

No public API forces manual data export

Medium

Invoice PDFs are not exported as structured records

Medium

Workflow automations are undocumented and non-transferable

Odoo ERP logo

Odoo ERP gotchas

High

No rollback for CSV imports

High

External ID conflicts on re-import

Medium

Many2many field encoding in CSV imports

Medium

Large export timeouts require batching

Medium

Version schema drift between Odoo releases

Pair-specific challenges

  • Selly ERP has no documented API — all exports are manual

    Selly ERP does not publish a REST or GraphQL API that external tools can call programmatically. We cannot initiate automated record retrieval. We ask the customer to log into Selly ERP and use the in-app export function to produce CSV or Excel dumps of each object type — Leads, Customers, Opportunities, Deals, Invoices, Quotes, and Activities. This export must be performed manually per module, and the completeness and formatting of the export depends on how the customer navigates the UI. We plan additional scoping time for the customer to prepare and validate the export files before ingestion begins. Export quality directly affects migration completeness.

  • Legacy data quality issues surface during import

    ERP migrations consistently surface duplicate partner records, missing contact details on company records, outdated product pricing, and stale open balances accumulated over years in Selly ERP. Research from Baker Tilly and Devintellecs confirms that 85 percent of businesses report incorrect data impeding strategic initiatives, and Odoo will import anything submitted without cleaning it first. We add a dedicated data quality assessment phase to identify duplicates, empty required fields, and inconsistent units before import, which prevents post-go-live reporting failures and user trust issues.

  • Chart of accounts mapping requires manual reconciliation

    Selly ERP's accounting structure rarely aligns with Odoo's standard chart of accounts. Revenue accounts, cost of goods sold, tax codes, and bank accounts from Selly ERP must be mapped to Odoo's account.account records before invoice and payment migrations run. We extract the full account list from Selly ERP during scoping, compare it against the Odoo standard chart, and create or map accounts before any financial record import. Unmapped accounts during invoice import cause line-item failures.

  • Selly ERP workflow automations are undocumented and non-transferable

    Workflow rules, triggers, and automated sequences configured inside Selly ERP are not accessible as extractable data. We cannot migrate them directly. Odoo's Automations module uses a different event-trigger model (based on res.partner, crm.lead, and base automation rules) that does not accept Selly ERP workflow definitions as input. During discovery, we document every active automation from the customer's Selly ERP account and produce a written specification so the customer can rebuild equivalent rules in Odoo Automations after go-live. This is a manual step the customer must budget time for.

  • Invoice PDFs archive separately from structured records

    Selly ERP generates invoice PDFs linked to customer records, but these PDFs are not available as structured data in the export. We archive each PDF as an ir.attachment linked to the corresponding account.move record in Odoo for reference purposes. However, invoice line items must be re-imported as structured move_line records from the CSV export, and the PDF serves as a lookup reference only. Customers requiring fully structured invoice history should budget time for a separate line-item validation pass against the archived PDFs.

Migration approach

Six steps for a successful Selly Erp to Odoo ERP data migration

  1. Export coordination and data quality assessment

    We schedule a guided export session with the customer to extract CSV or Excel dumps from each Selly ERP module — Leads, Customers, Opportunities, Deals, Pipeline Stages, Invoices, Quotes, and Activities. During the same phase we run a data quality assessment that identifies duplicate partner records, missing required fields, inconsistent naming conventions, and stale open balances. We produce a data quality report that the customer reviews and approves before we begin any import work into Odoo. Cleaning decisions are documented and agreed upon before transformation scripts are written.

  2. Odoo schema preparation and chart of accounts design

    We set up the Odoo destination environment — selecting and installing the required apps (CRM, Sales, Inventory, Accounting) from the Odoo Apps list, configuring the company record, and designing the chart of accounts based on the Selly ERP account export. We create pipeline stages in the CRM module matching the Selly ERP stage names, configure warehouse and product categories for inventory migration, and pre-create any custom fields on crm.lead, res.partner, and account.move before record import begins. Schema preparation runs in parallel with data quality remediation so that both tracks are ready before the first import script runs.

  3. Staging migration and reconciliation

    We run a full migration into an Odoo staging environment (a separate Odoo database or sandbox-like test company) using production-like data volume. The customer reconciles record counts across all object types, spot-checks 25-50 records against the Selly ERP source, and validates that pipeline stage names, invoice totals, and contact assignments match. Any mapping corrections are made in the transformation scripts at this stage. The customer signs off on the staging reconciliation before we proceed to production migration. This step prevents post-go-live data corrections that are significantly more disruptive to resolve.

  4. Owner and user reconciliation

    We extract every distinct user referenced as an owner or assignee on Contacts, Deals, Invoices, and Activity records in Selly ERP and match them by email against the Odoo destination's res.users table. Users without a matching Odoo account are added to a reconciliation queue. The customer's Odoo admin provisions any missing user accounts, assigns appropriate access rights per Odoo's access rights model, and confirms active versus inactive status. Migration cannot advance past this step because OwnerId and UserId references are required fields on most Odoo document types.

  5. Production migration in dependency order

    We run the production migration in record-dependency order: res.partner (companies and contacts), crm.lead (Leads and Opportunities converted from Opportunities), account.account (chart of accounts for financial records), account.move (Invoices and credit notes), sale.order (Quotes), mail.activity (Activity history), and ir.attachment (document files). Each phase emits a row-count reconciliation report before the next phase begins. Attachment migration runs last because it requires the res_model and res_id references from previously imported records to resolve correctly.

  6. Cutover, delta reconciliation, and automation handoff

    We freeze Selly ERP write access during cutover and run a final delta migration of any records created or modified during the migration window. We validate invoice totals, opportunity values, and partner counts against the Selly ERP source and resolve any discrepancies. We deliver the written automation inventory document to the customer's admin team covering every Selly ERP workflow rule with its trigger, conditions, actions, and a recommended Odoo Automations equivalent. We support a one-week hypercare window for reconciliation issues raised by the customer's team.

Platform deep dives

Context on both ends of the pair

Selly Erp logo

Selly Erp

Source

Strengths

  • Flat per-user pricing without per-module add-ons keeps costs predictable for SMB teams
  • Covers the full sales cycle from lead capture through invoicing in one subscription
  • Italian-language customer support receives consistently high marks in user reviews
  • Google Workspace integration with Gmail and Google Drive out of the box
  • Suitable for small to mid-sized businesses that do not need enterprise-level customisation depth

Weaknesses

  • No publicly documented API — automated export is not possible without a manual in-app data dump
  • Limited third-party integrations; existing ERP and accounting tools do not connect smoothly
  • Reporting and analytics are functional but lack the depth power users require
  • Customisation for specialist industries requires workarounds rather than native configuration
  • Platform originated in Italy and documentation is primarily in Italian, limiting accessibility for international teams
Odoo ERP logo

Odoo ERP

Destination

Strengths

  • Modular architecture with 80+ apps sharing one database — add Sales, Accounting, Inventory, and Manufacturing incrementally.
  • Free Community edition for self-hosting with no per-user license cost, backed by an active open-source community.
  • Per-user pricing starting around $24.90/month on Standard, significantly lower than comparable ERPs like NetSuite or SAP.
  • Automatic workflow propagation across modules — a confirmed sales order updates inventory, triggers invoicing, and posts accounting entries without manual steps.
  • Odoo.sh provides a managed cloud hosting environment with CI/CD for custom module deployment and staging databases.

Weaknesses

  • Performance suffers under heavy customization — large implementations with many active modules require dedicated optimization.
  • No single-click migration between Odoo major versions; each release introduces ORM changes, deprecated API calls, and schema revisions requiring manual adaptation.
  • Per-user and per-module licensing costs can escalate unpredictably for growing teams adding multiple apps.
  • Steep learning curve with hundreds of configuration options across dozens of modules creates adoption friction and training requirements.
  • Support tiers on Enterprise have inconsistent response times, pushing some customers toward alternatives with more reliable SLAs.

Complexity grading

How hard is this migration?

Standard ERP 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 Selly Erp and Odoo ERP.

  • 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

    Selly Erp: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Selly Erp to Odoo ERP 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 Selly Erp to Odoo ERP data migrations

Answers to the questions buyers ask most during Selly Erp to Odoo ERP migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Selly Erp to Odoo ERP 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 partner records, 2,000 invoices, and a clean chart of accounts. Migrations with duplicate-heavy data, multi-company Selly ERP setups, large attachment archives (over 50,000 files), or complex inventory categories requiring Odoo warehouse configuration move to six to ten weeks because of data quality remediation, Odoo company structure setup, and chart of accounts reconciliation work. Timeline excludes the manual automation rebuild phase after go-live, which the customer controls separately.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Selly Erp.
Land in Odoo ERP, 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