CRM migration
Field-level mapping, validation, and rollback between AeronaClinic and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
AeronaClinic
Source
Odoo CRM
Destination
Compatibility
12 of 12
objects map 1:1 between AeronaClinic and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
AeronaClinic stores patient demographics, treatment plans, appointment histories, and billing records in a clinical schema optimized for healthcare workflows. Odoo CRM models the same data using res.partner for contacts and companies, crm.lead for opportunities and pipeline stages, and mail.message for activity logging. The migration carries all patient records, appointment timestamps, treatment metadata, and custom fields into Odoo custom fields on res.partner and crm.lead, while clinical-specific data (treatment plans, medical histories) is preserved as structured notes or migrated as custom field values for reference. We use Odoo's XML-RPC API to load records in dependency order — res.partner first, then crm.lead with partner_id lookups — and surface any automations, recall reminders, or clinical workflows as an export-for-rebuild package. Odoo Community edition API access requires no additional licensing cost; Odoo Enterprise adds automated upgrade paths and priority support but the data model is identical across editions.
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 AeronaClinic 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.
AeronaClinic
Patient Record
Odoo CRM
res.partner
1:1AeronaClinic patient demographics (name, date of birth, contact details) map directly to Odoo res.partner fields. The partner_id becomes the anchor record for all other linked objects in the migration. Patient type (NHS or Private) is preserved as a custom.selection field on the res.partner record. Original AeronaClinic create dates are stored in a custom datetime field for audit traceability.
AeronaClinic
Patient Address
Odoo CRM
res.partner (address fields)
1:1Street, city, postcode, and country fields map field-for-field to Odoo res.partner address components. Where AeronaClinic stores multiple addresses per patient, the primary address becomes the main res.partner address, while any secondary addresses are created as separate contact records linked via type='contact' to the primary partner.
AeronaClinic
Appointment
Odoo CRM
crm.lead
1:1AeronaClinic appointments are transformed into Odoo crm.lead records for pipeline visibility (treatment plans, upsell opportunities). The appointment date maps to crm.lead.create_date; appointment status maps to stage_id. For pure appointment scheduling needs, Odoo Calendar app installation alongside CRM is recommended post-migration.
AeronaClinic
Treatment Plan
Odoo CRM
Custom fields on res.partner + crm.lead
1:1AeronaClinic treatment plan items (procedure codes, estimated costs, clinical notes) have no native Odoo equivalent. Custom.char and custom.text fields are created on res.partner to store treatment history as structured values. If AeronaClinic exports treatment plan PDFs, Odoo Documents app provides a native repository for full plan attachment.
AeronaClinic
Clinical Notes
Odoo CRM
mail.message on res.partner
1:1Free-text clinical notes from AeronaClinic are transformed into Odoo mail.message records attached to the res.partner. Original timestamps and author information are preserved during migration. For structured clinical notes in SOAP format, each section maps into corresponding custom fields on the partner record for searchable clinical data.
AeronaClinic
Payment / Invoice Record
Odoo CRM
account.move (via Accounting app)
1:1AeronaClinic payment transactions map to Odoo account.move records when the Odoo Accounting app is active. Amount, date, payment method, and patient reference are all preserved. If only the CRM app is active, payment data is stored as custom monetary fields on res.partner until Accounting is enabled.
AeronaClinic
Referring Practitioner
Odoo CRM
res.partner (type=contact)
1:1Referring dentist or doctor details are stored as a separate res.partner contact record linked to the patient partner via the 'contact' relation type. This directly mirrors AeronaClinic's referral link model. The referring practitioner's name, practice, and contact details map to corresponding fields on the contact partner record.
AeronaClinic
Recall / Reminder
Odoo CRM
mail.activity on res.partner
1:1AeronaClinic recall reminders (6-month checkup, annual review) transform into Odoo mail.activity records with activity_type='Reminder' and deadline set to the recall date. The Odoo Activity Queue in CRM manages follow-up tasks without the clinical scheduling complexity of AeronaClinic's native calendar.
AeronaClinic
Custom Property (clinic-specific)
Odoo CRM
ir.model.fields (x_ custom fields)
1:1Any AeronaClinic custom fields unique to the clinic — such as preferred dentist, medical alert flags, membership tier, or referral source — are created as Odoo custom fields with x_ prefix on res.partner. The full custom field creation script is delivered as part of the migration plan for repeatable deployment.
AeronaClinic
Document / Attachment
Odoo CRM
ir.attachment linked to res.partner
1:1Patient-uploaded documents, consent forms, and ID scans migrate as Odoo ir.attachment records linked to the res.partner via res_model='res.partner' and res_id=partner_id. Original filenames and create dates are preserved throughout the migration for document audit compliance.
AeronaClinic
User / Practitioner
Odoo CRM
res.users
1:1AeronaClinic staff logins map to Odoo res.users entries. Owner resolution uses email address matching to ensure each user's records are assigned to the correct Odoo user account. Any unmatched practitioners are flagged in the migration report for manual Odoo user creation before migration proceeds.
AeronaClinic
Insurance / NHS Details
Odoo CRM
Custom fields on res.partner
1:1NHS number, insurance provider, policy reference, and coverage details have no native Odoo field. These migrate as custom.char and custom.selection fields on res.partner. For high-volume insurance data, we recommend a separate insurance policy document object via Odoo Documents if the data volume warrants dedicated storage.
| AeronaClinic | Odoo CRM | Compatibility | |
|---|---|---|---|
| Patient Record | res.partner1:1 | Fully supported | |
| Patient Address | res.partner (address fields)1:1 | Fully supported | |
| Appointment | crm.lead1:1 | Fully supported | |
| Treatment Plan | Custom fields on res.partner + crm.lead1:1 | Fully supported | |
| Clinical Notes | mail.message on res.partner1:1 | Fully supported | |
| Payment / Invoice Record | account.move (via Accounting app)1:1 | Fully supported | |
| Referring Practitioner | res.partner (type=contact)1:1 | Fully supported | |
| Recall / Reminder | mail.activity on res.partner1:1 | Fully supported | |
| Custom Property (clinic-specific) | ir.model.fields (x_ custom fields)1:1 | Fully supported | |
| Document / Attachment | ir.attachment linked to res.partner1:1 | Fully supported | |
| User / Practitioner | res.users1:1 | Fully supported | |
| Insurance / NHS Details | Custom fields on res.partner1: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.
AeronaClinic gotchas
Password-protected API limits export options
Large historical record volumes in dental practices
Payment plan instalment schedules require manual sign-off
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
Request AeronaClinic data export and map the schema
We start by requesting a full data export from AeronaClinic — ideally a structured CSV or database dump covering patients, appointments, treatment plans, payments, and documents. If no export is available, FlitStack runs a discovery API pass to catalogue the actual record types and fields present. We then produce a schema map showing every AeronaClinic field and its proposed Odoo custom field or standard field target. This schema map is the foundation for all subsequent steps and must be approved before data movement begins.
Create Odoo custom fields and install required apps
Before records are loaded, we create all custom fields identified in the schema map — x_nhs_number, x_medical_alert, x_clinical_notes, x_patient_type, and recall/appointment custom fields on res.partner and crm.lead. If the clinic needs appointment scheduling, we install the Odoo Calendar and Sales apps during this step. We deliver the custom field creation script so your Odoo admin can re-run it on any environment. Field-level UI placement via Odoo Studio or view XML is not included but is recommended post-migration.
Migrate res.partner records with custom field values
All AeronaClinic patient records load as Odoo res.partner entries via XML-RPC in batches of 500 records. We map every patient property to its target custom field, preserve the original AeronaClinic create date in a custom datetime field, and store the AeronaClinic record ID for traceability. Referrer contacts load as separate res.partner records with type='contact' and are linked to the patient record. Documents attach to each partner via ir.attachment records. A representative sample of 50–100 records is validated against the source before the full load commits.
Migrate crm.lead records for appointment and pipeline data
Appointment records from AeronaClinic that represent treatment opportunities or follow-up pipeline items load as Odoo crm.lead records. Each lead links to its res.partner via partner_id, preserves the appointment date as create_date, and maps status to a stage_id picklist value. Practitioner assignment resolves by email match to Odoo res.users. Recall reminders generate mail.activity records on the linked partner with deadline set to the recall date. All leads are audited against the source count before proceeding.
Run delta pickup and validate record counts
A delta window opens at migration cutover — any AeronaClinic records created or modified during the migration run are pulled in a final pass. We validate total record counts, custom field population rates, and partner-to-lead linkage integrity. The delta window runs for 24–48 hours depending on clinic size. A field-level diff report is generated comparing source vs destination record counts by type. One-click rollback is available if the reconciliation report shows gaps exceeding the agreed tolerance threshold.
Platform deep dives
AeronaClinic
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between AeronaClinic and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across AeronaClinic and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between AeronaClinic and Odoo CRM.
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
AeronaClinic: Not publicly documented.
Data volume sensitivity
AeronaClinic 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 AeronaClinic to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your AeronaClinic 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 AeronaClinic
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.