CRM migration
Field-level mapping, validation, and rollback between BSI CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
BSI CRM
Source
Odoo CRM
Destination
Compatibility
9 of 12
objects map 1:1 between BSI CRM and Odoo CRM.
Complexity
BStandard
Timeline
4-8 weeks
Overview
Migrating from BSI CRM to Odoo CRM is a structured extraction with schema translation. BSI's modular architecture supports industry-specific configurations, but its data model is not publicly documented for migration tooling, requiring manual object discovery before any field mapping can begin. We extract via BSI's support channel or API, normalize the data, and load into Odoo with pipeline stages mapped to Odoo's Kanban stages, contact-company relationships preserved through Odoo's company_id link, and activity records logged as activities against the correct parent record. BSI's built-in AI-driven automations and workflow configurations are not transferable data; we deliver a written inventory of every active configuration for the customer's admin to rebuild in Odoo's automation framework.
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 BSI 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.
BSI CRM
Contact
Odoo CRM
Contact
1:1BSI Contact records map directly to Odoo Contact. Standard fields (name, email, phone, job title) migrate 1:1. The BSI Contact-Company relationship is preserved through Odoo's company_id link on Contact. Custom fields on BSI Contact are enumerated during discovery and pre-created as Odoo custom fields before data load. Any custom fields with no Odoo equivalent are flagged in the mapping document for manual review.
BSI CRM
Company (Account)
Odoo CRM
Company
1:1BSI Company records map directly to Odoo Company. Hierarchical parent-child structures are preserved as Odoo Commercial Partner or Contact hierarchy depending on the BSI configuration. Industry classification fields migrate as tag fields or custom fields in Odoo. Company is loaded before Contact so the company_id foreign key is satisfied at Contact insert time.
BSI CRM
Deal (Opportunity)
Odoo CRM
Opportunity
1:1BSI Deal records map to Odoo CRM Opportunity. Deal stage maps to Odoo's pipeline stage names, which are configured in Odoo before migration using BSI's stage names from discovery. Deal value, expected close date, owner assignment, and pipeline assignment migrate directly. BSI custom deal fields are created as Odoo custom opportunity fields before import.
BSI CRM
Deal Stage / Pipeline
Odoo CRM
Pipeline / Stage
lossyBSI pipeline and stage names vary by industry configuration. We enumerate all distinct pipelines and stages during discovery, then configure corresponding Odoo CRM pipelines and stages before migration. Stage order and probability percentages are translated to Odoo stage definitions. Multi-pipeline BSI configurations map to multiple Odoo CRM pipelines.
BSI CRM
Activity (Call, Email, Meeting, Task)
Odoo CRM
Activity (Call, Email, Meeting, Task)
1:1BSI logged calls, emails, meetings, and tasks migrate as Odoo CRM activities linked to the parent Contact or Opportunity via Odoo's res_model and res_id linking. Activity timestamps are preserved. Calls migrate with call disposition preserved in the activity description or a custom field. Meeting attendees are mapped to Odoo partner_ids on the activity record. Odoo Activity Mail Tracking is disabled during migration to prevent duplicate notifications.
BSI CRM
Owner
Odoo CRM
User
1:1BSI Owner records map to Odoo User by email address match. Owner is migrated first in the load sequence because all other objects (Contact, Company, Deal) reference Owner as a foreign key. Any BSI Owner without a matching Odoo User is placed in a reconciliation queue for the customer's Odoo admin to provision before the main import resumes.
BSI CRM
Attachment / File
Odoo CRM
Attachment (ir.attachment)
1:1File attachments associated with BSI Contacts, Companies, or Deals are exported individually and reattached in Odoo using ir.attachment records with res_model pointing to the target Odoo model (res.partner, crm.lead) and res_id pointing to the migrated record ID. BSI's file storage structure varies by configuration; we document the file-to-record linkage during discovery to ensure correct attachment re-association.
BSI CRM
Tag / Classification
Odoo CRM
Tag
lossyBSI tagging and custom classification fields that have no direct Odoo equivalent are mapped to Odoo Tags on the relevant model. Multi-value tags migrate as multiple tag assignments per record. The customer chooses tag strategy during scoping: direct tag migration or custom multi-select field recreation. Classification fields with structured picklist values migrate as Odoo selection fields or tags depending on the field type.
BSI CRM
Custom Object
Odoo CRM
Custom Object
1:1BSI custom objects are enumerated during the mandatory discovery phase (no public schema is available). We pre-create the destination custom model in Odoo with all custom fields, field types, and any lookup relationships to standard objects before data load. Custom object naming follows Odoo's ir.model naming conventions. Records with missing parent record references are held in a reconciliation queue until the parent object is available in Odoo.
BSI CRM
User
Odoo CRM
User
1:1BSI User records migrate as Odoo User with name and email preserved. Active/inactive status is preserved. Role and permission sets are documented during discovery as Odoo does not replicate BSI's role model directly; the customer's Odoo admin assigns Odoo access rights based on the documented BSI roles. Users are the first object loaded in production migration.
BSI CRM
Note
Odoo CRM
Activity (Note subtype)
1:1BSI notes associated with Contacts, Companies, or Deals migrate as Odoo CRM activities with the note body preserved in the activity note or description field, linked to the parent record via the standard Odoo activity model and res_id reference.
BSI CRM
Lead
Odoo CRM
Lead
lossyIf BSI CRM includes a Lead object in the customer's configuration, we map it to Odoo CRM Lead. Odoo Lead records can be converted to Opportunities and Contacts at any time via Odoo's Lead Conversion action, preserving the original BSI lead score if present as a custom field.
| BSI CRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | Contact1:1 | Fully supported | |
| Company (Account) | Company1:1 | Fully supported | |
| Deal (Opportunity) | Opportunity1:1 | Fully supported | |
| Deal Stage / Pipeline | Pipeline / Stagelossy | Fully supported | |
| Activity (Call, Email, Meeting, Task) | Activity (Call, Email, Meeting, Task)1:1 | Fully supported | |
| Owner | User1:1 | Fully supported | |
| Attachment / File | Attachment (ir.attachment)1:1 | Fully supported | |
| Tag / Classification | Taglossy | Fully supported | |
| Custom Object | Custom Object1:1 | Fully supported | |
| User | User1:1 | Fully supported | |
| Note | Activity (Note subtype)1:1 | Fully supported | |
| Lead | Leadlossy | 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.
BSI CRM gotchas
No publicly documented self-service export or data portability tool
API access and custom object export gated by plan tier
Workflows and AI-generated automations are not exportable
Custom object schema discovery required before migration design
Performance variability during data extraction
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
Discovery and extraction request
We audit the source BSI CRM environment: object inventory, custom fields, deal pipeline stages, activity types, user list, and attachment volume. Because BSI has no self-service export tool, we submit a data export request through BSI's support channel and document the expected response timeline. We also enumerate custom objects and fields manually during this phase. We pair this with Odoo edition selection: Odoo Community (free, direct database access) or Odoo Enterprise (paid, official support, full accounting integration). The discovery output is a written migration scope with confirmed export contents and a timeline for the BSI data delivery.
Odoo schema setup and field mapping design
We configure the destination Odoo CRM environment: install the CRM app, configure pipelines and stages to match the BSI pipeline names discovered, and pre-create custom fields that will receive BSI custom field data. We design the field-level mapping document: BSI field names to Odoo field names with type conversion (date formats, phone number handling, picklist normalization). Field mapping is validated against Odoo's field type constraints before any data is loaded. Schema setup and field mapping are validated in a staging Odoo database before production migration begins.
Staging migration and reconciliation
We run a full migration into a staging Odoo environment using production-like data volume. The customer reconciles record counts (Contacts in, Companies in, Deals in, Activities in) and spot-checks 25-50 records against the BSI source. Field-level issues such as truncated text, lost leading zeros in phone numbers, or incorrectly assigned company links are corrected in the mapping document at this stage. No production data is touched until staging sign-off is received in writing from the customer's project lead.
Owner reconciliation and user provisioning
We extract every distinct BSI Owner referenced across Contacts, Companies, Deals, and Activities and match by email against the destination Odoo User table. Any BSI Owner without a matching Odoo User is placed in a reconciliation queue. The customer's Odoo admin provisions missing Users before production migration resumes. Migration cannot proceed past this step because OwnerId references must be satisfied on record insert. We also document the BSI role-to-Odoo access rights mapping for the customer's admin to apply post-migration.
Production migration in dependency order
We run production migration in record-dependency order: Users first (provisioned, validated), then Companies, then Contacts with company_id resolved, then Opportunities with pipeline and stage matched, then Activity history (calls, emails, meetings, tasks as Odoo CRM activities), then Custom Objects (last, because they may have lookups to standard objects), then Attachments. Each phase emits a row-count reconciliation report before the next phase begins. BSI's API rate limits or plan-tier restrictions may require chunked extraction with retry logic; we handle this with exponential backoff and batch logging.
Cutover, validation, and workflow rebuild handoff
We freeze BSI CRM writes during the cutover window, run a final delta migration of any records modified during the migration window, then enable Odoo as the system of record. We deliver the Workflow and Automation rebuild checklist: every BSI workflow with its trigger, conditions, actions, and recommended Odoo automation equivalent. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild BSI workflows as Odoo automations inside the migration scope; that is a separate task for the customer's Odoo admin.
Platform deep dives
BSI CRM
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 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 BSI CRM and Odoo CRM.
Object compatibility
3 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
BSI CRM: Not publicly documented — Enterprise Integration Platform (EIP) is advertised as capable of 10,000 executions per minute at the platform level; per-customer rate limits confirmed during scoping.
Data volume sensitivity
BSI CRM exposes a bulk API — large-volume migrations stream efficiently.
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 BSI CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your BSI CRM 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 BSI CRM
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.