CRM migration
Field-level mapping, validation, and rollback between Acumen and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Acumen
Source
Odoo CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Acumen and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Acumen CRM and Odoo CRM share the same core CRM objects — contacts, companies, deals, and activities — but their underlying data models differ substantially. Acumen organizes contacts and companies as separate entities with direct associations, while Odoo uses the res.partner model for both contacts and companies (with a contact_type field distinguishing between 'contact' and 'company' roles) and stores leads/opportunities in the crm.lead model with a type field. We extract Acumen data via its export API or CSV exports, translate the relational model into Odoo's partner-centric architecture, map custom fields to Odoo ir.model.fields definitions, and load via XML-RPC. The migration carries everything Acumen stores natively: contact details, company hierarchies, deal pipelines with stages, activities (calls, emails, meetings), and custom fields. Workflows, automations, and notification rules do not migrate — they require Odoo Studio or the automation builder to be rebuilt using the exported configuration as reference. The delta-pickup window captures any records modified during the cutover so Odoo reflects Acumen's final state at go-live.
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 Acumen 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.
Acumen
Contact
Odoo CRM
res.partner
1:1Acumen contacts map to Odoo res.partner records with contact_type = 'contact'. The partner_id on Acumen's company association translates to the parent_id field in Odoo — Acumen companies without an explicit parent link get no parent_id. Email uniqueness constraints in Odoo may require de-duplication pass before loading.
Acumen
Company
Odoo CRM
res.partner
1:1Acumen company records map to Odoo res.partner with contact_type = 'company'. The company registration date translates to Odoo's date field as a custom property since Odoo's base res.partner model lacks a native incorporation date. Parent-company hierarchies in Acumen map to the parent_id chain in Odoo.
Acumen
Deal
Odoo CRM
crm.lead (type = 'opportunity')
1:1Acumen deals translate directly to Odoo crm.lead records where type = 'opportunity'. The deal name becomes the crm.lead name field. Pipeline stage values map to crm.stage records associated with the target crm.team — value-by-value mapping required since stage IDs differ per Odoo team configuration.
Acumen
Pipeline Stage
Odoo CRM
crm.stage
1:1Each unique Acumen pipeline stage maps to a corresponding crm.stage record in Odoo. The mapping requires the Odoo team ID context because stage IDs are scoped per crm.team. Stage sequence order and probability values are reapplied from Odoo's stage configuration after mapping.
Acumen
Activity (Call / Email / Meeting)
Odoo CRM
mail.activity
1:1Acumen call, email, and meeting logs translate to Odoo mail.activity records linked to the target res.partner or crm.lead. Activity type values (call, email, meeting) map to Odoo's activity type definitions. Original timestamps and user assignments are preserved. Odoo requires the activity type to exist in the system — missing types are created before migration.
Acumen
Attachment / File
Odoo CRM
ir.attachment
1:1Acumen file attachments migrate to Odoo ir.attachment records linked to the corresponding res.partner or crm.lead. Files are downloaded from Acumen's storage and re-uploaded as base64-encoded binary data. Inline images in Acumen notes are extracted and stored as separate ir.attachment records with the correct mimetype.
Acumen
Custom Field (Contact)
Odoo CRM
ir.model.fields (on res.partner)
1:1Acumen custom contact properties translate to Odoo ir.model.fields definitions on the res.partner model. Field types map as follows: text → char, number → float or integer, date → date, pick-list → selection. Each field is created in Odoo before data loading begins so the target columns exist during import.
Acumen
Custom Field (Deal)
Odoo CRM
ir.model.fields (on crm.lead)
1:1Acumen custom deal fields migrate to Odoo ir.model.fields on the crm.lead model. Decimal amounts, deal source channels, and other Acumen-specific deal metadata become custom fields on the opportunity record. Stage-change timestamps that Acumen stores as separate fields become custom datetime fields in Odoo for reporting continuity.
Acumen
Owner / User
Odoo CRM
res.users
1:1Acumen owner_id values resolve to Odoo res.users records matched by email address. If an Acumen owner has no matching res.users account, the record lands with a fallback user (configurable) and the unmatched owner ID is flagged in the migration audit log for post-migration reassignment.
Acumen
Notes / Comments
Odoo CRM
mail.message
1:1Acumen notes and comments attached to contacts, companies, or deals migrate as Odoo mail.message records linked to the target record. The message body preserves original formatting. Author attribution maps to res.users by email match, defaulting to the system user if no match is found.
Acumen
Tag / Category
Odoo CRM
crm.tag / res.partner.category
1:1Acumen tags on deals migrate to Odoo crm.tag records and are linked via the crm.lead.tag_ids many2many relation. Contact-level tags migrate to res.partner.category. Tags with no existing Odoo definition are created during migration so no tag data is lost in the translation.
Acumen
Acumen Property / Custom Object
Odoo CRM
ir.model.data + custom model
1:1Acumen custom objects that don't have a direct Odoo equivalent are translated to custom Odoo models created via ir.model definitions. The migration creates the model schema first, then loads the records via XML-RPC. Relationships between custom objects and standard records (Contact, Deal) are preserved as many2one or many2many fields on the custom model.
| Acumen | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner1:1 | Fully supported | |
| Deal | crm.lead (type = 'opportunity')1:1 | Fully supported | |
| Pipeline Stage | crm.stage1:1 | Fully supported | |
| Activity (Call / Email / Meeting) | mail.activity1:1 | Fully supported | |
| Attachment / File | ir.attachment1:1 | Fully supported | |
| Custom Field (Contact) | ir.model.fields (on res.partner)1:1 | Fully supported | |
| Custom Field (Deal) | ir.model.fields (on crm.lead)1:1 | Fully supported | |
| Owner / User | res.users1:1 | Fully supported | |
| Notes / Comments | mail.message1:1 | Fully supported | |
| Tag / Category | crm.tag / res.partner.category1:1 | Fully supported | |
| Acumen Property / Custom Object | ir.model.data + custom model1: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.
Acumen gotchas
Acumen does not own the software — DCI is the underlying platform
FMS data is regulated by state Medicaid waiver rules
EVV records carry GPS and biometric verification data
State pages reference state-specific forms not in the standard schema
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
Extract Acumen data via export API or CSV
We begin by connecting to Acumen's export API using scoped read credentials. If the API doesn't support bulk export for a particular object, we fall back to paginated CSV exports. The extraction covers all standard objects (contacts, companies, deals, activities, attachments) and any custom properties identified during the discovery call. We validate record counts against Acumen's internal counts before proceeding to the mapping phase.
Map Acumen schema to Odoo data model and create field definitions
Based on the extraction, we generate the Odoo field definitions (ir.model.fields) for every Acumen custom property. For each Odoo team, we map the Acumen pipeline stages to crm.stage records and create any missing activity types. This schema setup plan is delivered for your Odoo admin to review and approve before data is loaded — pre-creating the Odoo structure avoids the common pitfall of loading data into a model that hasn't been extended yet.
Resolve owners and users by email match
Acumen owner IDs are matched against Odoo res.users records by email address. We generate a pre-flight report showing matched users, unmatched owners, and the fallback user assignment for each unmatched record. Your team can either invite the unmatched owners to Odoo before migration or confirm the fallback assignment. No record loads without a resolved user_id — this prevents orphaned activities in Odoo's assignment-based reporting.
Run sample migration with field-level diff
A representative slice — typically 100–500 records spanning contacts, companies, deals, and activities — migrates first. We generate a field-level comparison report showing source value, mapped value, and any transformation applied for each field. You verify the mapping logic for pipeline stages, custom fields, and owner resolution before the full run commits. Adjustments to the mapping plan are made at this stage.
Execute full migration with delta-pickup window and rollback ready
The full migration runs against your Odoo instance using batched XML-RPC calls with transactional integrity. A delta-pickup window (24–48 hours) runs in parallel, capturing any new or modified Acumen records during the cutover period. All operations are logged in the FlitStack audit log. One-click rollback is available if reconciliation against the pre-migration count fails — the rollback reverts all migrated records in Odoo without touching the Acumen source.
Platform deep dives
Acumen
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Acumen and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Acumen and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Acumen and Odoo CRM.
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
Acumen: Not publicly documented — DCI does not publish API rate limits on the open web. We confirm limits with Acumen and DCI during scoping..
Data volume sensitivity
Acumen 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 Acumen to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Acumen 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 Acumen
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.