CRM migration

Migrate from Quanum Practice Management to Odoo CRM

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

Quanum Practice Management logo

Quanum Practice Management

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between Quanum Practice Management and Odoo CRM.

Complexity

BStandard

Timeline

3–7 days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Quanum Practice Management is a Quest Diagnostics healthcare platform serving physician practices with patient scheduling, insurance billing, and EHR integration. Quest announced the discontinuation of Quanum Practice Solutions in 2023; the system entered read-only mode January 1, 2024. Customers face a forced migration deadline with limited export options: Quanum delivers data as a Microsoft Access database file, CCDAs (patient summaries per 21st Century CURES Act), or QRDA 1 files for quality reporting. No live API is publicly documented, making this migration a file-based extraction project. Odoo CRM stores leads and contacts in crm.lead (for opportunities) and res.partner (for contacts and companies). The platform uses snake_case field naming with no __c suffix convention. Custom fields are created via Settings > Technical > Models in developer mode. The external API uses XML-RPC with free access for Custom Plan customers; no per-request billing exists. Pipeline stages are configured per sales team using Odoo's kanban view. We map Quanum patient demographics to res.partner, appointment records to crm.lead with custom fields for appointment-specific attributes, insurance carriers to res.partner as company-type records, and providers to res.partner as contact-type records. The main manual rebuild work is Odoo's own pipeline stage configuration and any custom CRM views your team needs. We do not migrate billing logic, EHR integration settings, or insurance claim workflows — those are destination-side configuration. The migration runs against Odoo's XML-RPC API after extracting from the Access file or CSV conversion.

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

Quanum Practice Management logo

Quanum Practice Management

What's pushing teams away

  • Mandatory product discontinuation as of January 2024 puts all remaining customers on a forced migration timeline with no new feature development or security patches.
  • Read-only mode entered January 2024 means staff cannot create new records in EHR modules—only view and export existing data.
  • Contract cancellation on existing subscriptions leaves practices with no long-term support commitment from Quest Diagnostics.
  • Limited export formats (Access DB, CCDA, QRDA I) create data portability risk, especially for practices with complex custom fields or specialty-specific billing codes.
  • Consolidation of independent physician practices and the discontinuation decision creates urgency that overrides preference-based software selection.

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 Quanum Practice Management objects map to Odoo CRM

Each row shows how a Quanum Practice Management 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.

Quanum Practice Management

Patient

maps to

Odoo CRM

res.partner

1:1
Fully supported

Quanum patient records migrate to Odoo res.partner as contact-type records. Fields including first_name, last_name, date_of_birth, social_security_number, address, email, and phone map directly to Odoo's standard partner fields. We preserve the Quanum patient_id as external_identifier on res.partner for traceability and delta-run de-duplication. The Access database treats patient as the central entity with foreign-key links to appointments, insurance records, and providers.

Quanum Practice Management

Patient Insurance

maps to

Odoo CRM

res.partner (company) + custom fields on res.partner (contact)

1:1
Fully supported

Insurance records attach to a patient as a one-to-many relationship in Quanum. Each insurance carrier (Carrier Name, Member ID, Group Number, Plan Type, Subscriber Relationship) is stored as a custom field on the patient's res.partner record in Odoo. The carrier itself can optionally be created as a separate res.partner (company type) and linked via a many2one field if the practice wants to track carrier contact information separately.

Quanum Practice Management

Appointment

maps to

Odoo CRM

crm.lead

1:1
Fully supported

Quanum appointments become Odoo CRM leads (opportunities). The appointment_id is stored as a custom field (x_quanum_appointment_id) on crm.lead. Appointment type (New Patient, Follow-up, Procedure, etc.) maps to a custom selection field. Scheduled datetime becomes the expected_closing_date on the lead or a custom scheduled_date field. Appointment status (Scheduled, Completed, No-Show, Cancelled) is mapped to Odoo pipeline stages — teams configure the stage names to match their workflow. Provider is assigned to the lead's user_id by email match against Odoo users.

Quanum Practice Management

Provider

maps to

Odoo CRM

