CRM migration

Migrate from AllClients to Odoo CRM

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

AllClients logo

AllClients

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

92%

11 of 12

objects map 1:1 between AllClients and Odoo CRM.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

AllClients exports all data as flat CSV files with no bulk write API, making every migration a file-transformation project rather than a direct API-to-API sync. We extract Contacts from the main Data Migration CSV, rejoin the separate Notes.csv using contact email as the join key, and push the combined record set into Odoo CRM via the XML-RPC or JSON-RPC API. AllClients Groups, which have no independent export, are captured as tag strings embedded in contact rows and materialized as Odoo contact tags post-import. Custom Field definitions discovered via the UpdateCustomFields endpoint map to Odoo's custom field model on the res.partner object. Owner records with Name and Email map to Odoo Users provisioned before contact import so that owner_id references resolve cleanly. Workflow definitions are captured as inactive templates; execution state, enrolled contacts, and historical run data do not move. Landing Pages and Popup Forms are skipped because AllClients does not expose them via export or API. Odoo CRM's Kanban pipeline stages are configured during schema design to reflect the stages present in the source AllClients account.

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

AllClients logo

AllClients

What's pushing teams away

  • Very low per-user ceiling — Premium caps at 2 users, and even Elite requires paid add-ons for additional seats, making the platform impractical as teams grow beyond a couple of people.
  • Add-on pricing stack accumulates quickly: contact count packs, email credit top-ups, SMS provider connection, and extra users can push a $24 base plan to $150+ monthly.
  • Limited third-party integrations beyond Gmail, Outlook, and Zapier — businesses with established tech stacks find AllClients difficult to connect to their existing tools.
  • The platform has not gained significant market traction (30k customers over 20 years is a small base), limiting the availability of community knowledge, plugins, and experienced consultants.
  • Advanced features like marketing automation, landing pages, and AI-powered features are gated behind the $48+ Premium tier, making the base tier feel underpowered for businesses ready to scale.

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

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

AllClients

Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

AllClients Contacts map directly to Odoo res.partner records of type 'contact'. The Contact's email becomes the partner's email field and serves as the dedupe key during import. First name, last name, phone, address fields, and owner assignment migrate to the equivalent Odoo partner fields. AllClients Tags embedded in the contact row are parsed and applied as Odoo partner tags after the base record insert so that the contact is available for tag assignment on the same migration pass.

AllClients

Contact Notes

maps to

Odoo CRM

mail.message (Chatter)

1:1
Mapping required

AllClients Notes export as a separate Notes.csv that must be rejoined to the main Contact CSV before Odoo import. We use contact email as the primary join key and AllClients record ID as a fallback where email is missing or changed. Each Note becomes a mail.message record posted to the res.partner's Chatter thread with message_type = 'comment', preserving the original note body and timestamp. Note records without a matching contact after the join are held in a review queue for manual resolution.

AllClients

Custom Fields

maps to

Odoo CRM

ir.model.fields (custom)

1:1
Mapping required

AllClients Custom Field definitions discovered via the UpdateCustomFields API during scoping map to custom ir.model.fields entries on the res.partner model in Odoo. Field types are mapped: text fields become char or text, numeric fields become float or integer, date fields become date. Custom field values from the AllClients contact export are written to the corresponding Odoo custom field after the res.partner record is created. Multi-value custom fields (e.g., checkbox groups) map to Odoo many2many tags or selection fields depending on value cardinality.

AllClients

Tags

maps to

Odoo CRM

res.partner.category

1:1
Fully supported

AllClients Tags applied to contacts are embedded in the contact CSV export as comma-separated values. We parse the tag list for each contact and create corresponding res.partner.category records in Odoo if they do not already exist, then create res.partner.category.rel records linking the contact to each tag. Tags used for group membership are distinguished from content-classification tags and preserved with a category prefix so the customer can filter by source after migration.

AllClients

Groups / Workgroups

maps to

Odoo CRM

res.partner.category (tag-based)

1:1
Mapping required

