CRM migration

Migrate from aACE to Odoo CRM

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

aACE logo

aACE

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

83%

10 of 12

objects map 1:1 between aACE and Odoo CRM.

Complexity

BStandard

Timeline

4-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from aACE to Odoo CRM is a structural migration that requires bridging a FileMaker single-file database with no public API against Odoo's PostgreSQL-backed modular application stack. aACE exposes no REST endpoint for bulk extraction; we interact through FileMaker export scripts writing to a per-user temporary cache table, which we clear between batches, run under a dedicated migration user account, and validate against aACE's linked schema before committing to Odoo via its XML-RPC and JSON-RPC APIs. The aACE Account-to-Odoo Partner, Sales Order-to-Sale Order, and Project-to-Project object mapping is straightforward, but custom FileMaker fields on standard objects require manual field-discovery during scoping because aACE provides no metadata API to enumerate them. We write any custom field without an Odoo equivalent as a Char field or JSON blob in the relevant Odoo model to prevent silent data loss. Open invoices, outstanding Purchase Orders, and partial-receipt POs are flagged as operationally critical and migrate before historical closed records. Workflows, automations, and FileMaker script triggers do not migrate; we deliver a written inventory for the customer's Odoo administrator to rebuild in Odoo Studio or via Python modules.

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

aACE logo

aACE

What's pushing teams away

  • The native integration ecosystem is thin: there is no built-in connector for modern e-commerce platforms, marketing automation tools, or SaaS CRMs, so teams using Shopify, HubSpot, or Stripe resort to manual data entry or custom FileMaker scripting.
  • The FileMaker backend becomes a liability at scale. Reviewers cite performance degradation with large datasets, limited concurrent-user capacity, and the inability to expose the database directly to external tools or BI platforms.
  • The reporting module is a frequent complaint: aACE ships with a fixed set of reports and no native export to external business intelligence tools, forcing power users to rebuild reports in Excel or third-party add-ons.
  • When companies grow past the 50-100 user range or need true cloud-native ERP capabilities — including SaaS integrations, mobile-first UX, and automated workflow engines — they migrate to platforms like NetSuite, Acumatica, or SAP Business One that offer a broader integration ecosystem.

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

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

aACE

Account

maps to

Odoo CRM

res.partner

1:1
Fully supported

aACE Accounts are the primary customer and vendor record, holding billing and payment terms. We map Accounts to Odoo res.partner records with partner_type set to 'contact' for customers and 'invoice_address' for billing addresses. Each Account's location records migrate as separate res.partner addresses linked to the parent contact via type (delivery, invoice, contact). Account payment terms map to Odoo property_payment_term_id.

aACE

Company Location

maps to

Odoo CRM

res.partner (address)

1:many
Fully supported

aACE supports multiple locations per Account, each with its own address and contact record. We split each aACE Location into a separate res.partner address record with type='delivery' or type='contact', linked to the parent res.partner via partner_share. The primary location becomes the default delivery address; additional locations become secondary delivery addresses on the same partner.

aACE

Item

maps to

Odoo CRM

product.product / product.template

1:1
Fully supported

aACE Items are the inventory-part records holding SKU, description, unit cost, and pricing. They map to Odoo product.product (the storable product variant) with product.template as the template record. Item cost maps to standard_price on product.product; sales price maps to list_price on product.template. Odoo creates product.attribute.value records for any variant dimensions carried in the aACE Item.

aACE

Sales Order

maps to

Odoo CRM

sale.order

1:1
Fully supported

aACE Sales Orders link a Customer Account to Line Items and spawn Invoices and Purchase Orders. We map sale.order with Order Lines linking to product.product via SKU resolution, Account mapped to res.partner, and the originating Sales Order reference preserved in the Odoo order's origin field. Order status (draft, sent, sale, done, cancel) maps from aACE order state values to Odoo state values directly.

aACE

Invoice (A/R)

maps to

Odoo CRM

account.move (out_invoice)

1:1
Fully supported

aACE open invoices migrate to Odoo account.move with type='out_invoice'. We preserve the original invoice number, invoice date, due date, and open balance so the A/R team can pursue collections without re-entering data. Partial payments against the invoice create corresponding account.payment records linked to the invoice. Historical closed invoices migrate as read-only account.move records with state='posted'.

aACE

Purchase Order

maps to

Odoo CRM

purchase.order

1:1
Fully supported

aACE Purchase Orders link to Items, Vendors, and the originating Sales Order. We map purchase.order with PO lines resolving Item to product.product, Vendor to res.partner (partner_type='supplier'), and any received quantities preserved as Odoo stock.move records. Partial receipts (partial_receipt_status = true in aACE) are preserved at migration time so the purchasing team can receive the remaining quantity against the same PO in Odoo.

aACE

Project

maps to

Odoo CRM

project.project

1:1
Fully supported

