CRM migration
Field-level mapping, validation, and rollback between Glaze CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Glaze CRM
Source
Odoo CRM
Destination
Compatibility
10 of 12
objects map 1:1 between Glaze CRM and Odoo CRM.
Complexity
CModerate
Timeline
5-8 weeks
Overview
Moving from Glaze CRM to Odoo CRM is a migration from a niche, vendor-coordination-dependent platform to a mature, open-source ERP suite with a fully documented API. Glaze CRM does not publish API documentation or a public data schema, which means every migration begins with a manual data extract coordinated directly through Softuvo Solutions. White-label deployments add complexity because each instance may carry a non-standard field set unique to the original configuration. We request a full schema audit from the customer before producing a field mapping spreadsheet. We import into Odoo in dependency order—res.partner first, then crm.lead, then crm.lead followed by crm.opportunity, with Users and Tags resolved before record imports begin. Workflow configurations, pipeline stage rules, and custom field definitions do not migrate as code; we deliver a written inventory for the customer's Odoo administrator to rebuild in Studio or via Python modules post-migration.
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 Glaze CRM 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.
Glaze CRM
Company
Odoo CRM
res.partner
1:1Glaze CRM Company records map to Odoo res.partner with partner_type set to 'company' to distinguish them from individual contacts. Company name becomes the partner's display name, address fields map to street, street2, city, state_id, zip, and country_id, and website maps directly. We create res.partner records first in every migration so that the lookup is satisfied for any subsequent Contact import that references a parent Company.
Glaze CRM
Contact
Odoo CRM
res.partner
1:1Glaze CRM Contact records map to Odoo res.partner with partner_type set to 'person'. Email, phone, mobile, and function (job title) migrate directly. The parent_id field links each Contact to its parent Company res.partner record that was created in the Company import phase. If the source Contact has no associated Company, the Contact imports as a standalone partner without a parent_id.
Glaze CRM
Lead
Odoo CRM
crm.lead
1:1Glaze CRM Lead records map to Odoo crm.lead with type = 'lead'. Lead source, status, and owner assignment map to source_id, stage_id, and user_id respectively. The Glaze CRM lead description (notes) migrates as the crm.lead description field. We preserve the Glaze lead creation date as create_date in Odoo to maintain historical sequencing against the activity timeline.
Glaze CRM
Deal
Odoo CRM
crm.lead
1:1Glaze CRM Deal records map to Odoo crm.lead with type = 'opportunity'. Deal name becomes the opportunity name, amount maps to planned_revenue, and stage maps to stage_id using a stage reconciliation table we build during scoping. Probability is computed from the destination Odoo stage unless Glaze carries an explicit probability field we can preserve as a custom field.
Glaze CRM
Pipeline Stages
Odoo CRM
crm.stage
lossyEach Glaze CRM pipeline becomes a set of crm.stage records in Odoo scoped to the relevant team or sales process. Stage order, name, and probability percentage migrate to name, sequence, and onchange_stage_id probability mapping. We configure crm.stage values in Odoo before importing any crm.lead records to avoid orphaned stage references.
Glaze CRM
Task
Odoo CRM
mail.activity
1:1Glaze CRM Tasks map to Odoo mail.activity records linked to the parent crm.lead or res.partner record. Activity type (call, email, meeting, todo) maps to activity_type_id; due date maps to date_deadline; assignee maps to user_id. Completed vs. open status migrates with the activity's state preserved. Task subject migrates as the activity's summary or as a related mail.message body.
Glaze CRM
User / Owner
Odoo CRM
res.users
1:1Glaze CRM Users map to Odoo res.users by email address as the deduplication key. We extract every distinct owner referenced on Contact, Company, Lead, Deal, and Task and match against the destination Odoo instance's user table. Any Glaze Owner without a matching Odoo user goes to a reconciliation queue for the customer's admin to provision before record imports resume.
Glaze CRM
Tag / Label
Odoo CRM
res.partner.category or crm.tag
1:1Glaze CRM Tags on Contacts and Companies map to res.partner.category records linked via res_partner_category_rel. Glaze CRM Tags on Leads and Deals map to crm.tag records linked via crm_lead_tag_rel. Tags migrate as flat string arrays and are reapplied to the corresponding records in Odoo during the relevant object import phase.
Glaze CRM
Custom Fields
Odoo CRM
Custom Fields (ir.model.fields)
lossyGlaze CRM custom fields on Contacts, Companies, and Deals require a schema audit before migration. We request a sample record export from the customer showing all visible custom fields, infer field types (text, date, integer, selection, many2one), and then create matching ir.model.fields in Odoo via a custom module or Odoo Studio before data import. Multi-select fields require splitting into a related res.partner.category mapping table.
Glaze CRM
Document Metadata
Odoo CRM
ir.attachment
1:1Glaze CRM document attachments cannot be exported via an automated API because no document export endpoint is documented. We capture document metadata (filename, upload date, file size, linked record reference) and map it to Odoo ir.attachment records. The actual file binaries require a separate manual export step from Glaze CRM, typically via their admin interface or direct database access, which the customer provides as a zip of files to be imported alongside the metadata migration.
Glaze CRM
Lead Source
Odoo CRM
utm.source / crm.tag
1:1Glaze CRM Lead Source values map to Odoo utm.source records if the Odoo CRM installation includes the Marketing app. If Marketing is not installed, we map Lead Source to a crm.tag entry or a custom selection field. We document which approach the customer prefers during scoping.
Glaze CRM
Company-to-Contact Relationship
Odoo CRM
res.partner.parent_id
1:1The Glaze CRM association between a Contact and its parent Company is preserved in Odoo as res.partner.parent_id pointing to the Company-type res.partner. This relationship is resolved during the Contact import phase by first completing the Company import and then setting the parent_id foreign key by matching on company name or external Glaze ID stored as a temporary reference field.
| Glaze CRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Company | res.partner1:1 | Fully supported | |
| Contact | res.partner1:1 | Fully supported | |
| Lead | crm.lead1:1 | Fully supported | |
| Deal | crm.lead1:1 | Fully supported | |
| Pipeline Stages | crm.stagelossy | Fully supported | |
| Task | mail.activity1:1 | Fully supported | |
| User / Owner | res.users1:1 | Fully supported | |
| Tag / Label | res.partner.category or crm.tag1:1 | Fully supported | |
| Custom Fields | Custom Fields (ir.model.fields)lossy | Mapping required | |
| Document Metadata | ir.attachment1:1 | Fully supported | |
| Lead Source | utm.source / crm.tag1:1 | Fully supported | |
| Company-to-Contact Relationship | res.partner.parent_id1: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.
Glaze CRM gotchas
No public API schema means no automated export
White-label deployments create non-standard instance configurations
Custom field types are not documented in public-facing materials
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
Data extract coordination with Glaze CRM
We guide the customer through requesting a full data export from Glaze CRM via Softuvo Solutions. We specify the required format (CSV for structured records, JSON for custom field arrays, and a separate zip for file attachments) and the required scope (all objects: Contacts, Companies, Leads, Deals, Tasks, Tags, and a full list of custom field names with sample values). We require the export before producing a field mapping spreadsheet. If the customer cannot obtain the export within two weeks of kickoff, we flag the project as blocked and escalate.
Schema audit and field mapping spreadsheet
We receive the Glaze CRM data export and the schema audit from the customer. We review every custom field name, infer its data type from sample values, and map it to an equivalent Odoo field definition (standard or custom via ir.model.fields). We produce a field mapping spreadsheet showing source field, destination field, transformation rule, and any constraints. For multi-select fields, checkbox fields, and fields with non-standard Glaze types, we document the transformation strategy and confirm it with the customer before proceeding to Odoo configuration.
Odoo schema provisioning and stage configuration
We provision the Odoo CRM schema before any data import. This includes creating custom ir.model.fields on res.partner and crm.lead to receive Glaze CRM custom properties, configuring crm.stage records with stage names and probabilities that match the customer's Glaze pipeline, and setting up res.users for any Glaze Owners that can already be matched by email. If the customer uses Odoo Studio, we coordinate field creation there; otherwise we use a custom Python module or direct XML-RPC calls to create fields via the Odoo API.
Owner and user reconciliation
We extract every distinct Glaze CRM owner (user) referenced on any record and match by email against the destination Odoo instance's res.users table. Any Glaze Owner without a matching Odoo user goes to a reconciliation queue. The customer's Odoo administrator provisions missing users (active or inactive based on whether the original owner is still active). Migration cannot proceed past this step because Owner references on crm.lead and res.partner are foreign keys that must resolve at insert time.
Staged migration in dependency order
We run migration in record-dependency order using Odoo's XML-RPC API or CSV import with dependency sequencing: res.partner records for Companies first (with partner_type='company'), res.partner for Contacts second (with parent_id resolved to the Company partner), crm.stage configuration third, crm.lead for Leads fourth, crm.lead for Opportunities fifth (with type='opportunity' and stage_id resolved), mail.activity for tasks sixth, and ir.attachment metadata last. Each phase emits a row-count reconciliation report before the next phase begins. We use batch chunking and exponential backoff on any API rate limit responses.
Document file ingestion and final validation
We ingest the customer-provided file binaries into Odoo's filestore and link them to the corresponding ir.attachment records created during the metadata phase. We run a final validation pass comparing record counts between the Glaze export and the Odoo import, spot-checking 25-50 records per object against the source data. We deliver a written pipeline stage map, a custom field inventory with Odoo field IDs, and a written handoff document for the customer's Odoo administrator to rebuild any automation rules, email templates, or pipeline automation configurations.
Platform deep dives
Glaze CRM
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 5 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Glaze CRM and Odoo CRM.
Object compatibility
5 of 8 objects need a mapping; the rest are 1:1.
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
Glaze CRM: Not publicly documented.
Data volume sensitivity
Glaze CRM 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 Glaze CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Glaze CRM 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 Glaze CRM
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.