CRM migration
Field-level mapping, validation, and rollback between NetHunt CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
NetHunt CRM
Source
Odoo CRM
Destination
Compatibility
11 of 14
objects map 1:1 between NetHunt CRM and Odoo CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from NetHunt CRM to Odoo CRM is a structural migration from a Gmail-native, folder-based data model to a modular ERP object model. NetHunt stores every record type (contact, company, deal) as a unified Record within a Folder; Odoo separates Leads, Contacts, and Opportunities into distinct CRM objects with their own views and pipelines. We enumerate every NetHunt Folder during discovery, split its records by type into the correct Odoo CRM object, preserve custom field schemas as Odoo custom fields on res.partner and crm.lead, and replay activity history into Odoo's chatter and activity log. NetHunt Workflows cannot export via API and must be rebuilt as Odoo Server Actions and Automated Actions post-migration. We deliver a written inventory of all active Workflows for the customer to reference during rebuild.
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 NetHunt 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.
NetHunt CRM
Folder
Odoo CRM
CRM Pipeline + Sales Team
lossyNetHunt Folders are the top-level organizational container in NetHunt, each containing Records of potentially mixed types (Contacts, Companies, Deals) plus custom Views and Filters. We enumerate every accessible Folder during discovery, documenting folder names, record counts, and custom field schemas per folder. Each Folder maps to a separate Odoo CRM Pipeline with its own stage configuration. Folder-level Views and Filters do not migrate as Odoo views; we document them as a written filter reference for the customer to configure Odoo Search and Group By views post-migration.
NetHunt CRM
Record (Contact type)
Odoo CRM
Contact (res.partner)
1:1NetHunt Records of contact type (standard name, email, phone, company link) map directly to Odoo res.partner records with address_type=contact. The contact-to-company linkage in NetHunt maps to the partner_id parent relationship in Odoo. Custom fields on the NetHunt Record become Odoo custom fields on res.partner using the ir.model.fields model. We preserve the NetHunt record ID in a custom field nethunt_record_id__c for cross-system audit.
NetHunt CRM
Record (Lead type)
Odoo CRM
Lead (crm.lead)
1:1NetHunt Records explicitly tagged as Lead type map to Odoo crm.lead with type=lead. Lead-specific fields (lead source, lifecycle stage, score, status) migrate to crm.lead standard fields (source_id, stage_id, priority) with custom fields for any NetHunt-specific lead attributes. Leads in NetHunt that have no associated Deal are imported as leads only; leads with deal history carry a reference to the migrated Opportunity.
NetHunt CRM
Record (Company type)
Odoo CRM
Company (res.partner with address_type=company)
1:1NetHunt Company records map to Odoo res.partner with address_type=company. The NetHunt contact-to-company linkage becomes the partner_id parent relationship on the linked contact records. Company-level custom fields migrate as custom fields on res.partner. If a NetHunt Company record has no linked Contact records, it imports as a standalone company partner in Odoo.
NetHunt CRM
Deal
Odoo CRM
Opportunity (crm.lead with type=opportunity)
1:1NetHunt Deals map to Odoo crm.lead with type=opportunity. Deal fields (value, stage, probability, expected close date, responsible user) map to Odoo standard fields (planned_revenue, stage_id, probability, date_deadline, user_id). The NetHunt pipeline and stage assignment maps to Odoo's crm.stage within the relevant Odoo Sales Team. Closed-won and closed-lost reasons from NetHunt custom fields become Odoo stage change custom fields.
NetHunt CRM
Pipeline
Odoo CRM
Odoo Sales Team + Stage
lossyNetHunt Pipelines with their stage configurations map to Odoo crm.team records, each containing a sequence of crm.stage values. Stage probabilities, names, and sequence order migrate to Odoo stage definitions. If NetHunt uses multiple pipelines (e.g., one per product line or region), we create corresponding Odoo Sales Teams so that pipeline visibility is scoped to the relevant team.
NetHunt CRM
Activity (Email, Note, Meeting)
Odoo CRM
Odoo Chatter (mail.message)
1:1NetHunt email engagements, notes, and meeting records attached to Contacts, Companies, and Deals migrate as Odoo mail.message records posted to the record's chatter (mail.thread). Email body content migrates as HTML-formatted mail.message content. Meeting records create mail.message entries with subtype=mt_meeting and calendar.event records for the meeting details. Activity timestamps preserve as mail.message create_date for accurate timeline ordering.
NetHunt CRM
Call Log
Odoo CRM
Odoo CRM Activity (crm.activity)
1:1NetHunt Call Logs (duration, direction, notes, linked contact) map to Odoo crm.activity records with activity_type_id set to the Phone/Call activity type. Call duration, disposition, and outcome notes migrate to custom fields on the crm.activity record. Call logs are linked to the migrated Contact or Lead via the res_model and res_id fields on the activity record.
NetHunt CRM
Custom Field
Odoo CRM
Odoo Custom Field (ir.model.fields)
lossyNetHunt custom fields are defined per-folder and vary across Folders, meaning the same logical field (e.g., Industry) may exist with different types or picklist values across different Folders. We capture the field definition for each Folder before migration and create Odoo custom fields on the corresponding object (res.partner for Contact/Company fields, crm.lead for Lead/Deal fields). Picklist fields migrate as selection fields or many2one relations depending on the value count.
NetHunt CRM
Tag
Odoo CRM
Odoo Tag (res.partner.category or crm.tag)
1:1NetHunt tags are string values on Records used for segmentation. Tags on Contact and Company records migrate as Odoo res.partner.category entries (the standard Odoo contact tag model). Tags on Deal records migrate as Odoo crm.tag entries linked via crm.tag.rel. We flag any tag name collisions with existing Odoo tags during scoping and prefix conflicting tags with the original folder name.
NetHunt CRM
Attachment
Odoo CRM
Odoo Attachment (ir.attachment)
1:1NetHunt file attachments linked to Records migrate as Odoo ir.attachment records linked to the corresponding res.partner or crm.lead via res_model and res_id. We migrate attachment filenames, MIME types, and URLs. For attachments stored in integrated third-party services (e.g., DocHub), we preserve the URL as a custom field on the linked Odoo record rather than attempting to download and re-host the file. Customers should verify DocHub and similar integration URLs remain accessible post-migration.
NetHunt CRM
User
Odoo CRM
Odoo User (res.users)
1:1NetHunt Users referenced as record owners map to Odoo res.users by email match. We extract every distinct NetHunt user_id referenced on Contact, Company, Deal, and Activity records and match against the destination Odoo instance's user list. Any NetHunt owner without a matching Odoo user goes to a reconciliation queue for the customer's admin to provision before record import continues, because OwnerId (user_id) references are required on Opportunity and Activity records.
NetHunt CRM
Workflow
Odoo CRM
No direct equivalent (documentation only)
1:1NetHunt Workflows are automation rules operating inside Gmail and the NetHunt web UI with no API export mechanism. They do not map to Odoo Server Actions or Automated Actions because the execution models differ. We document every active NetHunt Workflow during discovery (trigger, conditions, actions, folder scope) in a written handoff document. The customer's Odoo admin or an Odoo implementation partner rebuilds them post-migration using Odoo's Studio or server action builder.
NetHunt CRM
Custom Roles
Odoo CRM
No direct equivalent (documentation only)
1:1NetHunt Custom Roles define per-user permission sets within NetHunt's internal permission model. Odoo uses a separate access rights and record rules system (under Settings > Users > Access Rights) that does not have a direct structural equivalent. We document the NetHunt role assignments during discovery but do not migrate them. The customer's Odoo admin configures Odoo access rights and Sales Team visibility rules post-migration.
| NetHunt CRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Folder | CRM Pipeline + Sales Teamlossy | Fully supported | |
| Record (Contact type) | Contact (res.partner)1:1 | Fully supported | |
| Record (Lead type) | Lead (crm.lead)1:1 | Fully supported | |
| Record (Company type) | Company (res.partner with address_type=company)1:1 | Fully supported | |
| Deal | Opportunity (crm.lead with type=opportunity)1:1 | Fully supported | |
| Pipeline | Odoo Sales Team + Stagelossy | Fully supported | |
| Activity (Email, Note, Meeting) | Odoo Chatter (mail.message)1:1 | Fully supported | |
| Call Log | Odoo CRM Activity (crm.activity)1:1 | Fully supported | |
| Custom Field | Odoo Custom Field (ir.model.fields)lossy | Fully supported | |
| Tag | Odoo Tag (res.partner.category or crm.tag)1:1 | Fully supported | |
| Attachment | Odoo Attachment (ir.attachment)1:1 | Fully supported | |
| User | Odoo User (res.users)1:1 | Fully supported | |
| Workflow | No direct equivalent (documentation only)1:1 | Fully supported | |
| Custom Roles | No direct equivalent (documentation only)1: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.
NetHunt CRM gotchas
Workflow automations do not transfer between CRMs
No-refund subscription policy creates billing risk on cancellation
Automation action limits are tier-gated and billable
Folder-based data model requires per-folder API queries
Mobile app performance issues reported by users
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 folder enumeration
We authenticate to NetHunt via the REST API (email + API key, Basic auth) and enumerate every accessible Folder. For each Folder, we capture the custom field schema (field names, types, picklist values), record counts by record type (Contact, Company, Lead, Deal), pipeline and stage assignments, and active Workflow configurations. We also extract NetHunt's pipeline definitions and stage list. This discovery output is a structured folder inventory and a per-folder schema map used to design the Odoo CRM configuration before any data moves.
Odoo CRM schema design and pipeline configuration
We design the destination schema in the Odoo instance. This includes creating Odoo Sales Teams (one per NetHunt Pipeline), configuring crm.stage values with probability percentages matching the NetHunt stage matrix, provisioning custom fields on res.partner (for Contact and Company records) and crm.lead (for Leads and Opportunities) using the per-folder schema captured in Step 1, and setting up Odoo tag categories (res.partner.category) to receive migrated tags. Schema configuration deploys to a Odoo test database first for validation before production migration begins.
Test migration and reconciliation
We run a full migration into the Odoo test environment using production-like data volume. The customer's CRM admin reviews record counts in each Odoo object (Contacts, Companies, Leads, Opportunities), spot-checks 25-50 records for field-level accuracy against the NetHunt source, and verifies that activity timelines (chatter entries) reflect the correct sequence and content. Any field mapping corrections, custom field type adjustments, or pipeline stage discrepancies are resolved in the test environment before production migration begins.
Owner reconciliation and Odoo user provisioning
We extract every distinct NetHunt user referenced as a record owner across Contacts, Companies, Deals, and Activities and match by email against the destination Odoo instance's res.users table. NetHunt owners without a matching Odoo user enter a reconciliation queue. The customer's Odoo admin provisions any missing users (active status matching the NetHunt user's current subscription state) before production migration continues. This step is required because user_id is a mandatory foreign key on Odoo Opportunity and Activity records.
Production migration in dependency order
We run the production migration in record-dependency order: Odoo users validated, Companies (res.partner with address_type=company) imported first to satisfy parent lookups, then Contacts (res.partner with address_type=contact) linked to their parent Company, then Leads (crm.lead with type=lead), then Opportunities (crm.lead with type=opportunity) with owner, stage, and team resolved, then Tags (res.partner.category and crm.tag), then Call Logs and Activities replayed to Odoo chatter via the XML-RPC API, then Attachments (ir.attachment) linked to the migrated records. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, final delta sync, and Workflow handoff
We freeze writes in NetHunt during cutover, run a final delta migration for any records created or modified during the migration window, then switch the system of record to Odoo CRM. We deliver the Workflow inventory document (NetHunt Workflows documented with trigger, conditions, and actions) to the customer's Odoo admin team for rebuild using Odoo Studio or server actions. We support a one-week post-go-live window to resolve reconciliation issues raised by the sales team. Workflow rebuild, Odoo training, and post-migration admin support are outside the standard migration scope and are separate engagements.
Platform deep dives
NetHunt CRM
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 NetHunt CRM and Odoo CRM.
Object compatibility
2 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
NetHunt CRM: Not publicly documented on NetHunt's developer documentation.
Data volume sensitivity
NetHunt CRM 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 NetHunt CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your NetHunt 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 NetHunt 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.