aACE Projects hold the job header and link to Tasks, Time entries, and billing records. We map project.project with status (active, archived, on_hold) preserved. The project manager from aACE maps to Odoo user_id on the project. aACE Project billing information (if linked to an Account) maps to analytic account in Odoo for cost tracking.

aACE

Task

maps to

Odoo CRM

project.task

1:1
Fully supported

aACE Tasks are the unit-of-work records linked to Projects and optionally to Accounts and Orders. We map project.task with status, assignee (mapped to Odoo user_id via Owner email resolution), due date, and any custom flag fields preserved. High-volume task exports use the FileMaker batched export pipeline to avoid overwhelming the cache table. Task priority maps to Odoo priority (0-5 scale).

aACE

Employee

maps to

Odoo CRM

hr.employee

1:1
Fully supported

Employee records in aACE hold role and department data. We map hr.employee with name, job_title (mapped from aACE role field), department (resolved to Odoo hr.department via name match), and active status. Historical payroll or compensation records are migrated as separate hr.contract records with Odoo wage and struct fields set to the compensation values.

aACE

Distribution List

maps to

Odoo CRM

mailing.contact / res.partner (group)

1:1
Fully supported

aACE Distribution Lists are FileMaker portal-based address-book groupings. We migrate them as Odoo mailing.contact records grouped under a mailing.list, or alternatively as a res.partner category (tag) applied to the contact records depending on the customer's intended use. The list membership join table migrates as mailing.list.contact records.

aACE

Custom Fields

maps to

Odoo CRM

Custom Char/Selection/Text fields

lossy
Mapping required

aACE custom fields on Accounts, Orders, Items, and Projects have no metadata API for enumeration. During scoping we request the customer's FileMaker layout definitions and build the complete field list from them. Custom fields that map directly to an Odoo field type become Odoo ir.model.fields created via Odoo Studio. Custom fields without an Odoo equivalent are written as Char or Text fields in the relevant Odoo model, or as a JSON blob in a dedicated ir_attachment record for post-migration admin review.

aACE

Documents / Attachments

maps to

Odoo CRM

ir.attachment

1:1
Not supported

FileMaker container fields store attachments, signatures, and scanned documents inside the aACE database. Export scripts do not reliably extract container binary data. We extract document filenames and container references and create ir.attachment records in Odoo pointing to the file location. Customers with compliance or audit requirements for document preservation are flagged for a separate FileMaker-native document export step after the primary data migration completes.

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.

aACE logo

aACE gotchas

High

No public API — FileMaker export scripts only

Medium

FileMaker cache table is shared per-user

Medium

Custom fields require manual field-discovery

Low

Binary document containers are not migrated

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

  • aACE exposes no REST API — FileMaker export scripts only

    aACE provides no documented public REST or GraphQL endpoint. All data extraction runs through FileMaker export scripts that write to a per-user temporary cache table before producing a CSV. We run exports under a dedicated migration user account to avoid collisions with active users who may simultaneously be running imports. We clear the cache table before each batch to prevent stale records from contaminating the export. The absence of a direct API pull means migration timelines are constrained by FileMaker's export performance, not API rate limits. Customers expecting a fast API-driven migration will need expectations reset during scoping.

  • Custom fields require manual FileMaker layout discovery

    aACE tenants frequently add custom fields to standard objects (Accounts, Orders, Items, Projects) via FileMaker's field and layout tools. aACE provides no metadata API to enumerate these fields automatically. We request the customer share their FileMaker layout definitions during scoping so we can build the complete field list. Custom fields that do not map to Odoo's standard field types are written as Char fields in the relevant Odoo model, or serialized as JSON in a dedicated ir.model.data record for post-migration admin review. Skipping this step results in silent data loss for any custom field not discovered during scoping.

  • Binary document containers do not reliably export

    aACE stores attachments, signatures, and scanned documents inside FileMaker container fields. Export scripts do not reliably extract container binary data, and aACE does not expose a separate document API. We extract document filenames and container references and create placeholder ir.attachment records in Odoo pointing to the file location, but the binary content requires a separate FileMaker-native document export step. Customers with compliance or audit requirements for document preservation are flagged for a dedicated post-migration document migration pass.

  • Odoo requires modules to be installed before field schema is available

    Odoo's field schema only exists after the relevant module is installed in the database. For example, the sale_order fields are only visible after the Sales app is installed, and stock fields only after Inventory is installed. If a customer intends to migrate Projects and Tasks but has not installed the Project app in their Odoo destination database, the project.task fields will not exist at migration time. We coordinate with the customer's Odoo administrator to ensure all required apps are installed and the relevant field columns exist in the PostgreSQL schema before we run any import.

Migration approach

