CRM migration

Migrate from NetHunt CRM to Odoo CRM

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 logo

NetHunt CRM

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

79%

11 of 14

objects map 1:1 between NetHunt CRM and Odoo CRM.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

NetHunt CRM logo

NetHunt CRM

What's pushing teams away

  • Pricing escalates sharply on higher tiers—Business at $60/user/month and Advanced at $120/user/month make it costly for teams needing advanced automation.
  • Users report that automation Workflows cannot be exported or transferred between CRMs, forcing teams to rebuild complex sequences from scratch when switching platforms.
  • Per-user billing adds up quickly as sales teams grow, with no volume discounts or flat-rate enterprise options published on the website.
  • Limited native reporting depth compared to enterprise CRMs means power users often export to Google Sheets or BI tools rather than relying on built-in dashboards.
  • The mobile app is described as occasionally lagging, which frustrates field sales teams who need CRM access on the go.

Choosing

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How NetHunt CRM objects map to Odoo CRM

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

maps to

Odoo CRM

CRM Pipeline + Sales Team

lossy
Fully supported

NetHunt 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)

maps to

Odoo CRM

Contact (res.partner)

1:1
Fully supported

NetHunt 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)

maps to

Odoo CRM

Lead (crm.lead)

1:1
Fully supported

NetHunt 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)

maps to

Odoo CRM

Company (res.partner with address_type=company)

1:1
Fully supported

NetHunt 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

maps to

Odoo CRM

Opportunity (crm.lead with type=opportunity)

1:1
Fully supported

NetHunt 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

maps to

Odoo CRM

Odoo Sales Team + Stage

lossy
Fully supported

NetHunt 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)

maps to

Odoo CRM

Odoo Chatter (mail.message)

1:1
Fully supported

NetHunt 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

maps to

Odoo CRM

Odoo CRM Activity (crm.activity)

1:1
Fully supported

NetHunt 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

maps to

Odoo CRM

Odoo Custom Field (ir.model.fields)

lossy
Fully supported

NetHunt 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

maps to

Odoo CRM

Odoo Tag (res.partner.category or crm.tag)

1:1
Fully supported

NetHunt 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

maps to

Odoo CRM

Odoo Attachment (ir.attachment)

1:1
Fully supported

NetHunt 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

maps to

Odoo CRM

Odoo User (res.users)

1:1
Fully supported

NetHunt 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

maps to

Odoo CRM

No direct equivalent (documentation only)

1:1
Fully supported

NetHunt 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

maps to

Odoo CRM

No direct equivalent (documentation only)

1:1
Not supported

NetHunt 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.

Gotchas + challenges

What specifically takes care here

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 logo

NetHunt CRM gotchas

High

Workflow automations do not transfer between CRMs

High

No-refund subscription policy creates billing risk on cancellation

Medium

Automation action limits are tier-gated and billable

Medium

Folder-based data model requires per-folder API queries

Low

Mobile app performance issues reported by users

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • NetHunt Workflows have no API export path to Odoo

    NetHunt Workflows (triggers, conditions, and actions inside Gmail and the NetHunt web UI) are not accessible via the NetHunt API and have no export mechanism. Odoo Server Actions and Automated Actions operate on a different execution model (Python-based server actions triggered by ORM events vs NetHunt's event-driven inbox rules), so there is no automated translation path. We capture a structured audit of every active Workflow during the scoping phase including trigger events, condition logic, and action sequences. The customer receives a written Workflow inventory document and rebuilds automations in Odoo Studio post-migration.

  • Folder-based export requires per-folder API iteration

    NetHunt organizes all Records within Folders and requires querying each Folder separately via the API to retrieve its records. There is no single API endpoint to export all CRM data at once. If a NetHunt account has 10+ folders with divergent schemas, we must enumerate each folder, extract its custom field definitions, query its records, and map them to Odoo objects individually. This extends discovery and scoping time significantly compared to CRMs with a flat record model. We log folder-by-folder progress for auditability and ensure no folder is missed.

  • Non-refundable NetHunt subscriptions create mid-migration billing waste

    NetHunt explicitly states it does not issue refunds for unused subscription periods on cancellation. If a team migrates mid-billing-cycle, they pay for the full period with no credit applied. We advise customers to time the migration to align with billing cycle ends and to downgrade to NetHunt's minimal tier before migration begins to reduce wasted spend on the source platform during the transition window. This is particularly relevant for teams on Business ($48/user/mo) or Advanced ($99/user/mo) tiers where monthly waste accumulates quickly.

  • NetHunt record-to-company relationships require pre-import company resolution

    NetHunt stores Contact-to-Company relationships as linked fields on the Record, while Odoo requires the parent Company (res.partner with address_type=company) to exist before the linked Contact can reference it via partner_id. If NetHunt Folders contain both Company-type Records and Contact-type Records in the same folder, we must import Companies first, resolve the relationship IDs, then import Contacts. Failing to observe this dependency order results in orphaned Contact records with no company link in Odoo. We handle this ordering automatically but require folder record counts during scoping to plan the import sequence.

  • Odoo chatter replay requires HTML email body transformation

    NetHunt email engagement bodies may contain HTML formatted for NetHunt's rendering layer. Odoo's mail.message stores body content as HTML using QWeb templates. We strip unsupported HTML tags and normalize inline styles during the transform step before posting to Odoo chatter. Plain-text email bodies migrate without transformation. Attachments embedded within email HTML are extracted as separate ir.attachment records linked to the mail.message. Customers should verify email rendering in Odoo after migration, particularly for emails with complex HTML tables or embedded images.

Migration approach

Six steps for a successful NetHunt CRM to Odoo CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

NetHunt CRM logo

NetHunt CRM

Source

Strengths

  • Built directly inside Gmail, eliminating tab-switching for users who live in email
  • Multiple pipelines with visual stage management and deal tracking
  • Multi-channel sequencing (email, LinkedIn, WhatsApp, phone) available on higher tiers
  • Contact enrichment and lead data enrichment features on Business tier and above
  • 14-day free trial with no credit card required for evaluation

Weaknesses

  • Per-user pricing model scales poorly for large sales teams
  • No native duplicate detection for contacts during import
  • Workflow automations are trapped in NetHunt and cannot be exported
  • Limited native reporting compared to enterprise CRM alternatives
  • No refund policy—subscriptions are non-refundable at any point
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

Complexity grading

How hard is this migration?

Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across NetHunt CRM and Odoo CRM.

  • Object compatibility

    B

    2 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    NetHunt CRM: Not publicly documented on NetHunt's developer documentation.

  • Data volume sensitivity

    B

    NetHunt CRM doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your NetHunt CRM to Odoo CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about NetHunt CRM to Odoo CRM data migrations

Answers to the questions buyers ask most during NetHunt CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Typical migrations land between two and four weeks for accounts with under 10,000 records across 1-3 folders and clean custom field schemas. Migrations with 5+ folders, divergent custom field definitions per folder, large activity histories (over 200,000 engagement records), or an existing Odoo database requiring data merge work extend to six to ten weeks. The folder enumeration step in discovery is the primary timeline variable; the more folders and custom field schemas NetHunt uses, the more scoping and mapping work is required before migration begins.

Adjacent paths

Related migrations to explore

Ready when you are

Move from NetHunt CRM.
Land in Odoo CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day