CRM migration
Field-level mapping, validation, and rollback between Propertybase and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Propertybase
Source
Odoo CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Propertybase and Odoo CRM.
Complexity
BStandard
Timeline
3–7 days
Overview
Propertybase is a real-estate CRM built on the Salesforce platform — its data model follows Salesforce conventions: Contacts with record types for Individual vs. Company, Enquiries linked to Listings via Favorites, and Offers/Contracts as junction objects on Listings. Propertybase stores Listings as a custom object with rich property-address fields, listing status, and agent assignments. Odoo CRM models contacts and companies as res.partner records, leads and opportunities as crm.lead records, and has no native Listings object. We extract Propertybase data via the Salesforce REST API and load it into Odoo via XML-RPC, mapping Company Contacts to res.partner with company_type='company', Individual Contacts to res.partner with company_type='person', and Enquiries/Offers to crm.lead with a preserved 'Source: Propertybase' tag. Listings require custom fields on crm.lead since Odoo lacks a native real-estate module. Workflows, validation rules, and automation triggers do not migrate — these must be rebuilt in Odoo's automation framework. Our migration tool handles relationship resolution (parent companies, contact-company links), owner mapping by email match against Odoo users, and a 24–48 hour delta-pickup window for records modified during cutover.
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 Propertybase 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.
Propertybase
Company Contact
Odoo CRM
res.partner
1:1Propertybase Company Contacts map directly to Odoo res.partner records with company_type='company'. The company name, domain, industry, employee count, and annual revenue fields translate to Odoo's name, website, industry, employees, and revenue fields respectively. Physical address, phone, and email also map to the corresponding Odoo partner fields, preserving the original address hierarchy.
Propertybase
Individual Contact
Odoo CRM
res.partner
1:1Propertybase Individual Contacts (buyers, tenants) map to Odoo res.partner with company_type='person'. These records do not link to a Propertybase company; in Odoo they get parent_id=False unless a parent company is specified during migration. The SystemIsIndividual flag is used to distinguish from Company Contacts.
Propertybase
Parent/Child Company Hierarchy
Odoo CRM
res.partner (parent_id)
1:1Propertybase's parent_company hierarchy uses the hs_parent_company_id field. In Odoo this maps to res.partner.parent_id — the parent company must be migrated first so the child record can reference it. Circular references (A parent of B, B parent of A) are flagged during the planning scan.
Propertybase
Enquiry / Request
Odoo CRM
crm.lead
1:1Propertybase Enquiries (inbound requests linked to Listings via Favorites) map to Odoo crm.lead with type='lead'. The original record type name is preserved as a crm.tag for segmentation. Enquiry status (New, Working, Unqualified, Converted) maps to Odoo's stage_id values. Additionally, a 'Source: Propertybase' tag is attached, and any linked Listing ID is stored in a custom field for reference.
Propertybase
Listing (Project or Individual)
Odoo CRM
crm.lead (custom fields)
1:1Propertybase Listings have no Odoo CRM native equivalent. We create custom Char fields on crm.lead: Listing_Address, Listing_City, Listing_State, Listing_Zip, Listing_Price, Listing_Status, Listing_Agent, and Listing_ID. For brokerages with hundreds of active listings, we recommend the Odoo Real Estate app (Community module) as a future-state option; the migration plan documents the custom-field layout.
Propertybase
Offer / Contract
Odoo CRM
crm.lead
1:1Propertybase Offers/Contracts link a Listing to a purchaser contact and carry offer_amount, offer_status, and offer_date. These map to crm.lead as opportunities (type='opportunity') with the offer_amount stored in expected_revenue, offer_status in stage_name, and the purchaser contact linked via partner_id. Listing linkage is preserved via the custom Listing_ID field.
Propertybase
Favorite (Listing–Enquiry association)
Odoo CRM
crm.lead (custom relation)
1:1Propertybase Favorites create a many-to-many link between Enquiries and Listings. Odoo CRM has no native equivalent for this association. We preserve the mapping as a text blob in a custom field (Propertybase_Favorite_Listings__c) for reference — your team can recreate using Odoo CRM tags or a custom Many2many field.
Propertybase
Activity History (calls, emails, meetings)
Odoo CRM
mail.activity
1:1Propertybase activity logs (call duration, email subject, meeting date) map to Odoo mail.activity records linked to the parent res.partner or crm.lead. Original activity dates and descriptions are preserved. Propertybase's activity-type picklist maps to Odoo's activity_type_id. Attachments associated with activities are also migrated to ir.attachment, and the responsible Odoo user is assigned via the user_id field.
Propertybase
Attachment / File
Odoo CRM
ir.attachment
1:1Propertybase files attached to Listings, Enquiries, or Contacts are downloaded from Salesforce and re-uploaded to Odoo's ir.attachment model, linked to the corresponding res.partner or crm.lead record. File size limits (Odoo default 25MB per attachment) are enforced during migration. Any files exceeding the limit are flagged for manual review.
Propertybase
Workflow Rules, Process Builder Flows
Odoo CRM
No equivalent
1:1Propertybase automation (Workflow Rules, Salesforce Flow, Process Builder) does not migrate to Odoo. These must be rebuilt in Odoo's automation tools (automated actions, server actions, CRM activities). We export your Propertybase workflow definitions as a JSON specification for your Odoo admin to reference during the rebuild phase.
Propertybase
Reports and Dashboards
Odoo CRM
No equivalent
1:1Propertybase Reports and Salesforce Analytics (wave) do not migrate — their underlying data migrates, but the report definitions (filters, groupings, charts) are destination-platform constructs. Odoo reporting uses its own dashboard and spreadsheet tools. We flag the report list during discovery so your team can prioritize rebuilds.
Propertybase
Owner / Sales Rep
Odoo CRM
res.users (user_id on crm.lead)
1:1Propertybase owner_id is resolved by matching the owner's email address to an Odoo res.users record. Unmatched owners are flagged before migration; your team either creates the Odoo user first or assigns their records to a fallback user. This prevents crm.lead records from landing without a responsible user.
| Propertybase | Odoo CRM | Compatibility | |
|---|---|---|---|
| Company Contact | res.partner1:1 | Fully supported | |
| Individual Contact | res.partner1:1 | Fully supported | |
| Parent/Child Company Hierarchy | res.partner (parent_id)1:1 | Fully supported | |
| Enquiry / Request | crm.lead1:1 | Fully supported | |
| Listing (Project or Individual) | crm.lead (custom fields)1:1 | Fully supported | |
| Offer / Contract | crm.lead1:1 | Fully supported | |
| Favorite (Listing–Enquiry association) | crm.lead (custom relation)1:1 | Fully supported | |
| Activity History (calls, emails, meetings) | mail.activity1:1 | Fully supported | |
| Attachment / File | ir.attachment1:1 | Fully supported | |
| Workflow Rules, Process Builder Flows | No equivalent1:1 | Fully supported | |
| Reports and Dashboards | No equivalent1:1 | Fully supported | |
| Owner / Sales Rep | res.users (user_id on crm.lead)1: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.
Propertybase gotchas
Formula and roll-up summary fields excluded from exports
Ghost company records for Individual Contacts
Workflow rules do not export — automations must be rebuilt
Media Loader assets require separate migration path
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 Propertybase data and build the Odoo schema plan
FlitStack AI connects to your Propertybase org via the Salesforce REST API and runs a discovery scan of all standard and custom objects, field metadata, and relationship IDs. We produce a Schema Plan document that specifies: the custom fields to create on crm.lead for Listings (x_listing_address, x_listing_price, x_listing_status, etc.), the Odoo crm.tag values to create from Propertybase record types, the owner resolution mapping, and any circular parent-company references to resolve before migration. Your Odoo admin creates the custom fields in your Odoo instance before Step 3.
Extract and cleanse Propertybase records
We extract all Company Contacts, Individual Contacts, Companies, Enquiries, Listings, and Offers from Propertybase via the Salesforce Bulk API or REST API depending on volume. Records are validated against your Odoo schema plan: email format normalization, duplicate detection across Individual/Company Contact record types, parent-company ID resolution, and listing-ID cross-reference validation. Dirty records (missing required fields, orphaned foreign keys) are flagged in a Cleansing Report for your team to review before the migration run.
Migrate parent entities first (Companies, Individual Contacts), then child entities
Odoo requires parent_id to exist before child records reference it. We sequence the migration load as follows: first res.partner records for Companies, then res.partner for Individual Contacts (with parent_id resolved), then crm.lead for Enquiries and Offers (with partner_id and user_id resolved). Listings are loaded into crm.lead with the custom listing fields populated. Favorite records (Enquiry-to-Listing associations) are preserved as a text field until your team sets up a proper Odoo Many2many relation. Activities and attachments load last, linked to their parent records.
Run sample migration with field-level diff and reconcile
A representative slice of records (typically 200–500) migrates first, spanning all object types. FlitStack AI generates a field-level diff report comparing source values in Propertybase against the target values in Odoo — you can verify that listing_address landed in x_listing_address, enquiry status mapped to the correct crm.stage, and owner emails resolved to Odoo users. Any mapping errors are corrected before the full run commits. You sign off on the sample report before we proceed to the full load.
Full migration with delta-pickup and audit log
The full dataset loads into Odoo. A delta-pickup window (24–48 hours from cutover start) monitors Propertybase for any new or modified records that arrived during the migration window — these are pulled in a second incremental run. Every operation is written to a migration audit log (operation, record ID, before/after values, timestamp, operator). If reconciliation fails, one-click rollback reverts the Odoo instance to its pre-migration state using the audit log. We deliver the final audit log, reconciliation summary, and the Propertybase workflow-export JSON as part of the handover package.
Platform deep dives
Propertybase
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 Propertybase 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
Propertybase: Salesforce API limits apply — not publicly documented per Propertybase tier.
Data volume sensitivity
Propertybase exposes a bulk API — large-volume migrations stream efficiently.
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 Propertybase to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Propertybase 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 Propertybase
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.