CRM migration
Field-level mapping, validation, and rollback between Funnel Leasing and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Funnel Leasing
Source
Odoo CRM
Destination
Compatibility
11 of 11
objects map 1:1 between Funnel Leasing and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Funnel Leasing is a renter-centric CRM built for multifamily operators — its data model centers on Prospects, Properties, Units, and the full leasing lifecycle from inquiry to approved application. Odoo CRM uses a general-purpose crm.lead model that splits between Lead and Opportunity views, with res.partner for contacts and crm.team for sales group assignments. The migration must map Funnel's Prospect object to Odoo's crm.lead, Funnel's Contact records to res.partner, communication logs to Odoo's mail.message threading, and any custom leasing fields (property interest, unit preference, lease term) to Odoo custom fields on the lead model. Odoo has no native concept of lease terms or unit availability — those require custom fields and potentially the Odoo Property module if your team uses it. Funnel's AI workflow automations (lead routing, follow-up sequences) do not migrate; they must be rebuilt in Odoo using its Automation menu or Studio. We access Funnel via its Customer API using scoped read permissions, export in JSON batches, then load into Odoo via XML-RPC with a staging validation pass before the full run. Owner resolution maps Funnel user emails to Odoo res.users login accounts — unmatched owners receive a fallback assignment flagged for admin review. A 24–48 hour delta-pickup window closes after the cutover migration to capture any Funnel records modified during the switchover.
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 Funnel Leasing 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.
Funnel Leasing
Prospect
Odoo CRM
crm.lead
1:1Funnel Prospect maps directly to Odoo crm.lead. In Odoo, crm.lead can represent both a Lead (unqualified) and an Opportunity (qualified deal). We import Funnel Prospects as crm.lead records in the New stage, then update stage_id to reflect Funnel's pipeline stage mapping. The lead's name field derives from the prospect's first name + last name or company name.
Funnel Leasing
Contact
Odoo CRM
res.partner
1:1Funnel Contact maps to Odoo res.partner. Odoo res.partner serves as both the contact/company master record — individual renters map as individual partners, property management contacts map as company partners. Partner addresses, phone, email, and website fields align directly with Funnel's Contact object fields.
Funnel Leasing
Prospect (when qualified)
Odoo CRM
crm.lead as Opportunity
1:1When a Funnel Prospect reaches a qualifying stage (Application Submitted or later), we flag the Odoo crm.lead with type='opportunity' to transition it from Lead view to Opportunity/Kanban pipeline view in Odoo. The transformation happens by evaluating Funnel's stage_name field against a mapping table defined in the migration plan before the run.
Funnel Leasing
Property
Odoo CRM
product.product or x_property
1:1Funnel Property objects have no native equivalent in Odoo CRM. If your team uses Odoo Inventory or Real Estate module, Properties map to product.product or estate.property. Otherwise, we create a custom x_property model in Odoo to store Property records with fields: name, address, unit_count, property_type. This requires Odoo custom module development or Enterprise Studio configuration.
Funnel Leasing
Unit
Odoo CRM
product.product (variant)
1:1Funnel Unit records (individual apartments within a Property) map to product.product variants when Odoo Inventory is available. Units carry fields like unit_number, bedrooms, bathrooms, market_rent, and availability_status. When Odoo Inventory is not in scope, Units migrate as custom fields on the related Property record in the x_property model.
Funnel Leasing
Communication Log (email, text, call)
Odoo CRM
mail.message
1:1Funnel's omnichannel communication logs (email threads, SMS messages, call recordings with notes) map to Odoo mail.message records linked to the corresponding res.partner. Original timestamps and direction (inbound/outbound) are preserved. Call duration and disposition are stored in custom fields on the message record.
Funnel Leasing
Appointment / Tour
Odoo CRM
calendar.event
1:1Funnel's property tour and appointment records map to Odoo calendar.event entries. The event links to the related crm.lead (prospect) and res.partner (contact). Start/end times, location (property address), and assigned leasing agent (mapped via email to Odoo user) are preserved. Odoo Calendar integration with email is handled by the mail module.
Funnel Leasing
Lease Application
Odoo CRM
Custom x_lease_application model
1:1Funnel Lease Application records (applicant data, income verification, background check status, co-applicant details) have no Odoo CRM equivalent. We create an x_lease_application custom model linked to the crm.lead via a many2one relationship. Fields like application_status, submitted_date, approval_date, and income_to_rent_ratio are stored as custom fields on this model.
Funnel Leasing
User / Owner
Odoo CRM
res.users
1:1Funnel user accounts (leasing agents, property managers) map to Odoo res.users by email address matching. Active Funnel users who have a corresponding Odoo login receive their records via owner_id on crm.lead. Funnel users without an Odoo account are flagged and assigned to a fallback migration user pending admin provisioning.
Funnel Leasing
Tag / Label
Odoo CRM
crm.tag
1:1Funnel's prospect tagging system (e.g., 'referral', 'renewal', 'high‑intent') maps to Odoo's crm.tag records. Tags are applied to crm.lead records via the tag_ids many2many relationship. Funnel tags that have no matching Odoo tag are automatically created in Odoo during the migration, ensuring every source tag appears on the corresponding leads after the import completes.
Funnel Leasing
Custom Prospect Property (e.g., desired_bedrooms, move_in_date)
Odoo CRM
x_ (Community) or Studio custom field on crm.lead
1:1Funnel allows unlimited custom properties on Prospect and Contact objects. Each custom property requires a corresponding Odoo field creation before migration. We inventory all Funnel custom properties, map their data types (text, number, date, picklist) to Odoo field types (char, float, datetime, selection), and create the fields on crm.lead or res.partner via Odoo Studio (Enterprise) or Python model definition (Community).
| Funnel Leasing | Odoo CRM | Compatibility | |
|---|---|---|---|
| Prospect | crm.lead1:1 | Fully supported | |
| Contact | res.partner1:1 | Fully supported | |
| Prospect (when qualified) | crm.lead as Opportunity1:1 | Fully supported | |
| Property | product.product or x_property1:1 | Fully supported | |
| Unit | product.product (variant)1:1 | Fully supported | |
| Communication Log (email, text, call) | mail.message1:1 | Fully supported | |
| Appointment / Tour | calendar.event1:1 | Fully supported | |
| Lease Application | Custom x_lease_application model1:1 | Fully supported | |
| User / Owner | res.users1:1 | Fully supported | |
| Tag / Label | crm.tag1:1 | Fully supported | |
| Custom Prospect Property (e.g., desired_bedrooms, move_in_date) | x_ (Community) or Studio custom field on crm.lead1: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.
Funnel Leasing gotchas
Funnel is not a party to rental transactions
PMS integration fees are bundled into per-unit pricing
No publicly documented bulk export API for large portfolios
AI-generated fields are proprietary and may not map directly to destination fields
ResApp resident portal accounts are not migratable
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 Funnel custom properties and Odoo custom field plan
FlitStack inventories all Funnel Prospect and Contact custom properties via the Funnel Customer API. We compare the full property list against your target Odoo instance's existing fields. A custom field creation plan is generated, specifying field name, Odoo internal name (x_ prefix for Community), data type, and target model (crm.lead or res.partner). Your Odoo admin or our team creates these fields before migration validation begins.
Design Funnel-to-Odoo stage and team mapping
We extract Funnel's pipeline stages and assigned agent data via API. A stage mapping table is built: each Funnel stage name maps to a specific Odoo crm.stage record under a defined crm.team. If your Odoo has multiple teams (e.g., by property portfolio), we map Funnel's assigned agent to the appropriate team_id in Odoo so stage assignments resolve correctly on load.
Run a sample migration with field-level diff
A representative slice of 100–500 records — spanning Prospects across all Funnel stages, Contacts, and a sample of communication logs — migrates first. We generate a field-level diff comparing source values from Funnel against destination values written to Odoo. You verify stage mapping, custom field population, owner resolution, and communication log threading before the full run commits. Any mapping errors are corrected in the transformation layer before re-running the sample.
Execute full migration with delta-pickup window
The full Funnel dataset migrates to Odoo via XML‑RPC in batched API calls, typically 500 records per request to stay within Odoo's session limits. After the initial load completes, a delta‑pickup window of 24–48 hours captures any records created or modified in Funnel during the cutover period. Owner resolution logs unmatched Funnel users for admin review, while the audit log records every record written, transformed, or skipped so reconciliation is fully traceable.
Reconciliation report and rollback readiness
FlitStack generates a reconciliation report comparing Funnel record counts by object and stage against Odoo crm.lead and res.partner counts. Any gaps are flagged with the source Funnel ID for manual review. One-click rollback is available if reconciliation fails — this reverts Odoo to its pre-migration state by removing migrated records using the FlitStack audit log. The rollback is not a partial operation; it is a full reversion scoped to the migration run ID.
Platform deep dives
Funnel Leasing
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Funnel Leasing and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Funnel Leasing and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Funnel Leasing 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
Funnel Leasing: Not publicly documented..
Data volume sensitivity
Funnel Leasing 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 Funnel Leasing to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Funnel Leasing 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 Funnel Leasing
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.