res.partner (contact)

1:1
Fully supported

Providers (physicians, nurse practitioners, referring doctors) migrate to res.partner as contact-type records. The provider's name maps to partner name, NPI number to a custom NPI field (x_npi), and specialty to a custom specialty field. Referring doctors are flagged with a custom is_referring_doctor boolean field so the practice can filter contacts by role. Provider-user assignments in Quanum map to Odoo user accounts by email match.

Quanum Practice Management

Insurance Carrier

maps to

Odoo CRM

res.partner (company)

1:1
Fully supported

Insurance carriers appear as distinct objects in Quanum's billing module. We map them to res.partner (company type) in Odoo so the practice can maintain carrier contact information, addresses, and plan details separate from patient records. Carrier records can then be linked to patient insurance custom fields via a many2one relationship.

Quanum Practice Management

Appointment Note / Clinical Note

maps to

Odoo CRM

crm.lead.description or ir.attachment

1:1
Fully supported

Clinical notes attached to an appointment in Quanum are stored as text in the appointment note field. We map these to crm.lead.description for short notes or attach them as ir.attachment records linked to the lead for longer structured content. Odoo does not have a native clinical note equivalent — this is a field-level migration choice the practice confirms before migration.

Quanum Practice Management

Procedure Code

maps to

Odoo CRM

Custom field on crm.lead (x_procedure_codes)

1:1
Fully supported

Quanum stores CPT and HCPCS procedure codes on appointments. Odoo CRM has no native procedure code field. We create a custom Char or Text field (x_procedure_codes) on crm.lead and populate it with the pipe-delimited list of codes from the Quanum appointment record. If the practice needs structured code tracking, a separate product or custom crm.tag can be configured post-migration.

Quanum Practice Management

Diagnosis Code

maps to

Odoo CRM

Custom field on crm.lead (x_diagnosis_codes)

1:1
Fully supported

ICD-10 diagnosis codes stored in Quanum appointments map to a custom field (x_diagnosis_codes) on crm.lead in Odoo. The field is created as Char type to accommodate multi-code entries. If the practice wants to filter leads by diagnosis category, a custom selection field with the most common ICD chapters can be added to crm.lead after migration.

Quanum Practice Management

Allergies and Conditions

maps to

Odoo CRM

Custom fields on res.partner (x_allergies, x_conditions)

1:1
Fully supported

Quanum patient records include structured allergy and condition fields. Odoo res.partner has no native equivalent. We create x_allergies (Text) and x_conditions (Text) custom fields on res.partner and populate them from the Quanum patient record. The practice may want to expand this to a one2many health_record model in Odoo if the data volume is high.

Quanum Practice Management

Appointment Attachment / Document

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

Documents attached to Quanum appointments (lab results, referral letters, imaging) are exported as files. We re-upload them to Odoo as ir.attachment records linked to the corresponding crm.lead. File size limits in Odoo's file store apply; large files may require Odoo configuration adjustment before migration.

Quanum Practice Management

Lab Order Result

maps to

Odoo CRM

ir.attachment + custom fields on crm.lead

1:1
Fully supported

Lab order results in Quanum are clinical documents with structured data. Odoo CRM has no native lab result object. We attach lab result PDFs to the corresponding crm.lead as ir.attachment and store key result metadata (order date, result status, ordering provider) in custom fields on the lead. Full lab result interpretation requires Odoo's optional Inventory or Manufacturing modules, which are separate from CRM and require additional configuration.

Quanum Practice Management

Primary Care Provider Link

maps to

Odoo CRM

Custom field on res.partner (x_primary_care_provider_id)

1:1
Fully supported

Quanum links each patient to a primary care provider via a foreign key. We store the linked provider's Quanum ID in a custom field (x_primary_care_provider_id) on the patient's res.partner. Once the provider records are also migrated to res.partner, this ID can be used to create a many2one link between the patient and their assigned provider in Odoo.

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.

Quanum Practice Management logo

Quanum Practice Management gotchas

High

Product discontinuation creates mandatory migration with no vendor transition support

High

