CRM migration
Field-level mapping, validation, and rollback between BrightDoor and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
BrightDoor
Source
Odoo CRM
Destination
Compatibility
12 of 12
objects map 1:1 between BrightDoor and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
BrightDoor was built as a purpose-built CRM for new homebuilders and residential developers — its data model centers on community, property lot, registrant, and home-buyer lifecycle stages that don't map 1:1 to Odoo's generic crm.lead object. Odoo CRM uses res.partner for contacts and companies, crm.lead for unqualified leads, and crm.opportunity for qualified deals; its stage model is defined per sales team using kanban columns. FlitStack AI migrates BrightDoor's registrant records (mapped to crm.lead with contact-type flags), community assignments (mapped to a many2one on crm.lead or a dedicated tag), property/unit associations (mapped to Odoo's built-in tags and custom fields), and activity history including tour requests and follow-up calls. BrightDoor's custom fields — lot numbers, community codes, design options — migrate as custom Char/Selection fields on crm.lead via Odoo Studio or a lightweight custom module. Workflows, automations, and touchscreen-app configurations cannot migrate and must be rebuilt in Odoo's Automations or Studio. We use Odoo's XML-RPC API for structured record creation, maintaining relational integrity for lead-to-partner merges and opportunity creation. A delta-pickup window captures any BrightDoor registrations created during the cutover window before the final switch-over.
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 BrightDoor 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.
BrightDoor
Registrant
Odoo CRM
crm.lead
1:1BrightDoor registrants map directly to Odoo crm.lead records. The registrant name becomes the lead's display name (partner_name field); email, phone, and address map to standard contact fields on the lead. Original registration date is preserved as x_studio_registration_date for reporting continuity.
BrightDoor
Registrant (lifecycle_stage = 'Buyer')
Odoo CRM
res.partner
1:1BrightDoor registrants who have progressed to 'Buyer' lifecycle stage map to res.partner (Odoo's contact record) since they represent a contracted customer. The crm.lead is marked as 'won' before creation of the partner record, maintaining the lead history trail and preserving the complete lifecycle progression for reporting purposes.
BrightDoor
Community
Odoo CRM
crm.team
1:1BrightDoor communities map to Odoo sales teams (crm.team). Each community becomes its own sales team so stage pipelines, team-specific users, and community-level reporting can be scoped correctly in Odoo. Team members are assigned by email match against Odoo users, ensuring proper lead ownership and visibility across the organization.
BrightDoor
Community Assignment (registrant → community)
Odoo CRM
crm.lead.tag
1:1BrightDoor's registrant-to-community association migrates as a tag on crm.lead (e.g., 'Community: Cedar Ridge'). Odoo tags are many2many, allowing registrants assigned to multiple communities to receive multiple tags for comprehensive tracking. Tag names preserve the community code from BrightDoor for accurate reporting segmentation.
BrightDoor
Property/Lot
Odoo CRM
Custom Char Field on crm.lead
1:1BrightDoor lot numbers have no native Odoo equivalent. FlitStack creates x_studio_lot_number (Char) on crm.lead during migration setup. Lot availability status (available, under contract, sold) can map to a second custom selection field x_studio_lot_status for complete property tracking within the lead record.
BrightDoor
Design Option Selections
Odoo CRM
Custom Char/Selection Fields on crm.lead
1:1BrightDoor stores design-center selections (e.g., kitchen package, elevation type) as registrant properties. These migrate to Odoo custom selection fields on crm.lead (x_studio_design_package, x_studio_elevation_type). Options with free-text values become Char fields for maximum flexibility in data capture.
BrightDoor
Tour Request / Welcome Center Visit
Odoo CRM
calendar.event
1:1BrightDoor tour requests map to Odoo calendar.event records attached to the crm.lead. Original visit date, host user, and community are preserved in the event record. Events are created as 'Tour' type with a custom description field carrying BrightDoor's complete tour metadata for reference.
BrightDoor
Activity Log (calls, follow-ups)
Odoo CRM
mail.message / calendar.event
1:1BrightDoor activity history (call logs, follow-up reminders) migrates as mail.message records on the crm.lead. Odoo displays these in the lead's chatter for unified communication tracking. Timestamps and assigned user are preserved accurately; unassigned activities map to a fallback Odoo user flagged during owner resolution.
BrightDoor
BrightDoor Custom Field (property_type, community_code, referral_source)
Odoo CRM
x_studio_* custom fields on crm.lead
1:1Any BrightDoor custom registrant properties not covered by standard mapping receive corresponding Odoo custom fields. FlitStack creates Char fields for text values and Selection fields for pick-list values to maintain data integrity. Field definitions are generated as a comprehensive setup manifest before migration runs.
BrightDoor
BrightDoor User / Owner
Odoo CRM
res.users (matched by email)
1:1BrightDoor owner IDs resolve to Odoo res.users by matching email addresses. Unmatched owners are flagged before migration begins to prevent data loss; records are assigned to a fallback user or placed in an unassigned queue for manual review. This prevents orphan records in Odoo post-migration.
BrightDoor
Attachments (document uploads, designCenter PDFs)
Odoo CRM
ir.attachment
1:1BrightDoor file attachments on registrants migrate to Odoo's ir.attachment model, linked to the corresponding crm.lead record. File metadata including filename, create_date, and create_uid is preserved throughout the transfer. Large files are handled within Odoo's configured attachment size limits to ensure system stability.
BrightDoor
BrightDoor Workflow / Automation
Odoo CRM
Not Migrated
1:1BrightDoor automations including lifecycle transition triggers, community assignment rules, and email sequences do not migrate directly. FlitStack exports workflow definitions as a JSON reference file for Odoo admin review and planning. Odoo Automations are rebuilt using Studio or server actions targeting the migrated crm.lead model and custom fields.
| BrightDoor | Odoo CRM | Compatibility | |
|---|---|---|---|
| Registrant | crm.lead1:1 | Fully supported | |
| Registrant (lifecycle_stage = 'Buyer') | res.partner1:1 | Fully supported | |
| Community | crm.team1:1 | Fully supported | |
| Community Assignment (registrant → community) | crm.lead.tag1:1 | Fully supported | |
| Property/Lot | Custom Char Field on crm.lead1:1 | Fully supported | |
| Design Option Selections | Custom Char/Selection Fields on crm.lead1:1 | Fully supported | |
| Tour Request / Welcome Center Visit | calendar.event1:1 | Fully supported | |
| Activity Log (calls, follow-ups) | mail.message / calendar.event1:1 | Fully supported | |
| BrightDoor Custom Field (property_type, community_code, referral_source) | x_studio_* custom fields on crm.lead1:1 | Fully supported | |
| BrightDoor User / Owner | res.users (matched by email)1:1 | Fully supported | |
| Attachments (document uploads, designCenter PDFs) | ir.attachment1:1 | Fully supported | |
| BrightDoor Workflow / Automation | Not Migrated1: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.
BrightDoor gotchas
mybrightdoor.com serves two different businesses
No publicly documented API for data export
Activity history not exportable via standard tools
HomeRover tour data isolated from CRM 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
Map BrightDoor data model and pre-create Odoo teams
FlitStack ingests a complete BrightDoor data export and catalogs every object, custom field, and relationship within the system. We generate a detailed community-to-team manifest listing each BrightDoor community that requires an Odoo crm.team record, specifying team name, alias, and member assignments. Your Odoo admin (or our implementation team) creates these teams before migration begins — FlitStack validates team existence via API before writing any leads to ensure proper routing and reporting integrity.
Define custom fields on Odoo crm.lead via setup manifest
Based on the comprehensive BrightDoor custom property inventory, FlitStack generates a custom field manifest for Odoo that includes: x_studio_lifecycle_stage, x_studio_community, x_studio_lot_number, x_studio_design_package, x_studio_community_code, x_studio_registration_date, and x_studio_lot_status. Fields are created via Odoo Studio for Standard/Custom plans or as a lightweight custom module for Community edition. All field definitions are validated against Odoo's API schema before the migration run executes to prevent runtime errors.
Resolve owners and map referral sources
BrightDoor owner IDs are matched to Odoo res.users records by email address lookup. Unmatched owners are flagged during pre-flight checks and assigned to a designated fallback user or placed in an unassigned queue for manual resolution. BrightDoor referral source pick-list values are mapped to existing Odoo utm.source records, with new sources automatically created during migration if no match exists. Lifecycle stage values are mapped to the custom selection field defined in the previous step for complete data preservation.
Run sample migration with field-level diff
A representative sample of BrightDoor registrants (typically 100–500 records spanning multiple communities, lifecycle stages, and property types) migrates first in a controlled test run. FlitStack generates a comprehensive field-level diff report comparing source values against destination field values — verifying lifecycle stage mapping accuracy, community tag assignment, lot number population, and owner resolution. You review and approve the diff report before the full migration run commits to production.
Full migration run with delta-pickup cutover
The complete BrightDoor registrant dataset migrates to Odoo crm.lead records with all custom fields populated, tags assigned, and activity history preserved. A 24–48 hour delta-pickup window captures any new BrightDoor registrations created during the cutover period, ensuring Odoo reflects the final state at go-live. FlitStack logs every migration operation to an immutable audit record; one-click rollback reverts Odoo to pre-migration state if reconciliation identifies critical issues.
Platform deep dives
BrightDoor
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across BrightDoor and Odoo CRM.
Object compatibility
1 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
BrightDoor: Not publicly documented.
Data volume sensitivity
BrightDoor 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 BrightDoor to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your BrightDoor 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 BrightDoor
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.