CRM migration
Field-level mapping, validation, and rollback between Real Properties and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Real Properties
Source
Odoo CRM
Destination
Compatibility
11 of 12
objects map 1:1 between Real Properties and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Real Properties stores contacts, companies, deals, activities, and property records in a flat CRM object model. Odoo CRM uses crm.lead for both leads and opportunities (distinguished by a type flag), res.partner for contacts and companies, and mail.activity for activity logging. The migration must translate Real Properties' flat contact model into Odoo's res.partner with address and contact-type handling, map deals into crm.lead records using Odoo's pipeline stage system, and surface property-specific data as either custom fields on res.partner/crm.lead or Odoo product templates depending on your configuration preference. FlitStack AI extracts via the Real Properties API (or CSV export where API is unavailable), transforms field names and data types against the Odoo target schema, and loads through Odoo's xmlrpc API or direct PostgreSQL insert for large-volume migrations. Workflows, automation rules, email templates, and reporting dashboards from Real Properties do not migrate — these are exported as JSON definitions for your Odoo admin to rebuild using Odoo's Studio, server actions, or automated actions. Activity history (calls, meetings, notes) migrates as mail.activity records linked to the parent res.partner or crm.lead. We sequence the migration so foreign keys resolve in the correct order: companies → contacts → deals → activities. A 24–48h delta-pickup window captures any records modified during the cutover window so Odoo reflects Real Properties' final state at go-live.
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 Real Properties 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.
Real Properties
Contact
Odoo CRM
res.partner
1:1Real Properties contacts map to Odoo res.partner. The partner record receives name, email, phone, and address fields directly from the source. Odoo's partner_type logic (customer/supplier/contact distinction) defaults to 'contact' during migration — your admin sets the type flag afterward if needed. Because Odoo requires a value in this field, the migration supplies a default contact_type value to avoid field validation errors; the admin can adjust this to customer or supplier after the migration is complete.
Real Properties
Company
Odoo CRM
res.partner (company type)
1:1Real Properties company records map to res.partner with the 'is_company' flag set to True. Odoo stores company address fields (street, city, state_id, country_id, zip) on the partner record. Parent-child relationships between companies in Real Properties map to Odoo's parent_id on res.partner, preserving any corporate hierarchy present in the source data. The migration tool handles both flat and nested company structures through recursive parent lookups during the partner creation phase.
Real Properties
Contact → Company association
Odoo CRM
res.partner (child_ids)
1:1Real Properties links each contact to one primary company. In Odoo, the contact's parent_id is set to the mapped company partner. Odoo's address_ids on the company partner hold multiple address records; the primary company is set as parent_id for query and reporting consistency.
Real Properties
Deal / Opportunity
Odoo CRM
crm.lead
1:1Real Properties deals map to Odoo crm.lead records with type='opportunity'. The lead's name maps to Odoo's name field, expected revenue to planned_revenue, and close date to date_closed. Stage mapping uses a value_map from the source stage names to Odoo stage_id records.
Real Properties
Lead (pre-deal records)
Odoo CRM
crm.lead (type='lead')
1:manyIf Real Properties distinguishes early-stage leads from closed deals, we split them: leads without a deal value or close date become Odoo crm.lead with type='lead'; deals with a value and close date become type='opportunity'. This preserves pipeline segmentation that Real Properties manages through separate record states.
Real Properties
Pipeline / Deal Stage
Odoo CRM
crm.stage + crm.team
1:1Real Properties pipeline stages map to Odoo crm.stage records scoped to a crm.team. If Real Properties has multiple pipelines, we create a corresponding number of crm.team records in Odoo, each with its own stage sequence. Probability and forecast_category from Real Properties stage settings map to Odoo's probability and legend_priority fields.
Real Properties
Property record
Odoo CRM
Custom fields on res.partner / crm.lead OR product.template
1:1Real Properties property records (address, type, status, owner, assessed value) have no Odoo CRM native equivalent. We create custom fields on res.partner or crm.lead — property_address__c, property_type__c, property_status__c, property_owner_id__c — to preserve the data. Alternatively, if your team uses Odoo Sales, property records can map to product.template; we surface both options in the migration plan for your decision.
Real Properties
Activity (call, meeting, note)
Odoo CRM
mail.activity
1:1Real Properties activity logs (calls, meetings, notes) with timestamps and owner information map to Odoo mail.activity records. The res_model is set to 'crm.lead' or 'res.partner' and res_id points to the migrated parent record. activity_type_id maps the activity category (call, meeting, note) to the corresponding Odoo activity type.
Real Properties
User / Owner
Odoo CRM
res.users
1:1Real Properties user records resolve to Odoo res.users by email match. Unmatched owners are flagged before migration — your team either creates Odoo user accounts for them first or assigns their records to a fallback user. The migration does not create Odoo users autonomously.
Real Properties
Attachment / File
Odoo CRM
ir.attachment
1:1Real Properties file attachments associated with contacts, companies, or deals migrate to Odoo ir.attachment records linked to the corresponding res.partner or crm.lead via res_model and res_id. File content is base64-encoded and inserted via the Odoo API. Odoo's attachment storage limit applies (default 25MB per file).
Real Properties
Custom fields
Odoo CRM
ir.model.fields (custom)
1:1Real Properties custom fields not present in the standard object schema are created as Odoo custom fields (ir.model.fields with custom=True) on the appropriate model before data loads. Field types are mapped: text to char/text, number fields to float or integer, date fields to date, and pick-lists to selection fields with value mapping.
Real Properties
Property type classification
Odoo CRM
Custom selection field on res.partner
1:1If Real Properties classifies properties by type (residential, commercial, industrial, land), we create a property_type__c selection field on the relevant Odoo model and map source values one-by-one. Custom values not in the Odoo selection list are added before migration runs.
| Real Properties | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner (company type)1:1 | Fully supported | |
| Contact → Company association | res.partner (child_ids)1:1 | Fully supported | |
| Deal / Opportunity | crm.lead1:1 | Fully supported | |
| Lead (pre-deal records) | crm.lead (type='lead')1:many | Fully supported | |
| Pipeline / Deal Stage | crm.stage + crm.team1:1 | Fully supported | |
| Property record | Custom fields on res.partner / crm.lead OR product.template1:1 | Fully supported | |
| Activity (call, meeting, note) | mail.activity1:1 | Fully supported | |
| User / Owner | res.users1:1 | Fully supported | |
| Attachment / File | ir.attachment1:1 | Fully supported | |
| Custom fields | ir.model.fields (custom)1:1 | Fully supported | |
| Property type classification | Custom selection field on res.partner1: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.
Real Properties gotchas
Catalog entry is mismatched — realproperties.com is a brokerage, not a CRM
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 Real Properties data model and extract via API
FlitStack AI connects to Real Properties using the available API credentials or CSV export interface. We inventory all record types (contacts, companies, deals, activities, properties), count per object, and identify custom fields and pick-list values. This audit produces a field inventory spreadsheet that becomes the basis for the mapping plan. If the Real Properties API has rate limits or pagination constraints, we adjust extraction to use batched requests with retry logic to avoid throttling.
Design Odoo schema: custom fields, crm.team, crm.stage
Before any data moves, FlitStack AI creates the custom fields on res.partner and crm.lead (property_address__c, property_type__c, property_status__c, property_value__c, property_owner_partner_id__c) via Odoo's ir.model.fields API. We also create crm.team records for each Real Properties pipeline and build the crm.stage sequence per team with probability weights. Odoo's developer mode or a service account with admin rights is required for this step. We deliver a schema setup checklist so your Odoo admin can review and approve before we proceed.
Resolve owners and users by email match
Real Properties owner_id values are resolved against Odoo res.users by email address. We run a pre-flight match before migration: any owner without a corresponding Odoo user account is flagged in a mismatch report. Your team creates the Odoo user accounts or designates a fallback user before the migration run. No record is loaded without a resolved user_id — unresolvable owners do not block migration but the record is assigned to the fallback user with a note in the audit log.
Run sample migration with field-level diff
A representative sample of 100–300 records covering contacts, companies, deals, activities, and property records migrates first to validate the end-to-end process before committing to a full cutover. FlitStack AI generates a field-level diff comparing source values against destination field values so you can verify stage mapping, custom field population, owner resolution, and property data placement. The migration team reviews the diff results and confirms the configuration before proceeding to the production migration run. This sample sign-off protects against configuration errors propagating into the full dataset.
Execute full migration with delta-pickup cutover
The full migration loads companies (res.partner with is_company=True), then contacts with parent_id linking to companies, then crm.lead records split into leads and opportunities by the defined threshold rule. Activities attach to their parent records via res_model and res_id. Property data populates the custom fields on res.partner or crm.lead per your chosen strategy. After the initial load completes, a 24–48h delta-pickup window captures any records created or modified in Real Properties during the cutover period. The audit log records every insert and update operation; one-click rollback reverts the entire migration if reconciliation fails.
Platform deep dives
Real Properties
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Real Properties and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Real Properties and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Real Properties 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
Real Properties: Not applicable.
Data volume sensitivity
Real Properties 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 Real Properties to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Real Properties 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 Real Properties
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.