CRM migration
Field-level mapping, validation, and rollback between Sentia and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Sentia
Source
Odoo CRM
Destination
Compatibility
10 of 12
objects map 1:1 between Sentia and Odoo CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from Sentia to Odoo CRM is a migration from an AI-native standalone CRM to an open-core ERP ecosystem where the CRM module is one component of a unified business suite. Sentia maintains a separate Lead object distinct from Contact, which requires a merge-and-tag strategy in Odoo CRM since Odoo models prospects as CRM Leads and customers as embedded Contacts on a Partner record. We carry the original Sentia lead source and lifecycle status forward as Odoo CRM lead tags so the historical attribution survives. Pipeline stages from Sentia map to Odoo CRM Stage objects configured in the Sales app. Activity history including calls, emails, meetings, and notes attaches to the correct Partner or Lead record via Odoo's mail.message threading model. Sentia's voice workflow configurations and automation rules are not portable; we deliver a written inventory of every rule for manual reconfiguration in Odoo Studio. Pricing shifts from Sentia's per-user tier model ($10-$30 per user per month) to Odoo's per-user plus per-module model, which commonly results in lower total cost for teams that consolidate CRM, invoicing, project management, and inventory under a single subscription.
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 Sentia 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.
Sentia
Contact
Odoo CRM
Partner (Contact tab)
1:1Sentia Contact records map directly to Odoo CRM Partner records with the Internal Partner type set to True, which exposes the Contact subtab within the Partner form. The Sentia contact's name, email, phone, job title, and address fields map to the equivalent Partner fields. Custom Contact-level properties on Sentia migrate to Odoo custom fields on res.partner. The Sentia Contact-to-Company association is preserved by linking the Contact's parent_id to the mapped Partner representing the Company.
Sentia
Company
Odoo CRM
Partner (Company type)
1:1Sentia Company records map to Odoo CRM Partner with the Company type checkbox enabled, which suppresses the Contact subtab and presents the organization as a top-level entity. Company names serve as the dedupe key on Partner import; we match by normalized company name and domain for duplicate detection. Company address and industry data map to Partner address fields and a custom industry tag field.
Sentia
Lead
Odoo CRM
CRM Lead
1:manySentia's separate Lead and Contact objects require a consolidation step for Odoo CRM. Sentia Leads with status = Unqualified merge into Odoo CRM crm.lead records carrying the original lead source and status as tags. Sentia Leads with status = Qualified merge into Odoo CRM Partners (with Internal = False, i.e., external contacts). The original Sentia lead_id is preserved in a custom field x_sentia_lead_id for audit trail and cross-reference. This merge approach avoids creating duplicate Partner records for prospects that already exist as Contacts in Sentia.
Sentia
Deal
Odoo CRM
CRM Opportunity
1:1Sentia Deal records map to Odoo CRM crm.lead with type = Opportunity. The Deal name becomes the Opportunity name; deal value maps to Odoo's Expected Revenue field. Closed-won and closed-lost status from Sentia map to Odoo's Stage field using the Lost or Won stage values. The Sentia Deal-to-Contact and Deal-to-Company associations resolve to the mapped Partner contact and Partner company via the partner_id and partner_id.contact_id fields on crm.lead.
Sentia
Pipeline Stage
Odoo CRM
CRM Stage
lossySentia pipeline stages map to Odoo CRM Stage records within the Sales app. Each Sentia stage name becomes a Stage name in Odoo with the corresponding sequence order preserved. Sentia's stage probability percentages map to Odoo's Stage probability field, rounded to the nearest integer. If Sentia has multiple pipelines, we create separate Sales Teams in Odoo CRM and configure stage sets per team so that stage values are scoped to the relevant pipeline.
Sentia
Custom Fields
Odoo CRM
Custom Fields (res.partner, crm.lead, crm.lead)
1:1Custom fields on Sentia Contacts, Companies, Leads, and Deals migrate to Odoo custom fields on the equivalent model (res.partner for Contacts and Companies, crm.lead for Leads and Opportunities). The Ultimate tier exposes more API-accessible custom field types than Basic; we query the Sentia metadata API during discovery to enumerate all available custom fields and match them to Odoo field types (Char, Selection, Float, Date, Many2one, etc.) using Studio. Any custom field not available on the active Sentia tier is flagged before migration begins.
Sentia
Activities (Call, Email, Meeting, Note)
Odoo CRM
mail.activity and mail.message
1:1Sentia activity records (calls, emails, meetings, notes) attach to Odoo CRM via mail.message records on the parent Partner or CRM Lead. Call records map to mail.activity with activity_type_id = Call and the duration stored in a custom field. Meeting records map to mail.activity with activity_type_id = Meeting and start/end preserved. Email records map to mail.message with mail_message_type = email and the email body preserved. Notes map to mail.message with mail_message_type = comment and author attribution. Activity timestamps from Sentia are preserved as write_date and create_date on the Odoo records.
Sentia
User (Owner)
Odoo CRM
User
1:1Sentia Users who own records map to Odoo Users by email match. We extract every distinct owner_id referenced on Contacts, Companies, Deals, and Activities and match by email against the destination Odoo User table. Any Sentia User without a matching Odoo User is placed in a reconciliation queue for the customer's admin to provision before record import resumes. Inactive Odoo Users can receive historical records if the customer wants to preserve assignment history without activating the user.
Sentia
Attachments
Odoo CRM
ir.attachment
1:1File attachments associated with Sentia Contacts, Companies, Deals, or Activities migrate as ir.attachment records linked to the equivalent Odoo Partner or CRM Lead via res_model and res_id. Files are re-uploaded via Odoo's /web/binary/attachment API with the original filename and MIME type preserved. Attachments larger than 25MB are flagged as a separate migration step because Odoo's base attachment field has a configurable size limit that may require ir.config_parameter adjustment.
Sentia
Tag
Odoo CRM
crm.tag
1:1Sentia Tags migrate to Odoo CRM crm.tag records created on the fly during import and associated with crm.lead via the tag_ids many2many field. Company-level tags from Sentia migrate to Partner tags if the customer chooses to enable the partner.tags module. Duplicate tag names are deduplicated by normalized lowercase name before insertion.
Sentia
Voice Workflow Configurations
Odoo CRM
Not migrated (inventory only)
1:1Sentia voice workflow configurations reference internal record IDs and CRM object references that are not transferable to Odoo. We export a JSON representation of the voice workflow definitions (trigger conditions, action steps, and field updates) for the customer's admin to review and manually reconfigure in Odoo Studio or as server actions. This step is documented in the automation handoff inventory.
Sentia
Automations and Workflow Rules
Odoo CRM
Not migrated (inventory only)
1:1Sentia automations and workflow rules are platform-specific logic with no portable schema. We export the automation rules as a JSON document listing each rule's name, trigger type, condition fields, and action steps. The customer receives this as a written inventory with recommended equivalents in Odoo Studio (Automated Actions, Server Actions, or Base Action Rules). Rebuilding these in Odoo is outside standard migration scope.
| Sentia | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | Partner (Contact tab)1:1 | Fully supported | |
| Company | Partner (Company type)1:1 | Fully supported | |
| Lead | CRM Lead1:many | Fully supported | |
| Deal | CRM Opportunity1:1 | Fully supported | |
| Pipeline Stage | CRM Stagelossy | Fully supported | |
| Custom Fields | Custom Fields (res.partner, crm.lead, crm.lead)1:1 | Mapping required | |
| Activities (Call, Email, Meeting, Note) | mail.activity and mail.message1:1 | Fully supported | |
| User (Owner) | User1:1 | Fully supported | |
| Attachments | ir.attachment1:1 | Mapping required | |
| Tag | crm.tag1:1 | Fully supported | |
| Voice Workflow Configurations | Not migrated (inventory only)1:1 | Fully supported | |
| Automations and Workflow Rules | Not migrated (inventory only)1:1 | 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.
Sentia gotchas
Multiple unrelated entities share the Sentia brand
Tier-gated API surface affects migration completeness
Voice workflow configurations are not portable
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 Sentia platform validation
We confirm the customer's platform is the Sentia CRM (sentiaai.gitbook.io) by validating the login endpoint and data model against the GitBook documentation. We audit the source Sentia account across tier (Basic/Starter/Ultimate), user count, Contact volume, Company volume, Deal volume, pipeline count, active custom fields (discovered via metadata API with tier-constrained field flagging), activity record count, and attachment volume. We pair this with an Odoo edition review: Odoo Standard ($30/user) covers most standalone CRM migrations; Odoo Enterprise ($75/user) is required if the customer plans to use Studio custom fields at scale or needs ORM access for complex lookups; Odoo Online is the hosted option versus self-hosted for Enterprise on-premise.
Lead-Contact merge strategy and Odoo schema setup
We design the Lead-Contact merge strategy based on the customer's Sentia lifecycle data. Unqualified Sentia Leads become Odoo CRM Leads; qualified Sentia Leads and all Sentia Contacts become Odoo CRM Partners with the Contact subtab visible. We pre-create Odoo CRM Stages in the Sales app mapped from Sentia pipeline stages, with probability percentages and sequence order preserved. We pre-create any custom fields on res.partner and crm.lead via Odoo Studio using the discovered Sentia custom field schema. We configure Sales Teams if the customer has multiple Sentia pipelines.
Sandbox migration and reconciliation
We run a full migration into an Odoo staging database using production-like data volume. The customer's Odoo administrator reconciles record counts (Contacts in, Leads in, Partners in, Opportunities in, Activities in), spot-checks 25-50 random records against the Sentia source data, and validates that the Lead-Contact merge produced the expected Odoo record distribution. Any mapping corrections happen in staging, not in production. The customer signs off the staging results before we proceed to production migration.
Owner reconciliation and User provisioning
We extract every distinct Sentia user_id referenced on Contacts, Companies, Deals, and Activities and match by email against the destination Odoo User table. Users without a matching Odoo User are placed in a reconciliation queue for the customer's admin to provision. We require that all User records be provisioned and active before the Partner import phase because Odoo CRM requires a responsible user on crm.lead records and res.partner records. The admin can assign inactive Users if historical assignment attribution must be preserved without giving former employees system access.
Production migration in dependency order
We run production migration in record-dependency order: Partners (from Sentia Companies first, then Contacts attached to the correct parent Partner), CRM Leads (from unqualified Sentia Leads), CRM Opportunities (with partner_id, stage_id, and user_id resolved), Activities (calls, emails, meetings, notes via Odoo mail.message and mail.activity API with parent-record lookup), Tags (created on demand and linked), Attachments (re-uploaded and linked via ir.attachment). Each phase emits a row-count reconciliation report before the next phase begins. We use Odoo's ORM batch create with commit points every 500 records to manage transaction size.
Cutover, validation, and automation handoff
We freeze Sentia writes during a defined cutover window, run a final delta migration of any records created or modified after the freeze, then enable Odoo CRM as the system of record. We deliver the Voice Workflow and Automation inventory document to the customer's admin team with each rule documented and a recommended Odoo Studio equivalent noted. We support a five-business-day hypercare window where we resolve any record-count discrepancies or data quality issues raised by the customer's team. We do not rebuild Sentia voice workflows or automations as Odoo Studio actions inside the migration scope; that work is handled by the customer's admin or an Odoo implementation partner.
Platform deep dives
Sentia
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 Sentia 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
Sentia: Not publicly documented — confirmed during scoping. Effective limits are bounded by the underlying CRM's published rate quotas since Sentia reads/writes through that platform's API..
Data volume sensitivity
Sentia doesn't expose a bulk API — REST + parallelization used for high-volume runs.
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 Sentia to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Sentia 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 Sentia
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.