AllClients Groups have no independent export — group membership is established by filtering the contact export by group name. We capture group membership for each contact as a named tag (group name prefixed with 'Group:') applied to the Odoo res.partner record. If the customer requires formal Odoo Sales Teams, we materialize the group-to-owner relationship: each AllClients Group maps to an Odoo crm.team, and contacts in that group are assigned to the corresponding team lead (mapped from the AllClients Group's owner).

AllClients

Users / Owners

maps to

Odoo CRM

res.users

1:1
Mapping required

AllClients Users are captured from the admin export with Name, Email, and role/permissions. We match each AllClients Owner referenced on a Contact record by email to an existing Odoo User record. If the Odoo destination does not yet have a matching User for an AllClients owner, the contact is temporarily assigned to the migration admin and flagged for the customer's Odoo admin to provision the User record before final owner_id resolution. Active vs inactive status maps directly.

AllClients

Email Templates

maps to

Odoo CRM

mail.template

1:1
Fully supported

AllClients Email Templates stored under the Email Marketing section export as HTML blobs. We import them into Odoo's mail.template model with the original HTML preserved as body_html. Inline image references that point to AllClients-hosted URLs are flagged for the customer to re-host or upload to Odoo's ir.attachment storage; we document each external URL for manual follow-up. Template subject lines map to subject field, and name maps to name.

AllClients

Campaigns

maps to

Odoo CRM

crm.tag or crm.team

1:1
Mapping required

AllClients Campaigns represent scheduled email sends linked to contact segments. Campaign names and linked segment definitions migrate as named Odoo crm.tag records. Campaign history (send dates, open rates, click rates) is metadata attached to the campaign record rather than a discrete relational object in AllClients and cannot be programmatically extracted, so we document the known campaign names and segment sizes for the customer's admin to recreate in Odoo's email marketing or CRM campaign model.

AllClients

Tasks / Follow-up Reminders

maps to

Odoo CRM

crm.activity

1:1
Mapping required

AllClients Tasks and Follow-up Reminders export from the Tasks section with title, due date, completion status, and owner assignment. We map them to Odoo crm.activity records with activity_type derived from the task category (call, email, meeting, generic). Completed vs pending status maps to Odoo's activity_date_done field. Tasks created as part of AllClients Workflow sequences are migrated as standalone crm.activity records; the workflow automation itself does not carry over.

AllClients

File Attachments

maps to

Odoo CRM

ir.attachment

1:1
Mapping required

AllClients file attachments associated with Contact records are downloaded from AllClients storage and re-uploaded to Odoo's ir.attachment model with res_model = 'res.partner' and res_id pointing to the migrated contact record. Binary files over 10 MB are chunked for download and upload to stay within typical HTTP timeout thresholds. Attachments with no parent contact after the migration (orphaned files) are flagged for manual review.

AllClients

Landing Pages and Popup Forms

maps to

Odoo CRM

Skipped

1:1
Not supported

AllClients Landing Pages and Popup Forms are available on Premium and Elite tiers but are not exposed via the AllClients API or export tools. HTML content, form field definitions, and submission data cannot be programmatically extracted. We skip these objects and flag them during scoping so the customer is aware they must rebuild landing pages and forms in Odoo's Website builder or Forms module post-migration.

AllClients

Workflows

maps to

Odoo CRM

crm.lead.scoring (as inactive template)

lossy
Mapping required

AllClients Workflow definitions (triggers, conditions, actions, delays) are captured during scoping as a JSON-serialized template. Execution state — which contacts are enrolled, which steps have completed, historical run data — is not available via AllClients export or API and cannot be migrated. We deliver the workflow definitions as a written configuration inventory with a description of each trigger, condition branch, and action for the customer's Odoo admin to rebuild as Odoo Automated Actions or Studio Workflows. Contacts enrolled in active workflows at migration time are not automatically re-enrolled; we recommend a manual high-priority re-enrollment process 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.

AllClients logo

AllClients gotchas

High

Contact count limits enforced as hard caps per tier

Medium

Notes export separately from main contact CSV

Medium

Workflows migrate as inactive templates only

Low

API rate limits are undefined and enforced at vendor discretion

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

  • AllClients has no bulk write API

    AllClients exposes only per-record REST read and write operations — there is no bulk import endpoint, no batch create/update API, and no streaming export. Every contact, custom field update, and note write is an individual HTTP request. For migrations above 2,000 contacts this means significantly higher API call volume and slower throughput. We mitigate this by implementing request batching where the AllClients API permits, but the customer should expect a longer migration window for large datasets compared to platform pairs with bulk endpoints.

  • Notes require a CSV join before Odoo import

    AllClients exports Notes as a standalone Notes.csv rather than inline with the Contact CSV. We rejoin Notes to Contacts using the contact's email address as the primary key and AllClients record ID as a fallback. If a contact's email changed between the date of the notes export and the contact export, the join produces either a duplicate contact record or a missing note association. We run an explicit reconciliation pass after the join and flag orphaned notes and unresolved contact matches for manual review before Odoo import begins.

  • Odoo pipeline stages must be configured before contact import

    AllClients tracks deal or follow-up stage within the contact record or via its workflow engine. Odoo CRM uses a dedicated crm.lead model with Kanban stages on a per-team pipeline basis. If the customer's AllClients account uses custom workflow stages (beyond the default New, Working, Won, Lost states), those stage definitions must be created as Odoo Stage records in the CRM app before contacts are imported so that any stage-related custom fields can be mapped correctly. Skipping this step means stage data is stored in a custom field without Kanban visualization in Odoo.

  • AllClients Groups export as filtered exports, not a discrete object

    AllClients Groups are logical contact collections managed via Group Actions, but there is no independent Groups export. To capture group membership we must filter the contact export by each group name separately, producing one CSV per group. If a contact belongs to multiple groups, it appears in multiple filtered exports and must be deduplicated on import. We reconcile memberships post-extraction and apply group names as Odoo contact tags so that segmentation logic is preserved in the destination.

  • Landing pages and forms cannot be exported from AllClients

    AllClients Landing Pages and Popup Forms are available on the Premium and Elite tiers but are not accessible via any AllClients API endpoint or export function. Form field definitions, submission records, and landing page HTML are unavailable programmatically. Any landing pages, form captures, or lead-generation assets in the AllClients account will not transfer to Odoo. We document every landing page URL and form present in the AllClients account so the customer's team can rebuild them in Odoo's Website builder, Form module, or a third-party tool like Typeform or HubSpot Forms as a temporary bridge.

Migration approach

Six steps for a successful AllClients to Odoo CRM data migration

  1. Discovery and AllClients export audit

    We audit the source AllClients account for tier (Select, Premium, Elite), contact count, user count, active custom field definitions, Notes.csv structure, Group list, active workflows, and any attachment volume. We download the primary Contact CSV and the separate Notes.csv and verify row counts match expected relationships. If the account is at or near a tier contact limit, we confirm the full dataset has been exported before the customer cancels, since accounts over the free-tier limit may have suppressed records in exports while the account was active. The discovery output is a written migration scope confirming object inventory, row counts, and any AllClients objects that will be skipped.

  2. Note rejoining and data normalization

    We run the Notes-to-Contact join using contact email as the primary key and AllClients record ID as the secondary key. Contacts with changed email addresses produce unmatched note rows, which we flag for the customer's review. We also normalize AllClients field values during this step: phone number formatting, date formats, and tag delimiters are harmonized to Odoo's expected input formats. The output is a unified contact dataset with notes embedded per record, ready for Odoo field mapping.

  3. Odoo schema provisioning and pipeline design

    We provision the Odoo CRM app, configure the CRM pipeline stages to reflect the AllClients workflow stages present in the source data, and create any custom ir.model.fields entries on res.partner that correspond to AllClients Custom Fields. If AllClients Groups are present, we create the corresponding crm.team records and plan the group-to-tag materialization. Odoo Users are provisioned or matched by email before contact import begins so that owner_id references resolve at insert time. Schema provisioning runs in an Odoo staging environment first for validation.

  4. Contact, Note, and tag migration

    We import contacts into Odoo res.partner records via the XML-RPC or JSON-RPC API, using the contact email as the external identifier for deduplication. Notes are posted as mail.message Chatter entries immediately after each contact record is created. Tags parsed from the contact CSV are applied as res.partner.category records. Group membership is materialized as tags prefixed with 'Group:' so the customer can distinguish group-based segmentation from other tag types. Owner assignments are resolved against Odoo Users; unresolved owners are flagged in the reconciliation report for the customer's admin to provision.

  5. Attachment download and Odoo re-upload

    We download file attachments from AllClients storage linked to each contact record and re-upload them to Odoo ir.attachment with res_model = 'res.partner' and res_id pointing to the migrated contact. Attachments over 10 MB are chunked for transfer. Attachments with no resolvable parent contact are reported separately for manual follow-up.

  6. Workflow and automation inventory delivery

    We capture every AllClients Workflow definition as a written configuration document describing the trigger, conditions, condition branches, actions, and delays for each active workflow. We do not migrate workflow execution state or enrolled-contact lists. The inventory document is handed off to the customer's Odoo admin with a mapping to Odoo Automated Actions and Studio Workflows equivalents. The customer or a certified Odoo partner rebuilds the automations post-migration as a separate engagement.

  7. Cutover, validation, and post-migration handoff

    We freeze writes to AllClients at cutover, run a final delta migration of any records modified during the migration window, then confirm Odoo CRM as the system of record. We validate record counts across all migrated object types, spot-check 25-50 records against the source AllClients export, and deliver a migration summary report. We support a one-week hypercare window for reconciliation issues raised by the customer's team. We do not provide post-migration admin support, training, or workflow rebuild as standard scope.

Platform deep dives

Context on both ends of the pair

AllClients logo

AllClients

Source

Strengths

  • Integrated CRM and email marketing in a single subscription without requiring separate tools
  • Simple CSV-based export and import process gives customers direct access to their data
  • White Label program for agencies and consultants who want to rebrand the platform for their clients
  • Low-cost entry tier makes it viable for independent consultants and very small businesses
  • Responsive US-based support cited positively in user reviews

Weaknesses

  • Aggressive per-seat and per-contact pricing caps that drive add-on costs as teams grow
  • No documented bulk API — all migration relies on CSV export/import, limiting throughput for large datasets
  • Workflow engine is opaque and cannot export execution state or historical run data
  • Small market footprint means limited community resources, third-party plugins, and developer ecosystem
  • Landing pages, forms, and some automation features are gated behind higher tiers with no API access
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. 1 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 AllClients and Odoo CRM.

  • Object compatibility

    B

    1 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

    AllClients: Not publicly documented — platform reserves the right to limit usage at discretion.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most AllClients to Odoo CRM migrations land between two and four weeks for accounts with fewer than 5,000 contacts, fewer than fifteen custom fields, and no large attachment volumes. Migrations at the Premium tier contact ceiling (5,000 contacts), with more than twenty custom fields, multiple AllClients Groups requiring per-group export filtering, or large attachment libraries move to six to ten weeks because of CSV parsing overhead, the note rejoining step, chunked Odoo API writes, and attachment transfer time.

Adjacent paths

Related migrations to explore

Ready when you are

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