CRM migration
Field-level mapping, validation, and rollback between REDA and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
REDA
Source
Odoo CRM
Destination
Compatibility
9 of 10
objects map 1:1 between REDA and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
REDA is a Salesforce-powered construction and property-management platform — its data model follows Salesforce conventions with custom objects for properties, units, leases, and financial trackers. Odoo CRM uses a different architecture: crm.lead handles both inbound leads and opportunities; res.partner unifies contacts and companies; crm.team manages sales groups; and attachments live in Odoo's filestore via ir.attachment. The migration therefore requires more than a field-name rename — REDA's custom property objects must be re-modeled as custom fields on Odoo's standard models, tenant records must split into contact and address records, and lease or deal data must translate into Odoo quotations or opportunities. FlitStack AI extracts REDA data via the Salesforce REST API, applies a schema-translation layer that maps Salesforce field types to Odoo field types (vchar, integer, selection, many2one), and loads via Odoo's XML-RPC API. Workflows, automation rules, approval chains, and page-layout configurations do not migrate — we export them as rebuild reference documents for your Odoo administrator. The migration runs in a staged sequence: partners first (res.partner parent records), then child contacts, then crm.lead records with custom field payloads, then attachments. A 24–48 hour delta-pickup window captures any records modified in REDA during the cutover before the final reconciliation.
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 REDA 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.
REDA
Contact (SFDC)
Odoo CRM
res.partner
1:1REDA's SFDC Contact records map to Odoo res.partner with type='contact'. Email, phone, address, and jobtitle transfer directly. The contact's primary Account in REDA maps to the parent partner_id in Odoo — contacts without a REDA company become standalone partners with no parent link.
REDA
Account (SFDC)
Odoo CRM
res.partner (company)
many:1REDA's SFDC Account (representing property companies, landlords, or developers) maps to Odoo res.partner with type not set (or 'company'). Name, website, industry, and address fields transfer. Multiple REDA Accounts may need merging if the same entity appears under different names — we surface duplicates before the migration runs.
REDA
Opportunity / Deal (SFDC custom)
Odoo CRM
crm.lead
1:1REDA deals or SFDC Opportunities map to Odoo crm.lead. The opportunity name becomes crm.lead name, amount maps to expected_revenue, close date maps to date_deadline, and stage name maps via value_mapping to Odoo crm.stage names. Owner assignment resolves via email match to res.users.
REDA
Custom Property Object (REDA __c)
Odoo CRM
Custom fields on crm.lead / res.partner
1:1REDA's custom property records (property name, type, address, status) have no Odoo equivalent — we re-model them as char, selection, or many2one custom fields on crm.lead. For example, a REDA Property custom object becomes a many2one field referencing a property-name selection list or a char field holding the property identifier.
REDA
Custom Unit / Lease Object (REDA __c)
Odoo CRM
Custom fields on res.partner or crm.lead
1:1REDA lease and unit records carry financial terms, start/end dates, and rent schedules. These map to Odoo custom fields on res.partner (for tenant-level lease data) or crm.lead (for deal-level property references). Date fields use Odoo's date type; currency amounts use float with a currency_id many2one.
REDA
Task / Activity (SFDC Activity)
Odoo CRM
mail.activity
1:1REDA tasks, calls, and logged activities on Contacts or Opportunities map to Odoo's mail.activity model. Subject, date, notes, and user assignment transfer. Activity type (call, email, meeting) maps to Odoo's activity_type_id selection. Original activity timestamps are preserved in the activity's create_date.
REDA
Note / Attachment (SFDC ContentDocument)
Odoo CRM
ir.attachment
1:1REDA file attachments (PDFs, images, documents stored in SFDC Files) are downloaded from Salesforce and re-uploaded to Odoo ir.attachment linked to the corresponding res.partner or crm.lead record via res_model and res_id. Original filenames and create dates are preserved as much as Odoo's attachment schema allows.
REDA
User / Owner (SFDC User)
Odoo CRM
res.users
1:1REDA owner (Salesforce User) records resolve by email match to Odoo res.users. Unmatched owners are flagged and assigned to a fallback Odoo user designated by the client before migration. Active/inactive status from SFDC maps to Odoo's active flag on res.users — inactive SFDC users become inactive Odoo users.
REDA
Campaign / Marketing Data (SFDC Campaign)
Odoo CRM
crm.tag or custom field on crm.lead
1:1SFDC Campaigns and campaign membership data have no direct Odoo CRM equivalent. We preserve campaign names and membership status as crm.tag entries on the related crm.lead or res.partner for reference. The campaign financial model (budget, costs) is not migrated as Odoo CRM does not track marketing budgets.
REDA
Lead Status / Record Type (SFDC)
Odoo CRM
crm.lead stage and type
1:1REDA lead statuses and SFDC record types map to Odoo crm.lead stage_id plus a custom type or tag field. Each REDA record type requires a corresponding Odoo stage or a custom selection field — we generate the value-mapping table during the assessment phase so all stage transitions are pre-agreed before migration.
| REDA | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact (SFDC) | res.partner1:1 | Fully supported | |
| Account (SFDC) | res.partner (company)many:1 | Fully supported | |
| Opportunity / Deal (SFDC custom) | crm.lead1:1 | Fully supported | |
| Custom Property Object (REDA __c) | Custom fields on crm.lead / res.partner1:1 | Fully supported | |
| Custom Unit / Lease Object (REDA __c) | Custom fields on res.partner or crm.lead1:1 | Fully supported | |
| Task / Activity (SFDC Activity) | mail.activity1:1 | Fully supported | |
| Note / Attachment (SFDC ContentDocument) | ir.attachment1:1 | Fully supported | |
| User / Owner (SFDC User) | res.users1:1 | Fully supported | |
| Campaign / Marketing Data (SFDC Campaign) | crm.tag or custom field on crm.lead1:1 | Fully supported | |
| Lead Status / Record Type (SFDC) | crm.lead stage and type1: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.
REDA gotchas
REDA is a Salesforce org — migrations are Salesforce-to-Salesforce at the core
Property-Tenant-Lease lookups must be preserved as a set
REDAOne.AI configurations do not transfer across platforms
Multi-currency and exchange rate data requires explicit mapping
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
Assess REDA schema and design Odoo custom field structure
FlitStack AI reads your REDA Salesforce schema via the Tooling API — standard objects (Contact, Account, Opportunity) plus all custom __c objects. We identify property references, unit records, lease data, and any custom fields on standard objects. We then produce an Odoo custom-field design document: which fields to create on crm.lead, which on res.partner, their types (char, selection, many2one, date, float), and the many2one target models (e.g., a property selection list). Your Odoo administrator creates these fields in Odoo Studio or via developer mode before data loading begins.
Extract data via Salesforce REST and Bulk API
Using scoped OAuth access to REDA's Salesforce instance, FlitStack AI extracts all Contact, Account, Opportunity, Task, and custom object records. For record sets under 50,000 rows, the Salesforce REST API handles the extraction. For larger sets, we switch to Bulk API 2.0 for parallel processing. All records are exported with original CreatedDate, LastModifiedDate, OwnerId (as Salesforce User ID), and ContentDocument links. A pre-flight check confirms that all required REDA user emails are available for owner resolution.
Transform and validate — partner deduplication and owner resolution
The extracted data passes through a transformation layer: SFDC Account names are deduplicated to prevent duplicate res.partner records; Contact and Account addresses are validated for completeness; and SFDC OwnerId values are resolved against a client-supplied list of Odoo res.users emails. Unmatched owners receive a flag in the output — the client designates a fallback Odoo user before the migration run. REDA custom object fields are mapped to the newly created Odoo custom field IDs from Step 1. All transformations are logged in a field-level diff report.
Run sample migration with field-level diff
A representative sample — typically 100–500 records spanning contacts, companies, opportunities, and one or two custom object records — is loaded into the client's Odoo instance via XML-RPC. We generate a field-level diff comparing source REDA values against destination Odoo values for every mapped field. The client reviews the diff to confirm stage mapping, custom field display, owner assignment, and partner hierarchy before the full migration commits. This step typically takes 2–4 hours and catches schema mismatches before large record volumes are processed.
Execute full migration with delta-pickup and audit log
The full record set loads in Odoo in sequenced batches: res.partner records first (accounts and contacts), then crm.lead records with custom field payloads, then mail.activity records, then ir.attachment uploads. A 24–48 hour delta-pickup window runs in parallel — any REDA records modified during the cutover are captured and applied to Odoo before final sign-off. Every operation is logged to an audit table. One-click rollback reverts all migrated records if reconciliation fails. A final reconciliation report compares Odoo record counts and field-value samples against the REDA source extract.
Platform deep dives
REDA
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 REDA 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
REDA: Not publicly documented by REDA; inherits Salesforce platform limits.
Data volume sensitivity
REDA 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 REDA to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your REDA 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 REDA
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.