CRM migration

Migrate from AddressTwo to Odoo CRM

Field-level mapping, validation, and rollback between AddressTwo and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.

AddressTwo logo

AddressTwo

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

69%

9 of 13

objects map 1:1 between AddressTwo and Odoo CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from AddressTwo to Odoo CRM is a structural migration that reconciles a contact-centric data model against Odoo's partner-centric architecture. AddressTwo stores company data as fields on Contact records; Odoo maintains a separate res.partner object with a company_id field for organizational hierarchy. We flatten AddressTwo's embedded company data into Odoo res.partner records, reconstructing the organizational structure where needed, and map Deals to crm.lead with stage values and owner assignment preserved. Activity history migrates as mail.message records linked to the correct partner, and we flag the AddressTwo API access constraint (requires email approval, no self-service developer portal) during scoping so that timeline does not surprise. Workflows, automations, and reporting configurations do not migrate as code; we deliver a written inventory for the customer's admin to rebuild in Odoo's Studio.

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

AddressTwo logo

AddressTwo

What's pushing teams away

  • No QuickBooks or accounting integration — at least one long-term user cited this as the reason they finally evaluated alternatives despite years of satisfaction.
  • Basic reporting and dashboard features — multiple reviewers describe difficulty building reports in the web interface, especially after UI refreshes.
  • Duplicate contact detection fails during email sync, causing double records that require manual cleanup — this friction pushed at least one reviewer toward a switch.
  • Scaling concern: the feature set is deliberately simple, so growing teams outpace the platform's capabilities and need more advanced pipeline automation or custom objects.
  • Some users find the web interface harder to navigate after UI updates, preferring the older program layout.

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 AddressTwo objects map to Odoo CRM

Each row shows how a AddressTwo 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.

AddressTwo

Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

AddressTwo Contact records map to Odoo res.partner. The AddressTwo contact's embedded company name becomes the res.partner company_name field. The contact's individual-person fields (name, email, phone, title) map to the standard res.partner name, email, phone, and function fields. We run a fuzzy de-duplication pass before import to catch any duplicates created by AddressTwo's email BCC sync behavior.

AddressTwo

Company (flattened field)

maps to

Odoo CRM

res.partner (company type)

1:many
Fully supported

AddressTwo stores company information as fields on the Contact rather than a separate object. We identify unique company names in the AddressTwo company field and create a separate res.partner record with is_company=True for each unique organization. The original Contact record becomes a res.partner with is_company=False and company_id pointing to the reconstructed company partner.

AddressTwo

Deal

maps to

Odoo CRM

crm.lead

1:1
Fully supported

AddressTwo Deals map to Odoo crm.lead records with type='opportunity'. The deal name becomes crm.lead name, deal amount maps to expected_revenue, stage maps to stage_id, owner maps to user_id, and closedate maps to date_deadline. We preserve the AddressTwo deal order status and use it to set the priority field on crm.lead.

AddressTwo

Deal Stage

maps to

Odoo CRM

crm.stage

lossy
Fully supported

Each AddressTwo deal pipeline becomes an Odoo crm.lead.team with its own crm.stage sequence. We map AddressTwo stage names to Odoo stage values and configure stage probabilities per the customer's pipeline. Stage values are created in the destination Odoo database before any crm.lead records are imported.

AddressTwo

Activity (Call, Meeting, Email, Task)

maps to

Odoo CRM

mail.message

1:1
Fully supported

AddressTwo Activities are date-stamped events tied to a Contact. We import them as mail.message records linked to the migrated res.partner via model=res.partner and res_id pointing to the partner's database ID. Activity type (call, meeting, email, task) is stored in the mail.message message_type field. The original timestamp is preserved in mail.message date.

AddressTwo

Note

maps to

Odoo CRM

mail.message

1:1
Fully supported

AddressTwo free-text notes attached to a Contact migrate as mail.message records with message_type=notification. The note body migrates as the mail.message body field in HTML format. Notes are linked to the migrated res.partner via model=res.partner and res_id.

AddressTwo

Email History (BCC thread)

maps to

Odoo CRM

mail.message (incoming)

1:1
Fully supported

AddressTwo stores email threads collected by BCCing the platform on outbound messages. We import the BCC thread as a chronological mail.message sequence per res.partner, noting that Odoo stores email threads as flattened conversation logs rather than threaded conversation objects. Email content and timestamps migrate verbatim.

AddressTwo

Tag / Label

maps to

Odoo CRM

res.partner.category

1:1
Fully supported

AddressTwo contact tags migrate to Odoo res.partner.category records. The tag name and any color or description fields map to category.name and category.color. We create the category records before importing partners so that the partner-category relationship is satisfied at import time.

AddressTwo

Mass Email Campaign Membership

maps to

Odoo CRM

mailing.mailing.contact

1:1
Fully supported