Access database export requires technical knowledge to interpret

Medium

CCDA export scope is limited to clinical summaries, not full records

Medium

QRDA I export is specialised and may not map directly to new quality reporting modules

Low

Lab Services Manager is separate and not discontinued—requires coordinated but independent migration

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

  • Quanum discontinuation forces a read-only export window with Access database as primary format

    Quanum Practice Management has been in read-only mode since January 1, 2024, per Quest Diagnostics' discontinuation announcement. The primary export format is a Microsoft Access database (.mdb), which requires technical knowledge to open and query. Quest also offers CCDAs (Continuity of Care documents, XML format per 21st Century CURES Act) and QRDA 1 files for quality reporting, but these are patient-summary exports — not a full relational schema export. We convert the Access database to CSV using a schema extraction step before Odoo import. The read-only status means you cannot make corrections in Quanum after your export window; verify data completeness before final export. If you have multiple Quanum databases (multi-location practice), each Access file must be extracted and merged by patient ID.

  • Odoo CRM has no native healthcare fields — custom field setup is required before data lands

    Odoo's crm.lead and res.partner models have a clean, standard CRM schema. There is no native patient_id, insurance_member_id, procedure_codes, diagnosis_codes, NPI, or allergies field. We create all required custom fields (x_*) via Settings > Technical > Models in developer mode before the migration run. The Access database from Quanum typically contains 15–25 healthcare-specific fields per patient record and 8–12 per appointment. If your Odoo instance does not have developer mode enabled, the custom field creation step requires an Odoo admin with technical access. We provide a custom field specification document as part of the pre-migration schema plan so your admin can pre-create the fields if preferred.

  • Appointment-to-opportunity mapping requires Odoo pipeline stage configuration as a pre-requisite

    In Quanum, appointments have a defined set of statuses (Scheduled, Checked-In, In-Progress, Completed, No-Show, Cancelled). Odoo CRM has no native appointment object — appointments migrate as crm.lead records, and appointment status maps to the lead's pipeline stage. This means your Odoo CRM must have pipeline stages configured to represent appointment statuses before migration begins. If your Odoo instance uses the default New, Qualified, Proposition, Won, Lost stages, these will not map meaningfully to your appointment workflow. We deliver a stage mapping plan before migration so your Odoo admin can configure stages to match your practice's appointment lifecycle. The migration cannot run with a blank or default pipeline if you want meaningful status preservation.

  • Lab order results and clinical documents attach as ir.attachment — no structured data migration

    Quanum's lab ordering and results module produces structured clinical data tied to patient appointments. Odoo CRM has no native lab result object. Lab result documents (typically PDF) migrate as Odoo attachments (ir.attachment) linked to the corresponding crm.lead. Key metadata — order date, result status, ordering provider — can be stored in custom fields, but the full structured result data cannot be represented in Odoo's standard CRM fields without significant custom development. If your practice relies on tracking lab result values in Quanum (e.g., numeric values, reference ranges, abnormal flags), those must be handled as attachments or rebuilt in Odoo using a custom module. This limitation is disclosed upfront in the pre-migration scope document.

  • Insurance carrier NPI-to-res.partner resolution requires duplicate-aware matching logic

    Quanum stores insurance carrier names and payer IDs from CMS data. Carriers may appear under slightly different names across records (e.g., 'Blue Cross Blue Shield of TX' vs. 'BCBS Texas'). Odoo res.partner requires a single canonical name for each carrier record. We run a fuzzy-match step during the extraction phase to identify duplicate carrier entries in the Access database and consolidate them to one res.partner record before Odoo import. If a carrier has no payer_id in Quanum, we use the carrier name as the key and flag any name variants for admin review. Unresolved duplicates that reach Odoo would create multiple carrier partners for the same company, which breaks insurance lookup workflows.

Migration approach

