CRM migration
Field-level mapping, validation, and rollback between axiUm Dental and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
axiUm Dental
Source
Odoo CRM
Destination
Compatibility
13 of 13
objects map 1:1 between axiUm Dental and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
axiUm Dental is an on-premise, desktop-delivered EHR and practice management system built for academic dental institutions and enterprise dental service organizations. Its data model is organized around patient cards, clinical treatment entries, perio chart records, appointment schedules, financial transactions, and student/faculty user accounts — with HL7 interfaces for interoperability and a proprietary API limited to CE 7.04 and above. Odoo CRM uses a res.partner-based contact model, crm.lead for lead/opportunity tracking, crm.team for sales structures, and a PostgreSQL-backed ORM accessible via XML-RPC or JSON-RPC. The fundamental challenge of this migration is that axiUm's clinical data model — including odontogram charting, perio pocket measurements, treatment plan histories, and medical alert flags — has no native equivalent in Odoo CRM's standard object schema and must be preserved as custom fields or managed as reference attachments. We extract axiUm patient demographics and financial records via CSV export or the proprietary API, transform them into Odoo res.partner and crm.lead records, create custom fields on the res.partner model for clinical metadata, and re-upload attachments to Odoo's ir.attachment store. Workflows, automated recall reminders, and clinical decision-support rules do not migrate and must be rebuilt using Odoo Studio or custom Python modules. A scoped read-access window on axiUm during cutover ensures delta records are captured for a final synchronization pass.
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 axiUm Dental 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.
axiUm Dental
Patient Card
Odoo CRM
res.partner
1:1axiUm patient demographics (name, date of birth, contact info, address) map directly to Odoo res.partner fields. The partner_type flag (patient vs. guarantor) is preserved as a custom selection field. Original axiUm patient ID stored as Source_System_ID__c for traceability and post-migration deduplication across the Odoo res.partner model.
axiUm Dental
Patient Card — Guarantor
Odoo CRM
res.partner (separate record)
1:1When axiUm stores a separate guarantor record, we create a second res.partner and link it via parent_id on the patient partner record. This mirrors Odoo's company-contact hierarchy where a guarantor acts as the parent organization for billing purposes. The guarantor relationship is critical for insurance claim workflows in Odoo's accounting module, ensuring that billing addresses and payment responsibilities align correctly.
axiUm Dental
EHR — Treatment History
Odoo CRM
crm.lead
1:1Each completed treatment entry in axiUm (ADA code + tooth surface + provider + date) becomes a crm.lead note line or a custom treatment history field on the res.partner. We create one lead per treatment visit so Odoo's activity timeline reflects clinical visits. Lead name uses the ADA procedure description.
axiUm Dental
EHR — Medical Alerts
Odoo CRM
res.partner (custom.char)
1:1axiUm medical alert flags have no Odoo CRM equivalent. We create a custom char field (Medical_Alert__c) on res.partner and populate it with the full alert text from axiUm. For multi-alert patients, we concatenate with semicolons. Odoo Studio can surface this as a red banner on the partner form.
axiUm Dental
Perio Chart
Odoo CRM
res.partner (custom.many2many)
1:1axiUm Perio Chart stores probing depths per tooth site (six sites per tooth, full-mouth series). Odoo CRM has no perio model — we create a custom one2many or many2many field group capturing site, tooth number, measurement in mm, furcation class, and mobility grade. Institutions requiring CODA compliance reporting should request a dedicated Perio module from an Odoo developer.
axiUm Dental
Odontogram
Odoo CRM
ir.attachment + custom.char
1:1axiUm's graphical tooth-chart odontogram has no Odoo CRM equivalent. We export the odontogram as a PDF image via axiUm's reporting engine and attach it to the res.partner record as an ir.attachment. A custom.char field (Odontogram_Ref__c) stores a URL or internal reference to the image file.
axiUm Dental
Transactions (Billing)
Odoo CRM
account.move
1:1axiUm financial transactions (ADA codes, adjustments, insurance payments) map to Odoo account.move entries. We create invoices and payments under the patient's res.partner. ADA procedure codes are configured as Odoo products with the correct pricing. Provider production reports translate to Odoo analytic accounting entries.
axiUm Dental
Insurance Records
Odoo CRM
res.partner (custom fields)
1:1axiUm stores insurance carrier name, group number, subscriber ID, and effective dates. We create custom.char fields (Insurance_Carrier__c, Group_Number__c, Subscriber_ID__c) on res.partner and map coverage type as a selection field. Odoo's Accounting app uses these for insurance billing workflows, enabling automated claim generation and coverage verification within the Odoo res.partner contact record.
axiUm Dental
Scheduler — Appointments
Odoo CRM
calendar.event
1:1axiUm appointment records (date, time, operator, operatory, procedure type) map to Odoo calendar.event records linked to the res.partner patient. We create one event per appointment. The appointment status (completed, no-show, cancelled) becomes the calendar.event state field, enabling Odoo's activity reporting to reflect actual patient visit outcomes for operational analytics.
axiUm Dental
Recall Records
Odoo CRM
calendar.event (recurrent)
1:1axiUm recall reminders (6-month hygiene, annual exam) translate to recurring calendar.event records in Odoo. We calculate the next recall date from the last completed appointment and create a recurrent event series under the patient's partner record. This approach preserves the recall cadence for hygiene follow-ups and enables Odoo CRM automated reminders to trigger patient outreach through Odoo's mail.thread communication tools.
axiUm Dental
Faculty / Student Users
Odoo CRM
res.users
1:1axiUm user accounts (faculty, student, staff) map to Odoo res.users. We resolve by email match and create users with the appropriate access rights group (Dental Faculty, Dental Student, Office Staff). axiUm CODA tracking fields become custom fields on the res.users record.
axiUm Dental
Attachments / Consent Forms
Odoo CRM
ir.attachment
1:1axiUm-scanned consent forms, ID documents, and clinical attachments are downloaded and re-uploaded to Odoo's ir.attachment store, linked to the corresponding res.partner record. File size limits are enforced per Odoo's attachment configuration. PDF format is preserved, and document metadata including original scan dates and document types are stored in the ir.attachment description field for regulatory compliance and audit trail purposes.
axiUm Dental
Clinical Notes / SOAP Notes
Odoo CRM
mail.message + custom.char
1:1axiUm clinical note entries (Subjective, Objective, Assessment, Plan) have no Odoo CRM equivalent. We preserve them as mail.message records on the res.partner chatter or as custom text fields (Clinical_Note__c) for shorter entries. Institutions should configure Odoo's Discuss app to surface these on the partner timeline.
| axiUm Dental | Odoo CRM | Compatibility | |
|---|---|---|---|
| Patient Card | res.partner1:1 | Fully supported | |
| Patient Card — Guarantor | res.partner (separate record)1:1 | Fully supported | |
| EHR — Treatment History | crm.lead1:1 | Fully supported | |
| EHR — Medical Alerts | res.partner (custom.char)1:1 | Fully supported | |
| Perio Chart | res.partner (custom.many2many)1:1 | Mapping required | |
| Odontogram | ir.attachment + custom.char1:1 | Fully supported | |
| Transactions (Billing) | account.move1:1 | Fully supported | |
| Insurance Records | res.partner (custom fields)1:1 | Fully supported | |
| Scheduler — Appointments | calendar.event1:1 | Fully supported | |
| Recall Records | calendar.event (recurrent)1:1 | Fully supported | |
| Faculty / Student Users | res.users1:1 | Fully supported | |
| Attachments / Consent Forms | ir.attachment1:1 | Fully supported | |
| Clinical Notes / SOAP Notes | mail.message + custom.char1: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.
axiUm Dental gotchas
Citrix dependency for on-premise deployments
Custom form schema varies per institution
MiPACS imaging data lives outside axiUm's database
CDT code versioning drift between systems
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
Establish axiUm data extraction path
FlitStack AI works with the institution's IT team to confirm whether the axiUm API (CE 7.04+) is reachable from FlitStack's migration environment, or whether CSV exports via axiUm's built-in reporting engine are the primary extraction mechanism. For API-based extraction, we test read-only credentials against the /patients, /appointments, /treatments, and /transactions endpoints. For export-based extraction, we provide a data export specification listing all required fields per object and the file format (CSV or Excel) that preserves relationship keys between patient records and their treatment history.
Map axiUm data model to Odoo schema and create custom fields
Before any records are written to Odoo, we create the custom fields required for clinical metadata — Medical_Alert__c, Allergy_List__c, Insurance_Carrier__c, Tooth_Surface__c, and the perio measurement model — on the res.partner model using Odoo's Settings > Technical > Models UI or via XML data loading. ADA procedure codes are pre-created as product.product records with the code in the default_code field. All field creation is documented in the Odoo setup plan so the institution's admin can replicate it in production before the migration run.
Migrate patient demographics and guarantor relationships
We run the patient card migration first since all other objects (treatments, appointments, attachments) link back to the patient record. axiUm patient IDs are stored as Source_System_ID__c on each res.partner so that downstream object imports can resolve the foreign key. Where axiUm stores a separate guarantor record, we create a second res.partner and set the patient record's parent_id to the guarantor, mirroring Odoo's company-contact hierarchy. Provider and faculty users are resolved by email match to Odoo res.users.
Import clinical records, perio data, and financial transactions
Treatment entries from axiUm are mapped to crm.lead records (one per visit) linked to the patient partner. ADA codes are resolved to product.product IDs already created in step 2. Perio chart site measurements are written to the custom perio model. Financial transactions (billing, insurance adjustments, provider production) are written to Odoo account.move records under the patient partner. Each import batch is validated against Odoo's ORM constraints before the next batch begins, and we surface a batch-level diff showing record counts and any skipped rows with reason codes.
Run sample migration with field-level diff
A representative slice — typically 200–500 patient records spanning a range of treatment types, insurance configurations, and attachment counts — migrates first. We generate a field-level diff between the source axiUm export and the destination Odoo records so the institution's clinical and business-office staff can verify mapping accuracy for medical alerts, ADA code linkage, and appointment status before the full run commits. Any field mapping corrections are applied to the migration script before the production run.
Full migration with delta-pickup cutover
The full migration runs against the institution's Odoo instance using XML-RPC. During the cutover window, axiUm remains fully operational — FlitStack AI uses scoped read-only access to capture any records created or modified since the initial extraction. A final delta-sync pass applies those in-flight changes. Audit log records every operation (create, write, skip) with source system ID. One-click rollback is available for 48 hours post-migration: if reconciliation identifies missing or incorrectly mapped records, the entire partner and clinical record set can be reverted and the migration re-run with corrected field mappings.
Platform deep dives
axiUm Dental
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between axiUm Dental and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across axiUm Dental and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between axiUm Dental 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
axiUm Dental: Not publicly documented.
Data volume sensitivity
axiUm Dental 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 axiUm Dental to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your axiUm Dental 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 axiUm Dental
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.