AddressTwo tracks which contacts received mass email campaigns. We create Odoo mailing.contact records linked to the corresponding mailing.mailing and to the res.partner. Campaign-level analytics (open rates, click rates) are not exported from AddressTwo and cannot be migrated; we document the campaign names and member lists only.

AddressTwo

Custom Field (Contact)

maps to

Odoo CRM

ir.model.field (res.partner)

lossy
Fully supported

AddressTwo custom fields on Contacts are created as ir.model.field definitions on res.partner before migration using Odoo Studio or directly via the ORM. Field type mapping: text to char/text, number to float/integer, date to date, checkbox to boolean, dropdown to selection. Custom field values migrate as partner field values during the res.partner import.

AddressTwo

Custom Field (Deal)

maps to

Odoo CRM

ir.model.field (crm.lead)

lossy
Fully supported

AddressTwo custom fields on Deals are created as ir.model.field definitions on crm.lead before migration. Stage-dependent fields on Deals map to crm.lead stage custom fields or to note fields depending on their type. Customer reviews custom field mapping during scoping.

AddressTwo

User / Owner

maps to

Odoo CRM

res.users

1:1
Fully supported

AddressTwo owner assignment maps to Odoo res.users. We resolve owners by email match against the destination Odoo instance's user table. Any AddressTwo owner without a matching Odoo user is held in a reconciliation queue for the customer's admin to provision before record import resumes.

AddressTwo

User / Owner

maps to

Odoo CRM

crm.team

1:1
Fully supported

AddressTwo owner records also map to crm.team membership in Odoo. Each team is assigned a team_leader and members from the owner-to-user mapping. This ensures Deal ownership maps correctly to crm.lead.user_id.

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.

AddressTwo logo

AddressTwo gotchas

High

API requires approved key obtained via email to support

High

No self-service data export or bulk download

Medium

Duplicate contact creation during email sync

Low

QuickBooks integration does not exist

Low

No formally documented API rate limits

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

  • AddressTwo API requires manual email approval

    AddressTwo's v2.0 API is not publicly self-service. There is no developer portal, no OAuth flow, and no published sandbox. To obtain an API key you must email [email protected] and receive approval, with no published response SLA. This means automated migration scripts cannot be pre-validated against a sandbox environment. We contact AddressTwo support on the customer's behalf during scoping and use manual CSV export as a fallback if the API key is not granted within the migration window. Timeline depends on their response time, and we build a CSV-based extraction path in parallel so that API key approval remains on the critical path but is not the sole extraction mechanism.

  • No self-service bulk data export from AddressTwo

    AddressTwo does not publish a self-service data export button in the standard account settings. Users report exporting via CSV is possible but not obvious in the interface, and the full scope of what exports (contacts only, or including activities and notes) is not clearly documented. We ask customers to log a request with AddressTwo support for a full account export before migration kickoff. If the export arrives incomplete, we supplement with AddressTwo's API (pending key approval) or direct screen-scraping of the web interface for specific record types that the CSV omits. Attachments in particular require a direct login export request to AddressTwo support because they are not accessible via the documented data export path.

  • Odoo crm.lead requires partner_id for full activity linking

    Odoo's activity timeline (mail.message) links to res.partner records via model and res_id. If a migrated crm.lead does not have a valid partner_id set, the activity history may appear orphaned in Odoo's chatter widget. We resolve partner_id on crm.lead during import by matching the AddressTwo Deal's primary contact to the migrated res.partner. If a Deal has no associated Contact in AddressTwo, we create a minimal res.partner record to serve as the lead's partner_id anchor. This step is validated in the sandbox migration before production.

  • AddressTwo company data as flattened fields requires restructuring

    AddressTwo stores company information as fields on the Contact record rather than as a separate Company object. This means a Contact named John at Acme Corp carries 'Acme Corp' as a text field, not as a reference to a separate company record. When migrating to Odoo's partner-centric model, we must identify unique company names, create a res.partner with is_company=True for each, and link the original Contact as a person-type res.partner with company_id pointing to the reconstructed company partner. We run this company-extraction and partner-split step before the main contact import so that company_id references are satisfied at import time. Customers with fewer than 50 unique company values can review the extracted company list and merge duplicates during scoping.

  • Workflows, automations, and reporting configs do not migrate as code

    AddressTwo workflows (if any are configured in the account) and Odoo CRM automated actions (ir.actions.server, crm.lead.automation) are different automation models and do not migrate as code. We deliver a written inventory of every AddressTwo automation and a recommended Odoo CRM automated action equivalent for the customer's admin to rebuild. Similarly, AddressTwo reporting configurations and dashboard layouts do not map to Odoo reporting objects; we document the key reports and metrics the customer relies on so that Odoo Studio or the Odoo Report Designer can replicate them.

Migration approach

