CRM migration
Field-level mapping, validation, and rollback between Wise Agent and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Wise Agent
Source
Odoo CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Wise Agent and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Wise Agent organizes real estate contact data around a flat property: contacts, companies, and transaction objects stored with label tags, drip campaign associations, and property-level checklists. Odoo CRM represents the same entities across res.partner (contacts and companies merged), crm.lead (unqualified leads), and crm.opportunity (pipeline deals), with cross-references managed through Odoo's relational model rather than flat tags. The migration carries contacts with all standard fields, company records, real estate transactions mapped to Odoo opportunities, email and call activity logs, and custom Wise Agent properties transferred as Odoo custom fields. Drip campaigns, automated text sequences, and transaction templates are not migratable — their definitions export as reference CSVs so Odoo administrators can rebuild them using Odoo Studio or automation rules. FlitStack sequences the migration using Odoo's XML-RPC API, loading contacts and companies first (foreign-key resolution for partner_id on opportunities), then opportunities with custom real estate fields, then activity history. A delta-pickup window runs 24-48 hours post-cutover to capture in-flight changes in Wise Agent during the switchover 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 Wise Agent 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.
Wise Agent
Contact
Odoo CRM
res.partner
1:1Wise Agent contacts map directly to Odoo res.partner records. In Odoo, res.partner serves double duty — individual contacts and companies both live here, distinguished by the is_company boolean. Address fields, phone, email, and name map 1:1. Partner IDs resolve before opportunity records load since crm.opportunity references partner_id as a required foreign key.
Wise Agent
Company
Odoo CRM
res.partner (is_company = true)
1:1Wise Agent company records become Odoo res.partner with is_company set to true. The company name maps to name, domain/website maps to website, industry maps to industry_id (Odoo stores this as a many2one to res.partner.industry). Parent-company hierarchies in Wise Agent map to parent_id on the Odoo partner record to preserve corporate structure.
Wise Agent
Contact Label
Odoo CRM
res.partner.category_id (custom selection)
1:1Wise Agent uses label tags (buyer, seller, investor, prospect) to classify contacts. Odoo has no native label taxonomy on res.partner — partner categories exist but are many2many tags, not the flat label system Wise Agent uses. We migrate labels as a custom selection field (x_wise_label) on res.partner, preserving the exact label vocabulary from Wise Agent. Full label-to-category cross-reference exported as a CSV for Odoo admin review.
Wise Agent
Transaction
Odoo CRM
crm.opportunity
1:1Wise Agent transactions — representing real estate deals — map to Odoo crm.opportunity records. The transaction name becomes opportunity name, transaction amount becomes expected_revenue, transaction stage (active, pending, closed) maps to Odoo stage_id using a value-mapping table. Each transaction is linked to the res.partner representing the primary contact via the partner_id field.
Wise Agent
Transaction Stage
Odoo CRM
crm.stage
1:1Wise Agent transaction stages (e.g., Active Lead, Under Contract, Pending, Closed) map value-by-value to Odoo CRM stage records within the relevant team pipeline. Probability percentages from Wise Agent stage settings are applied to the mapped Odoo stage. Stage-entered dates are preserved as custom datetime fields (x_stage_entered_date) on the crm.opportunity record.
Wise Agent
MLS Property Reference
Odoo CRM
x_mls_listing_id (custom field on crm.opportunity)
1:1Wise Agent stores MLS listing IDs linked to transactions. Odoo CRM has no native MLS field. We create a custom char field (x_mls_listing_id) on crm.opportunity and store the MLS listing reference there. This field does not drive any Odoo logic — it is a reference field for the brokerage team to reconcile with their MLS export.
Wise Agent
Transaction Checklist
Odoo CRM
mail.message / Note on crm.opportunity
1:1Wise Agent transaction checklists track milestones (inspection, appraisal, loan approval, closing). Odoo has no equivalent checklist construct. Checklist items migrate as internal notes on the crm.opportunity using Odoo's mail.message system with a note flag — preserving the item description, completion status, and due date. Odoo project tasks are a more robust alternative if the brokerage wants to activate Odoo Project alongside CRM.
Wise Agent
Email Activity
Odoo CRM
mail.activity
1:1Wise Agent logged emails map to Odoo mail.activity records with activity_type_id = 'email'. Original send date becomes the activity's date_deadline, subject line maps to summary, and body content maps to note. Activities are linked to the res.partner record of the associated contact. This preserves the full email thread history on the partner timeline.
Wise Agent
Call / Meeting Activity
Odoo CRM
mail.activity (phone call type)
1:1Wise Agent logged calls and meetings become Odoo mail.activity records. Call activities use activity_type_id = 'call'; meetings use calendar.event with the meeting subject, start datetime, and duration preserved. Owner of the activity is set to the Odoo internal user matched by email from the Wise Agent agent who logged the call or meeting.
Wise Agent
Custom Property
Odoo CRM
ir.model.fields (custom field on res.partner or crm.opportunity)
1:1Wise Agent custom properties — text, date, number, and pick-list types — migrate as Odoo custom fields. Text properties become ir.model.fields of type char or text on the relevant model (res.partner or cdoo.opportunity). Date properties become date fields. Pick-list properties require the Odoo admin to create the selection field first with the exact Wise Agent option values; we then map values by name during import.
Wise Agent
Owner / Agent
Odoo CRM
res.users
1:1Wise Agent owner assignments on contacts and transactions resolve by email match against Odoo res.users.login. Unmatched owners are flagged before migration — the team either creates Odoo users for them before the run or assigns their records to a fallback internal user. This prevents crm.opportunity records landing without a valid user_id owner.
Wise Agent
Drip Campaign / Automation
Odoo CRM
No equivalent (export for rebuild)
1:1Wise Agent drip email sequences, text automation rules, and lead routing logic have no functional equivalent in Odoo CRM's automation framework. FlitStack exports campaign definitions as a structured CSV showing step order, trigger conditions, delay intervals, and message content. The Odoo admin rebuilds these using Odoo Studio automation rules or the Odoo Marketing app based on this export.
| Wise Agent | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner (is_company = true)1:1 | Fully supported | |
| Contact Label | res.partner.category_id (custom selection)1:1 | Fully supported | |
| Transaction | crm.opportunity1:1 | Fully supported | |
| Transaction Stage | crm.stage1:1 | Fully supported | |
| MLS Property Reference | x_mls_listing_id (custom field on crm.opportunity)1:1 | Fully supported | |
| Transaction Checklist | mail.message / Note on crm.opportunity1:1 | Fully supported | |
| Email Activity | mail.activity1:1 | Fully supported | |
| Call / Meeting Activity | mail.activity (phone call type)1:1 | Fully supported | |
| Custom Property | ir.model.fields (custom field on res.partner or crm.opportunity)1:1 | Fully supported | |
| Owner / Agent | res.users1:1 | Fully supported | |
| Drip Campaign / Automation | No equivalent (export for rebuild)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.
Wise Agent gotchas
No documented bulk export or bulk API endpoint
Labels are flat with no hierarchy
Transaction templates require manual reassignment post-import
Rate limits not publicly documented
Permission model is coarse on base plan
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 Wise Agent API coverage and export contact, company, transaction, and activity data
FlitStack connects to Wise Agent using OAuth 2.0 with scopes for contacts, companies, transactions, calendar, and marketing data. We pull contacts and companies first to map field-level structure, then transaction records with their stage history, checklist items, and agent owner assignments. Activity logs (emails, calls, meetings) export as separate payloads with foreign keys to the parent contact records. A data quality report flags duplicate contacts, records missing required fields (email, name), and Wise Agent custom properties that need Odoo custom field creation before the import run.
Create Odoo custom fields and stage pipeline structure before importing data
Before data lands, FlitStack creates all required Odoo custom fields identified in the audit phase: x_wise_label on res.partner, x_property_address, x_mls_listing_id, x_wise_transaction_id, x_original_create_date, x_source_system_id, and x_stage_entered_date on crm.opportunity. Simultaneously, Odoo CRM stage records are created to mirror Wise Agent transaction stages (Active Lead, Under Contract, Pending, Closed) with probability percentages and forecast categories set per the source system. This schema preparation step is delivered as a setup checklist so Odoo Community users can create fields manually via Settings > Technical > Custom Fields if they prefer to avoid XML-RPC.
Resolve Wise Agent owners and agents against Odoo res.users by email
Wise Agent stores owner assignments as agent names and email addresses on contacts and transactions. FlitStack builds an owner resolution table: each unique Wise Agent agent email is matched against Odoo res.users.login. Contacts and transactions with matched owners assign correctly to the Odoo user_id. Unmatched owners surface in a pre-migration exception report — teams either create Odoo users for them before the run or designate a fallback user to receive orphaned records. No opportunity or contact loads into Odoo without a valid user_id owner.
Run sample migration of 100-500 records with field-level diff and validation
A representative slice of contacts, companies, transactions, and activities migrates first — typically 100-500 records spanning different Wise Agent labels, transaction stages, and owner assignments. FlitStack generates a field-level diff report comparing the Wise Agent source values against the Odoo destination values for every mapped field. The team reviews label mapping, stage mapping, custom property rendering, owner resolution, and activity association before committing to the full run. Any field that shows a discrepancy — a pick-list value that failed to map, a date that shifted timezone, a required Odoo field that landed blank — is corrected in the mapping plan before the full migration proceeds.
Execute full migration with delta-pickup window and one-click rollback available
The full migration runs against Odoo — contacts and companies load first (foreign key dependency for res.partner on crm.opportunity), then transactions/opportunities with stage mapping and custom real estate fields, then activity history linked to the newly created partner and opportunity IDs. A delta-pickup window of 24-48 hours captures any records created or modified in Wise Agent during the cutover period. The FlitStack audit log records every create, update, and skip operation. If reconciliation at the end of the delta window reveals missing or mis-mapped records, one-click rollback reverts the Odoo environment to its pre-migration state so the team can re-run with corrected mapping without data loss.
Export drip campaign definitions and deliver post-migration runbook for Odoo automation rebuild
FlitStack exports Wise Agent drip campaign definitions as a structured CSV showing step order, trigger type, delay between steps, subject line, body content, and associated contact segment. This export serves as the functional specification for rebuilding the sequences in Odoo Studio automation rules or the Odoo Marketing app. The post-migration runbook also documents the required Odoo email alias configuration for lead routing, the partner category-to-label cross-reference for contact segmentation, and the checklist-to-note migration summary so the Odoo admin can evaluate whether Odoo Project tasks are a better long-term replacement for the transaction checklist workflow.
Platform deep dives
Wise Agent
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 Wise Agent 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
Wise Agent: Not publicly documented.
Data volume sensitivity
Wise Agent 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 Wise Agent to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Wise Agent 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 Wise Agent
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.