Six steps for a successful Quanum Practice Management to Odoo CRM data migration

  1. Extract data from Quanum Access database or alternative export

    We begin by connecting to your Quanum Access database file (or CDCA/QRDA exports if you prefer) and mapping the relational schema — patients, appointments, providers, insurance carriers, and their foreign-key relationships. If the Access file is password-protected or corrupted, we coordinate with your IT team to unlock or repair it. We extract each object to CSV with its foreign keys preserved so the migration tool can resolve relationships during the Odoo load. This step also flags any records with missing required fields (e.g., patients with no last name or appointments with no scheduled date) so you can decide how to handle them before migration.

  2. Configure Odoo CRM custom fields and pipeline stages

    Before data loads into Odoo, we create all required custom fields on res.partner and crm.lead via the Odoo interface or directly in the PostgreSQL database. We follow your stage mapping plan to configure pipeline stages that match your appointment workflow. If you have multiple sales teams in Odoo, we confirm which team owns the migrated leads. We also create the carrier and provider res.partner records as company-type and contact-type entries respectively so patient records can link to them via many2one fields. This step requires an Odoo admin account with developer mode access.

  3. Resolve owner and provider assignments by email

    Quanum provider and staff assignments map to Odoo user accounts. We match each provider name in the Access database against Odoo users by email address. Unmatched providers are flagged before migration — your team either creates Odoo user accounts for them or assigns their records to a fallback Odoo user. No lead or contact lands in Odoo without an assigned user, ensuring accountability is preserved from the Quanum schedule. For insurance carriers, we match against the res.partner records created in the previous step using the carrier name and payer_id.

  4. Run a sample migration with field-level validation

    A representative slice — typically 100–500 records across patients, appointments, carriers, and providers — migrates first. We generate a field-level diff report comparing source values against the Odoo records created, so you can verify custom field population, stage mapping accuracy, and carrier/patient link resolution before the full run. Any mapping corrections (field name errors, stage misassignments, carrier link breaks) are fixed in the migration tool before the full dataset is processed. This step is the last checkpoint before your live data enters Odoo.

  5. Execute full migration with delta-pickup window and rollback capability

    The full dataset migrates through Odoo's XML-RPC external API using batched writes to respect any applicable API limits. A delta-pickup window (24–48 hours) captures any records modified in the Access database during the cutover period. An audit log records every insert and update operation. If reconciliation fails — for example, if patient-to-appointment links break or stage assignments are wrong across more than 5% of records — FlitStack AI provides a one-click rollback that reverts the Odoo database to its pre-migration state. You then decide whether to fix the mapping and re-run or accept the partial migration and handle remaining records manually.

Platform deep dives

Context on both ends of the pair

Quanum Practice Management logo

Quanum Practice Management

Source

Strengths

  • Tightly integrated Quest Diagnostics lab ordering and result retrieval for practices with strong Quest referral relationships.
  • Web-based deployment eliminates on-premise server requirements, reducing IT overhead for small practices.
  • Specialty-trained RCM experts aligned to billing nuances across multiple medical specialties.
  • Dashboard and reporting customisation for front-office workflow optimisation.
  • Mature platform with long operational history preferred by established independent practices.

Weaknesses

  • Mandatory end-of-life as of January 2024 creates urgent forced migration without vendor support for the transition.
  • Entire EHR module switched to read-only mode—practices cannot create new records, only view and export existing data.
  • Three export mechanisms only: Access DB (technical), CCDA (clinical summaries), and QRDA I (quality reporting). No modern API.
  • Microsoft Access database format requires technical expertise to interpret; data must be uploaded into another EHR to be usable.
  • Limited data portability for practices with complex custom fields or specialty-specific workflow configurations.
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 Quanum Practice Management 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

    Quanum Practice Management: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Quanum Practice Management 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 Quanum Practice Management to Odoo CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Quanum-to-Odoo migrations complete in 3–7 days for practices with fewer than 50,000 patient records. The longest step is the Access database extraction and custom field planning — the actual API load via Odoo's XML-RPC runs in hours for this record volume. Multi-location practices with separate Access databases or more than 200,000 records extend the timeline to 2–4 weeks. The Odoo pipeline stage configuration step also requires your admin to confirm stage names before migration, which adds 1–3 days depending on internal alignment.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Quanum Practice Management.
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