Six steps for a successful AddressTwo to Odoo CRM data migration

  1. Discovery and scoping

    We audit the AddressTwo account across record counts (Contacts, Deals, Activities, Notes, Tags, Campaign memberships), custom field definitions, owner assignments, and pipeline stage names. We pair this with an Odoo edition and deployment decision: CRM-only on Odoo.sh Starter (~$24.90/user/month) for straightforward migrations; Odoo ERP suite if the customer needs accounting or inventory alongside CRM; or self-hosted Community edition if the customer prefers one-time infrastructure cost over recurring SaaS fees. The discovery output is a written migration scope and a source data inventory noting any records requiring AddressTwo support assistance to export.

  2. AddressTwo data extraction

    We request a full account export from AddressTwo support (email to [email protected]) and simultaneously apply for the v2.0 API key. If the API key arrives within the scoping window, we extract via API with conservative 30-second batch staggering to account for undocumented rate limits. If API access is not granted, we rely on the support-provided CSV export supplemented by targeted API calls or direct interface export for specific record types. We run a de-duplication pass on all Contact records before processing to merge any duplicates created by AddressTwo's email BCC sync behavior.

  3. Schema design and partner restructure

    We design the destination schema in the customer's Odoo instance. This includes creating custom fields on res.partner and crm.lead for each AddressTwo custom field (via Odoo Studio or direct ORM), configuring crm.lead.team records (one per AddressTwo pipeline), creating crm.stage values with probability percentages mapped from AddressTwo stages, and setting up res.partner.category records for the tag taxonomy. The company extraction step runs before the main partner import to create is_company=True res.partner records for each unique company identified in AddressTwo's embedded company field. Schema is validated in the Odoo test environment before any data moves.

  4. Owner reconciliation and user provisioning

    We extract every distinct AddressTwo Owner referenced on Contact, Deal, and Activity records and match by email against the destination Odoo instance's res.users table. Owners without a matching user go to a reconciliation queue. The customer's Odoo admin provisions any missing users (active or inactive depending on whether the original AddressTwo user is still contributing data). Migration cannot proceed past the partner import step because user_id and company_id references on crm.lead require valid destination users and partner records.

  5. Sandbox migration and validation

    We run a full migration into the customer's Odoo test or staging environment using production-like data volume. The customer's admin reconciles record counts (partners in, leads in, activities in, notes in), spot-checks 20-40 random records against the AddressTwo source, and validates that the partner-company hierarchy and lead ownership are correct. Activity history linking (mail.message to res.partner) is verified by checking that the chatter widget on a sample of partners shows the correct historical timeline. Any mapping corrections are documented and applied before production migration begins.

  6. Production migration in dependency order

    We run production migration in record-dependency order: res.partner.company records first (is_company=True), then res.partner person records (is_company=False with company_id set), then crm.lead.team and crm.stage configuration, then crm.lead (with user_id and partner_id resolved), then mail.message activity history (with model and res_id resolved to the migrated partner IDs), then res.partner.category and mailing.mailing for tag and campaign data. Each phase emits a row-count reconciliation report before the next phase begins. We use Odoo's XML-RPC or JSON-RPC API with batch chunking and exponential backoff for activity history volume.

  7. Cutover, validation, and rebuild handoff

    We freeze AddressTwo writes during cutover, run a final delta migration of any records modified during the migration window, then enable Odoo as the system of record. We deliver the automation and report inventory document to the customer's admin team. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild AddressTwo workflows as Odoo automated actions inside the migration scope; that work is handled by the customer's admin or an Odoo implementation partner.

Platform deep dives

Context on both ends of the pair

AddressTwo logo

AddressTwo

Source

Strengths

  • Flat-rate pricing at $14.95/month with no per-user fee — the simplest billing model in the small-business CRM category.
  • Perfect customer service score of 5.0/5 across verified reviews, with responsive named support staff.
  • Web-based with real-time multi-user access and no software to install or patch.
  • Built-in mass email and email BCC auto-population eliminates manual contact entry for inbound correspondence.
  • 14-day free trial with no credit card required lowers the barrier to evaluate fit.

Weaknesses

  • No accounting or bookkeeping integration — a documented gap that forces users to maintain a separate financial tool.
  • Limited reporting and dashboard features; multiple long-term users cite difficulty building custom reports.
  • Basic duplicate detection during contact sync causes double records that require manual cleanup.
  • API is not self-service — approved key required via email to support, limiting automated migration options.
  • No formally documented rate limits, bulk endpoints, or self-service data export makes programmatic extraction uncertain without direct engagement.
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 AddressTwo 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

    AddressTwo: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your AddressTwo 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 AddressTwo to Odoo CRM data migrations

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

Can't find your answer?

Walk through your AddressTwo to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between three and five weeks for accounts under 10,000 Contacts and 2,000 Deals with no complex custom fields. Migrations with high activity history volume (over 200,000 activity records), many custom fields, or customers adopting the Odoo ERP suite alongside CRM move into eight to twelve weeks because of schema design for the ERP layer and extended validation. The AddressTwo API access constraint (requires email approval) can add one to two weeks to the extraction phase if the API key is not granted promptly.

Adjacent paths

Related migrations to explore

Ready when you are

Move from AddressTwo.
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