CRM migration
Field-level mapping, validation, and rollback between Aidoo Mobile and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Aidoo Mobile
Source
Odoo CRM
Destination
Compatibility
11 of 12
objects map 1:1 between Aidoo Mobile and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours of active migration clock time
Overview
Aidoo Mobile organizes data around field-service constructs: customers, site locations, work orders, service tickets, and asset records. Odoo CRM uses a different schema: crm.lead for both leads and opportunities, res.partner for contacts and companies, and sale.order for quotations. FlitStack AI maps Aidoo Mobile customers to res.partner records (companies with child contacts), site locations to address fields on res.partner, work orders to crm.lead opportunities with custom stage and priority fields, and service tickets to custom fields or linked note records. Technician assignments resolve by email match against Odoo user accounts. Aidoo Mobile workflows, automations, and service-scheduling rules do not migrate — those must be rebuilt in Odoo using Odoo's automation rules or the Studio workflow builder. We carry over all structured record data via Aidoo Mobile's export API or CSV exports, validate relational integrity before loading, and run a sample migration with field-level diff before committing the full dataset. Odoo's XML-RPC API and CSV import tools form the destination-side load mechanism, sequenced to respect foreign-key dependencies between res.partner and crm.lead.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Aidoo Mobile 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.
Aidoo Mobile
Customer
Odoo CRM
res.partner
1:1Aidoo Mobile customer records map 1:1 to Odoo res.partner records in company mode. The customer name maps to res.partner.name, primary email to res.partner.email, and phone to res.partner.phone. Sites attached to the customer become additional Address records linked to the same res.partner parent.
Aidoo Mobile
Customer Contact
Odoo CRM
res.partner (contact)
1:1Individual contacts within an Aidoo Mobile customer map to res.partner records in contact mode (type='contact') linked via res.partner.parent_id to the company partner. Email, phone, mobile, and job title map directly. If Aidoo stores a contact as a standalone customer record, it is treated as a res.partner without a parent.
Aidoo Mobile
Site / Location
Odoo CRM
res.partner (address)
many:1Aidoo Mobile sites attach address, city, state, postal code, and country to a customer. In Odoo, these become res.partner address records (type='other') linked to the parent company partner. The site name is stored in res.partner.street2 or in a custom Char field (x_site_name) if the site has a display name distinct from the customer name.
Aidoo Mobile
Work Order
Odoo CRM
crm.lead
1:1Aidoo Mobile work orders translate to Odoo crm.lead opportunity records. The work order subject becomes crm.lead.name. Work order status (Scheduled, In Progress, Completed, Cancelled) is mapped to Odoo crm.stage names via a value-mapping table — New maps to your Odoo 'New' stage, In Progress maps to 'Qualification' or 'Proposal' depending on your stage names, and Completed maps to 'Won'.
Aidoo Mobile
Work Order Priority
Odoo CRM
crm.lead (custom priority field)
1:1Aidoo Mobile work-order priority (Low, Medium, High, Urgent) has no native Odoo CRM equivalent. We create a custom Char or Selection field (x_priority) on crm.lead and populate it from the source priority value. If Odoo Studio is available, this can be a Selection field; otherwise it is a Char field with values stored as text.
Aidoo Mobile
Service Ticket / Issue
Odoo CRM
crm.lead (description) + note record
1:1Service tickets in Aidoo Mobile capture issue description, reported date, and resolution notes. The primary issue description is stored in crm.lead.description (plain text). Detailed ticket history, internal notes, and resolution comments are stored as Odoo mail.message records linked to the crm.lead, preserving the original timestamp and author.
Aidoo Mobile
Asset / Equipment
Odoo CRM
product.product or custom field
1:1Aidoo Mobile assets (equipment name, serial number, model, installation date) do not have a native Odoo CRM equivalent. We map assets to product.product records if Odoo Inventory is active, or to custom Char fields on res.partner (x_asset_serial, x_asset_model) if only the CRM app is in use. We flag which approach during the planning phase.
Aidoo Mobile
Technician / Assigned Staff
Odoo CRM
res.users
1:1Aidoo Mobile technician assignment on a work order maps to crm.lead.user_id in Odoo. Resolution is by email match: if a technician email in Aidoo Mobile matches a res.users.login email in Odoo, we assign crm.lead.user_id directly. Unmatched technicians are flagged before migration and assigned to a fallback user or imported as res.users records first.
Aidoo Mobile
Work Order Create Date
Odoo CRM
crm.lead.create_date
1:1The original work order creation timestamp in Aidoo Mobile is preserved as crm.lead.create_date in Odoo. Odoo's own create_date reflects the migration timestamp, so we store the source create date in a custom field (x_original_create_date) for reporting continuity on historical records.
Aidoo Mobile
Customer Notes / Internal Comments
Odoo CRM
mail.message
1:1Free-text notes attached to Aidoo Mobile customers or work orders are migrated as mail.message records on the corresponding res.partner or crm.lead in Odoo. Each message carries the original author name, creation timestamp, and body text. This preserves audit history without modifying the Odoo note layout.
Aidoo Mobile
Aidoo Mobile Custom Objects
Odoo CRM
Custom ir.model + res.partner or crm.lead extension
1:1Aidoo Mobile custom fields and custom objects not covered by the standard mappings above are migrated as Odoo custom fields (x_ prefixed Char, Selection, or Text fields) on the closest Odoo model. If the source custom object is entity-like with multiple records, we create a dedicated Odoo model via module development and populate it via XML-RPC after the core migration.
Aidoo Mobile
Attachments / Photos
Odoo CRM
ir.attachment
1:1File attachments stored in Aidoo Mobile (photos, signed forms, equipment images) are downloaded, re-hosted in Odoo's ir.attachment model, and linked to the corresponding res.partner or crm.lead record via res_model and res_id. The original filename, MIME type, and file content are preserved and stored in Odoo's filestore for retrieval through the standard attachment API.
| Aidoo Mobile | Odoo CRM | Compatibility | |
|---|---|---|---|
| Customer | res.partner1:1 | Fully supported | |
| Customer Contact | res.partner (contact)1:1 | Fully supported | |
| Site / Location | res.partner (address)many:1 | Fully supported | |
| Work Order | crm.lead1:1 | Fully supported | |
| Work Order Priority | crm.lead (custom priority field)1:1 | Fully supported | |
| Service Ticket / Issue | crm.lead (description) + note record1:1 | Fully supported | |
| Asset / Equipment | product.product or custom field1:1 | Fully supported | |
| Technician / Assigned Staff | res.users1:1 | Fully supported | |
| Work Order Create Date | crm.lead.create_date1:1 | Fully supported | |
| Customer Notes / Internal Comments | mail.message1:1 | Fully supported | |
| Aidoo Mobile Custom Objects | Custom ir.model + res.partner or crm.lead extension1:1 | Fully supported | |
| Attachments / Photos | ir.attachment1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
Aidoo Mobile gotchas
Aidoo Mobile has no publicly documented API
Pricing is not publicly published
Limited review corpus for data quality signals
Odoo CRM gotchas
Odoo.sh version gating blocks assisted migrations from trial
Enterprise modules fail to install on Community after database restore
Custom module view inheritance breaks between Odoo major versions
Custom fields risk losing their application context on Community
API access for Community is gated behind the Custom Plan
Pair-specific challenges
Migration approach
Discover Aidoo Mobile data structure and Odoo schema
FlitStack AI reads your Aidoo Mobile data export (API or CSV) to inventory all object types, field names, custom field definitions, and record counts. We simultaneously review your target Odoo instance's crm.lead, res.partner, crm.stage, and crm.team configuration to confirm stage names, default team, and existing custom fields. We deliver a migration plan that names every source field, its Odoo destination, the mapping type (direct, transformed, custom field required), and any pre-migration Odoo configuration needed (such as custom field declarations or Odoo Studio setup).
Prepare Odoo destination schema
Before any data loads, we create all required custom fields in your Odoo instance — x_priority on crm.lead, x_original_create_date and x_source_system_id on both res.partner and crm.lead, and any FSM-specific fields such as x_work_order_type or x_asset_serial. If you are on Odoo Community without Studio access, we provide the Python module code and XML declaration for each custom field so your Odoo partner or admin can install the module. We also confirm that crm.lead stage names in Odoo match the Aidoo Mobile status values via a stage-mapping table.
Resolve technician assignments and user matching
We extract all technician email addresses from Aidoo Mobile work orders and cross-reference them against your Odoo res.users records by email. Any technician without a corresponding Odoo user account is flagged in a mapping spreadsheet that your team completes before the migration run — either by creating the Odoo user or by nominating a fallback owner. We do not attempt to assign a crm.lead.user_id to a non-existent Odoo user, which would cause the migration API call to fail and orphan the record.
Run sample migration with field-level diff
A representative slice of 100–500 records migrates first, covering at least one customer with multiple sites, several work orders in different statuses, a service ticket or two, and a contact record. We generate a field-level diff between the source CSV values and the resulting Odoo record values for each migrated field, including custom fields. You review the diff to verify that stage names, priority values, technician assignments, and address formatting meet your expectations. We iterate on the mapping plan based on your feedback before the full run proceeds.
Execute full migration with ordered sequencing and delta-pickup
The full migration runs in dependency order: res.partner company records first, then res.partner address records for sites, then res.partner contact records for individuals, then crm.lead opportunity records with partner_id lookups resolved. mail.message notes and ir.attachment files load after their parent records. A delta-pickup window (typically 24–48 hours) captures any records created or modified in Aidoo Mobile during the cutover period. All operations are logged to an audit CSV with source ID, destination ID, timestamp, and operation type. One-click rollback reverts the Odoo database to its pre-migration state if reconciliation finds discrepancies.
Platform deep dives
Aidoo Mobile
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a manual workaround.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Aidoo Mobile and Odoo CRM.
Object compatibility
1 of 8 objects need a manual workaround.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Aidoo Mobile: Not publicly documented — typical SaaS limits assumed and confirmed during scoping.
Data volume sensitivity
Aidoo Mobile doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Aidoo Mobile to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Aidoo Mobile to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Aidoo Mobile
Other ways to arrive at Odoo CRM
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.