Six steps for a successful aACE to Odoo CRM data migration

  1. Discovery and aACE FileMaker layout audit

    We audit the source aACE FileMaker database under a dedicated migration user account. We enumerate all standard objects (Accounts, Items, Sales Orders, Invoices, Purchase Orders, Projects, Tasks, Employees) and review the FileMaker layout definitions to build the complete custom field list. We document the relational links (Order to Line Items, Invoice to Account, PO to Vendor, Project to Tasks) as explicit foreign-key relationships to guide the Odoo import ordering. We also identify open invoices, outstanding POs, and active Projects as operationally critical records that will migrate first. The discovery output is a written migration scope document and a list of any FileMaker script modifications required to support batched exports.

  2. Odoo environment preparation and schema validation

    We coordinate with the customer's Odoo administrator to confirm the required Odoo apps (Contacts, Sales, Purchase, Invoicing, Project) are installed and active. We verify the destination database schema against the aACE field list, creating any missing custom fields via Odoo Studio or direct PostgreSQL migration before data import begins. We confirm the Odoo API is accessible via XML-RPC on the designated instance (Odoo Online, Odoo.sh, or on-premise) and note any rate limits or IP restrictions that will apply during import.

  3. Test migration in Odoo sandbox

    We run a full test migration into an Odoo sandbox or staging database using a representative sample of production data (at least 1,000 records per object type). We validate record counts in Odoo against the aACE source export, spot-check 25-50 records per object for field-level accuracy, and confirm that relational links (Account on Order, Partner on Invoice, Project on Task) are correctly resolved. We flag any Odoo validation rules, required fields, or picklist restrictions that are blocking import and provide the customer with the specific Odoo admin actions needed to resolve them. The customer signs off the sandbox results before production migration begins.

  4. Owner and user reconciliation

    We extract every distinct Owner referenced on Account, Sales Order, Project, and Task records and match by email against the Odoo destination User table. Any aACE Owner without a matching Odoo User is added to a reconciliation queue. The customer's Odoo administrator provisions any missing Users (active or inactive based on whether the original aACE user is still active) before production migration resumes. This step is required because OwnerId references are required on most standard objects in Odoo and unresolved references block import.

  5. Production migration in dependency order

    We run production migration in object dependency order: res.partner (Accounts and Locations), product.product (Items), sale.order (Sales Orders), account.move (Invoices), purchase.order (Purchase Orders), project.project (Projects), project.task (Tasks), hr.employee (Employees). Each phase clears the aACE FileMaker cache table before export, runs the batched export, validates the CSV against the aACE linked schema, and imports via Odoo XML-RPC or JSON-RPC API. Each phase emits a row-count reconciliation report before the next phase begins. Open invoices and outstanding POs are included in their respective phases with a priority flag in the import log.

  6. Cutover, validation, and automation rebuild handoff

    We freeze aACE writes during the cutover window, run a final delta migration of any records modified during the migration period, then enable Odoo as the system of record. We deliver a written inventory of all identified aACE automations and FileMaker script triggers that will need to be rebuilt in Odoo Studio or as Python server actions. We support a one-week hypercare window for reconciliation issues raised by the customer team. We do not rebuild aACE FileMaker scripts as Odoo automations inside the migration scope; that is a separate configuration engagement.

Platform deep dives

Context on both ends of the pair

aACE logo

aACE

Source

Strengths

  • All records — Accounts, Orders, Invoices, Tasks, Projects — live in a single FileMaker database with explicit relational links between them.
  • Combines accounting, CRM, order management, inventory, purchasing, and project management in one platform without requiring data exports between modules.
  • Per-user access privileges and custom privilege sets allow granular field-level and record-level security without dedicated IT staff.
  • Cloud-hosted options with a monthly hosting fee remove on-premises server maintenance for small and mid-size distributors.

Weaknesses

  • All reporting and data analysis must be built within FileMaker's native tools, which lack the flexibility of dedicated BI platforms like Power BI or Tableau.
  • No documented public REST API — migrations are handled via FileMaker export scripts and temporary cache tables rather than API-driven pipelines.
  • FileMaker's underlying architecture limits concurrent-user performance and makes the platform difficult to extend with external integrations or automated workflows.
  • Companies requiring deep supply chain automation, multi-entity consolidation, or real-time e-commerce synchronization outgrow the platform's native capabilities.
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 aACE 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

    aACE: Not publicly documented for aACE itself. The underlying Claris FileMaker Data API caps concurrent sessions per server license, so high-volume extracts must be chunked and timed against the customer's FileMaker Server capacity (confirmed during scoping)..

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your aACE 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 four and six weeks for accounts under 15,000 Accounts, 8,000 Orders, and 3,000 Projects with no more than 20 custom fields and no large historical invoice archive. Migrations with large historical closed invoices (over 10,000 records), partial-receipt Purchase Orders, multi-location Account structures, or more than 40 custom fields move to eight to fourteen weeks because of FileMaker batch sequencing, ir.attachment preparation for document links, and the custom field discovery and JSON-blob fallback work.

Adjacent paths

Related migrations to explore

Ready when you are

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