CRM migration
Field-level mapping, validation, and rollback between Advantage HITS and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Advantage HITS
Source
Odoo CRM
Destination
Compatibility
10 of 12
objects map 1:1 between Advantage HITS and Odoo CRM.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from Advantage HITS to Odoo CRM requires an extraction method change because Advantage HITS has no documented public API. We sequence data pulls via the authenticated web session and reconstruct the Advantage HITS data model (Contacts, Companies, Deals, Activities, Tags, and custom fields) from the UI schema. Odoo CRM uses the crm.lead model for both Leads and Opportunities and res.partner for Contacts and Companies, which requires a schema configuration step before import. We pre-create pipeline stages as crm.stage records, configure the stage sequence and category (new, prospecting, qualification, proposal, negotiation, closed), and map deal values, owner assignments, and close dates to the correct fields. Attachment re-upload relies on authenticated download from Advantage HITS URLs and Odoo's ir_attachment API. We do not migrate workflows, automations, or custom objects that are not exposed via documented API endpoints; we deliver a written inventory of these for the customer's Odoo admin to rebuild post-migration.
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 Advantage HITS 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.
Advantage HITS
Contact
Odoo CRM
res.partner
1:1Advantage HITS Contact records map to Odoo res.partner with type=contact. The partner's name splits from Advantage HITS firstname and lastname into partner's name field. Email, phone, mobile, job title, and address fields map directly. We preserve any custom contact properties as char or text fields on res.partner and create the corresponding ir.model.fields in Odoo before migration.
Advantage HITS
Company
Odoo CRM
res.partner (type=company)
1:1Advantage HITS Company records map to Odoo res.partner with type=company and company_type=company. The parent_id relationship to child Contact partners is preserved where the source defines it. Company domain maps to website, industry to industry_id (mapped to Odoo Industry list), and employee count to employee_count.
Advantage HITS
Deal
Odoo CRM
crm.lead
1:1Advantage HITS Deal records map to Odoo crm.lead. The deal name becomes crm.lead name, deal amount maps to expected_revenue, close date maps to date_deadline, and owner assignment maps to user_id via email resolution. We pre-create crm.stage records before deal import so that stage assignment is satisfied as a many2one reference.
Advantage HITS
Pipeline
Odoo CRM
crm.stage
lossyEach Advantage HITS pipeline definition (stage names, order, win/loss flags) becomes a crm.stage record in Odoo. The stage sequence, name, and is_won/is_lost flags configure in Odoo before deal import. We create a separate stage per pipeline using a naming convention (pipeline_name | stage_name) and map deal records to the correct stage by resolved pipeline+stage name crosswalk.
Advantage HITS
Deal Stage
Odoo CRM
crm.stage
1:1Advantage HITS free-text stage names require explicit crosswalk mapping because the source does not assign stable stage IDs. We export the full pipeline definition (all stage names and their order), build a lookup table keyed by pipeline_name plus stage_name, and resolve each deal's stage assignment at migration time. Any deal referencing a stage name not in the exported definition is flagged for manual stage reassignment before migration begins.
Advantage HITS
Activity (Email, Call, Meeting, Note, Task)
Odoo CRM
mail.message and mail.activity
1:1Advantage HITS engagement records (emails, calls, meetings, notes, tasks) map to Odoo mail.message records for content and mail.activity records for scheduled follow-up tracking. The res_model on mail.message points to crm.lead or res.partner; the res_id points to the migrated record ID. Activity timestamps and owner assignments migrate with 1:1 fidelity.
Advantage HITS
Owner
Odoo CRM
res.users
1:1Advantage HITS Owner records (name, email, role, active/inactive status) map to Odoo res.users by email match. We extract every distinct owner referenced on Contact, Company, Deal, and Activity records and reconcile against the destination Odoo instance's users. Owners without a matching res.users record are held in a reconciliation queue; the customer's Odoo admin provisions the user before record import resumes.
Advantage HITS
Custom Field
Odoo CRM
ir.model.fields (custom)
lossyAny user-defined fields on Advantage HITS Contacts, Companies, or Deals are enumerated from the UI field metadata panel. We create matching custom fields on the corresponding Odoo model (res.partner or crm.lead) using Odoo Studio or direct ir.model.fields API, preserving field type (char, text, integer, float, date, selection). Values migrate as text for selection fields if the picklist is not pre-built in Odoo.
Advantage HITS
Tag
Odoo CRM
crm.tag
1:1Advantage HITS tags on Contacts, Companies, and Deals export as tag name lists per record. We create crm.tag records in Odoo for each unique tag name, then generate crm.lead.tag.rel records to link migrated deals to their tags. Contact and Company tag assignments migrate to res.partner.category_id (which uses crm.tag as its backend model in Odoo CRM).
Advantage HITS
Attachment
Odoo CRM
ir.attachment
1:1File attachments linked to Contact, Company, or Deal records in Advantage HITS are downloaded using authenticated session requests, preserving original filenames and MIME types. We re-upload them to Odoo via the ir.attachment API with res_model pointing to the migrated record (crm.lead or res.partner) and res_id pointing to the new Odoo record ID. Attachments exceeding 50 MB per file are flagged for manual handling to avoid session timeout during extraction.
Advantage HITS
Lead Stages
Odoo CRM
crm.stage (category)
1:1Advantage HITS lifecycle stage values (new, contacted, qualified, lost, won, and any customer-defined stages) map to Odoo crm.stage records with the corresponding category column. Stages with category=lost become is_won=false with is_lost=true in Odoo. Stages with category=won become is_won=true. We preserve the original Advantage HITS stage name in a char field on crm.lead for audit.
Advantage HITS
Custom Objects
Odoo CRM
Not migratable
1:1Advantage HITS does not publish a custom object API or schema, and bespoke data structures built in the UI are not programmatically enumerable. Any custom objects in the source are flagged during discovery, documented in the migration inventory, and excluded from the automated migration scope. The customer rebuilds these as Odoo custom models (ir.model, ir.model.fields) post-migration if needed.
| Advantage HITS | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner (type=company)1:1 | Fully supported | |
| Deal | crm.lead1:1 | Fully supported | |
| Pipeline | crm.stagelossy | Fully supported | |
| Deal Stage | crm.stage1:1 | Fully supported | |
| Activity (Email, Call, Meeting, Note, Task) | mail.message and mail.activity1:1 | Fully supported | |
| Owner | res.users1:1 | Fully supported | |
| Custom Field | ir.model.fields (custom)lossy | Fully supported | |
| Tag | crm.tag1:1 | Fully supported | |
| Attachment | ir.attachment1:1 | Fully supported | |
| Lead Stages | crm.stage (category)1:1 | Mapping required | |
| Custom Objects | Not migratable1:1 | Not 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.
Advantage HITS gotchas
No documented public API endpoint for data export
Pipeline stage names are free-text fields
Attachment storage paths are not directly exportable
Dual reporting source architecture
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 method agreement
We audit the Advantage HITS account via authenticated session, enumerating Contact, Company, Deal, Activity, Tag, and Pipeline record counts. We document the full pipeline definition including all stage names and their ordering, flag any visible custom fields from the UI field metadata panel, and identify any custom objects. We agree on the extraction method (session-based scraping or vendor-assisted export if available) and confirm whether bulk export features are enabled in the account. The discovery output is a written migration scope with record counts per object and a field mapping draft.
Destination Odoo schema pre-configuration
We create the crm.stage records in Odoo matching the Advantage HITS pipeline and stage definitions, with sequence, name, category (new, prospecting, qualification, proposal, negotiation, closed won, closed lost), and is_won/is_lost flags. We create any custom fields on res.partner and crm.lead via Odoo Studio or ir.model.fields API before data import begins. If Odoo uses separate Sales Teams, we configure team_id mapping for pipeline-to-team assignment. Schema changes deploy to a staging database or sandbox environment first for validation.
Owner and User reconciliation
We extract every distinct owner referenced on Contact, Company, Deal, and Activity records from Advantage HITS and match by email against the destination Odoo instance's res.users table. Owners without a matching Odoo user are listed for the customer's admin to provision. Migration cannot proceed past deal and activity import until all owner references are satisfied because user_id is required on crm.lead in Odoo.
Authenticated data extraction and staging
We run authenticated session extraction against Advantage HITS, pulling Contact, Company, Deal, Activity, and Tag records in structured format. Attachments download in parallel with original filenames and MIME types preserved. We stage the extracted data in a migration staging area, run field-level validation (missing required fields, invalid formats, orphaned foreign keys), and produce a reconciliation report. The customer reviews the report and approves the staging data before Odoo import begins.
Odoo import in dependency order
We import records into Odoo in dependency order: crm.tag records first (for tag resolution), then res.partner records for Companies (type=company), then res.partner records for Contacts (type=contact with parent_id set to the Company partner), then crm.stage records (validated against the pre-created stage definitions), then crm.lead records for Deals with stage_id, user_id, and expected_revenue resolved, then mail.message and mail.activity records for Activity history, then ir.attachment records for files. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, delta sync, and post-migration handoff
We freeze Advantage HITS writes during cutover, run a final delta migration of any records created or modified during the migration window, then confirm Odoo as the system of record. We deliver the Workflow, Automation, and Custom Object inventory document to the customer's Odoo admin. We do not rebuild Advantage HITS automations or custom objects inside the migration scope; those are documented for the admin to rebuild in Odoo Studio or via developer access post-migration.
Platform deep dives
Advantage HITS
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 1 of 8 objects need a manual workaround.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Advantage HITS and Odoo CRM.
Object compatibility
1 of 8 objects need a manual workaround.
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
Advantage HITS: Not publicly documented.
Data volume sensitivity
Advantage HITS 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 Advantage HITS to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Advantage HITS 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 Advantage HITS
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.