CRM migration
Field-level mapping, validation, and rollback between GBuilder and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
GBuilder
Source
Odoo CRM
Destination
Compatibility
10 of 12
objects map 1:1 between GBuilder and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
GBuilder and Odoo CRM take fundamentally different approaches to customer data. GBuilder typically stores contacts, companies, and deals in a single unified object graph, treating them as properties of a primary record. Odoo CRM uses a separate crm.lead model (with a type field distinguishing 'lead' from 'opportunity'), a dedicated res.partner model for contacts and companies, and a customizable crm.stage model per sales team. These differences mean a GBuilder-to-Odoo migration is a schema-splitting problem as much as a data-move problem. FlitStack AI extracts GBuilder records via API, maps contacts to res.partner (creating a commercial partner for each company), splits GBuilder deals into Odoo crm.lead records by type, preserves stage-entered timestamps as x_studio custom datetime fields, and re-attaches activities and attachments to the correct Odoo IDs. Automation workflows (assignment rules, stage-triggered notifications) do not migrate — they require Odoo's automation tools to be rebuilt, but FlitStack exports the GBuilder rule definitions as a rebuild reference for your Odoo administrator. The migration runs in three passes: (1) a sample pass generating a field-level diff, (2) a full bulk pass using Odoo's xmlrpc/bulk API with de-duplication against Source_System_ID__c, and (3) a delta pickup pass capturing any GBuilder records modified during the cutover window.
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 GBuilder 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.
GBuilder
Contact / Primary Record
Odoo CRM
res.partner (Contact)
1:1GBuilder contacts map to Odoo res.partner records with type='contact'. GBuilder company data embedded in the contact record becomes a separate res.partner (type='company') created first, then linked via parent_id. Address fields (street, city, country) map directly to Odoo address fields.
GBuilder
Company / Primary Record
Odoo CRM
res.partner (Company)
1:1GBuilder company records become Odoo res.partner with type='company'. The commercial_partner_id field is set to the company record itself. Child contacts are linked via child_ids. GBuilder company hierarchies (parent/child) map to Odoo parent_id on res.partner — the parent must be migrated before children to avoid circular reference errors.
GBuilder
Deal / Project
Odoo CRM
crm.lead (type=opportunity)
1:manyGBuilder deals split into Odoo crm.lead records where type='opportunity'. The partner_id on the opportunity links to the res.partner created from the GBuilder contact. Stage mapping uses a value-mapping table keyed on the GBuilder pipeline stage name. Planned revenue maps to Odoo planned_revenue; close date maps to date_deadline.
GBuilder
Lead / Prospect
Odoo CRM
crm.lead (type=lead)
1:1GBuilder unqualified prospects (not yet deal-qualified) migrate as Odoo crm.lead with type='lead'. Priority, source information, and any custom fields carry over as x_ custom fields. The partner_id is only set if the lead already has an associated GBuilder contact record.
GBuilder
Pipeline Stage
Odoo CRM
crm.stage + crm.team
1:1GBuilder pipeline stages map to Odoo crm.stage records scoped per crm.team. Each sales team in Odoo can have its own stage sequence; FlitStack maps GBuilder stage names to the appropriate team-stage mapping. Stage-entered timestamps are preserved as x_studio_datetime custom fields on crm.lead because Odoo does not maintain a native stage-history table.
GBuilder
Activity (Call / Email / Meeting)
Odoo CRM
mail.activity
1:1GBuilder logged activities (calls, emails, meetings) migrate as Odoo mail.activity records with activity_type_id matching the GBuilder activity category. The res_model is set to 'crm.lead' and res_id to the target opportunity or lead. Original activity date and responsible user_id are preserved via email matching on the owner field.
GBuilder
Note / Log Entry
Odoo CRM
mail.message
1:1GBuilder notes and log entries become Odoo mail.message records on the crm.lead. The message_type is set to 'comment' and body carries the note text. Attachments embedded in notes are extracted and reattached as ir.attachment records linked to the message.
GBuilder
Attachment / File
Odoo CRM
ir.attachment
1:1GBuilder file attachments are downloaded from GBuilder's storage, re-uploaded to Odoo's ir.attachment table with res_model='crm.lead' or 'res.partner' and the corresponding Odoo record ID. Odoo's default file size limit is 25MB per attachment; larger files are flagged for manual handling.
GBuilder
Custom Property / Field
Odoo CRM
ir.model.fields (x_ custom)
1:1GBuilder custom properties are recreated as Odoo custom fields (x_ prefix via Odoo Studio or Python-defined in a custom module). Field type mapping is required: text properties become char/text fields, date properties become date fields, pick-list values become selection fields. Custom fields must be created in Odoo before the migration loads data into them.
GBuilder
Owner / Assigned User
Odoo CRM
res.users (via user_id on crm.lead)
1:1GBuilder owner or assigned user is resolved by email matching against Odoo res.users. Unmatched owners are flagged before the migration runs; their records are assigned to a fallback user or held for manual reassignment. Odoo user_id on crm.lead sets the opportunity owner.
GBuilder
GBuilder User / Team
Odoo CRM
crm.team + res.users
1:1GBuilder teams or groups map to Odoo crm.team records. Team members are linked via res.users membership in the team. Odoo team stages are associated with the team via team_id on crm.lead; pipeline stage visibility is scoped by team membership.
GBuilder
Multi-Company Contact Association
Odoo CRM
res.partner (child_ids) + Account Contact Relation
many:1GBuilder N:N contact-to-company associations require flattening to Odoo's hierarchical model. The primary company becomes parent_id on res.partner; secondary companies are surfaced as Account Contact Relationships (a separate Odoo model) or via the partner_id on crm.lead. Your admin chooses which association model to use during the planning phase.
| GBuilder | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact / Primary Record | res.partner (Contact)1:1 | Fully supported | |
| Company / Primary Record | res.partner (Company)1:1 | Fully supported | |
| Deal / Project | crm.lead (type=opportunity)1:many | Fully supported | |
| Lead / Prospect | crm.lead (type=lead)1:1 | Fully supported | |
| Pipeline Stage | crm.stage + crm.team1:1 | Fully supported | |
| Activity (Call / Email / Meeting) | mail.activity1:1 | Fully supported | |
| Note / Log Entry | mail.message1:1 | Fully supported | |
| Attachment / File | ir.attachment1:1 | Fully supported | |
| Custom Property / Field | ir.model.fields (x_ custom)1:1 | Fully supported | |
| Owner / Assigned User | res.users (via user_id on crm.lead)1:1 | Fully supported | |
| GBuilder User / Team | crm.team + res.users1:1 | Fully supported | |
| Multi-Company Contact Association | res.partner (child_ids) + Account Contact Relationmany: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.
GBuilder gotchas
BIM model files are not exportable via API
Custom project properties vary by project
Approval chain status fields are simplified on export
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
Audit GBuilder schema and export full data model
FlitStack connects to GBuilder via API and extracts the complete schema — all objects, standard fields, and custom properties with their data types and pick-list values. This audit identifies every GBuilder custom property that will require an Odoo custom field, every GBuilder pipeline and stage that needs a corresponding Odoo crm.team and crm.stage, and every activity type (call, email, meeting, note) that maps to Odoo's mail.activity model. The output is a schema setup checklist delivered to your Odoo administrator before any data moves.
Create Odoo custom fields and stage structure
Your Odoo administrator creates the x_ custom fields (via Odoo Studio or a custom module) and pre-configures crm.team and crm.stage records matching your GBuilder pipelines and stage names. FlitStack provides the exact field name, type, and pick-list value list for each custom field so nothing is ambiguous. Until this step is complete, the migration cannot validate field-level references in Odoo.
Resolve GBuilder owners to Odoo users by email
FlitStack matches GBuilder owner and assigned-user records to Odoo res.users by email address. Unmatched owners are flagged with the GBuilder owner name and email so your team can either invite them to Odoo first or assign a fallback owner. No GBuilder record lands in Odoo without a valid user_id — orphan records due to unresolved owners are the most common post-migration data quality issue and FlitStack prevents them before the migration runs.
Run sample migration with field-level diff
A representative slice of GBuilder records (typically 100-500) migrates into a staging Odoo database. FlitStack generates a field-level diff comparing the GBuilder source values against the Odoo destination values for every mapped field. You review the diff to verify stage mapping, company-contact linkage, owner resolution, and custom property values before the full run commits. Field-level diff is the primary validation instrument — it catches value-mapping errors that record counts alone would miss.
Execute full migration with delta pickup window
The full GBuilder dataset migrates into your production Odoo database via Odoo's xmlrpc API. A delta pickup window (typically 24-48 hours) captures any GBuilder records created or modified during the cutover period so Odoo reflects GBuilder's final state at go-live. FlitStack's audit log records every create, update, and skip operation with the source GBuilder ID for reconciliation. One-click rollback reverts all migration operations if post-run validation fails.
Platform deep dives
GBuilder
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between GBuilder and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across GBuilder and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between GBuilder 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
GBuilder: Not publicly documented.
Data volume sensitivity
GBuilder 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 GBuilder to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your GBuilder 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 GBuilder
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.