CRM migration
Field-level mapping, validation, and rollback between Brokerkit and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Brokerkit
Source
Odoo CRM
Destination
Compatibility
10 of 10
objects map 1:1 between Brokerkit and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Brokerkit organizes real estate brokerages around agents, their recruiting pipelines, and agent-level activities. Its data model centers on an Agent object with recruiting status, source tracking, and follow-up history, alongside Contacts, Companies, and Deals that mirror a standard CRM structure but carry real-estate-specific properties. Odoo CRM stores everything as crm.lead (for Leads and Opportunities) and res.partner (for Contacts and Companies), using a unified partner model where the same record can serve as both a contact and a company depending on its type field. Odoo distinguishes Leads from Opportunities within the same crm.lead object via the type field, and uses stage_id to represent pipeline stages with probability and lost_reason fields for closed states. Custom fields in Odoo are defined in technical settings and inherit from the base model, requiring explicit field creation before data lands. We extract Brokerkit's agent and recruiting records via their API, normalize the schema into Odoo's partner and lead objects, create the necessary custom fields on res.partner and crm.lead before migration, and load via Odoo's XML-RPC API with owner resolution by email match. Workflows, templates, and automation sequences are not migratable — we export Brokerkit's workflow definitions as a structured JSON reference so your Odoo admin can rebuild them in Odoo's Automations or Studio. The migration runs in a test-then-production sequence with a delta-pickup window capturing any Brokerkit 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 Brokerkit 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.
Brokerkit
Agent
Odoo CRM
res.partner
1:1Brokerkit Agent records become res.partner records with type='contact'. Agent-level fields (licensing info, recruiting source, recruiting status) migrate as custom fields on res.partner. The agent's email becomes the res.partner email; a name field is constructed from firstname and lastname if available. Owner assignment resolves by matching the Brokerkit owner email to a res.users record in Odoo.
Brokerkit
Agent.recruiting_pipeline
Odoo CRM
crm.lead (type='opportunity')
1:1Each Brokerkit recruiting pipeline maps to a crm.lead record with type='opportunity' in Odoo. The pipeline name becomes the crm.lead name field. The current pipeline stage in Brokerkit maps to stage_id on the Odoo crm.lead, resolving the stage by name within the target crm.team. Pipeline stage probabilities in Brokerkit are not directly importable — we store them as a custom field on crm.lead for reporting reference.
Brokerkit
Contact
Odoo CRM
res.partner
1:1Brokerkit Contact records map 1:1 to res.partner records with type='contact'. Standard fields (name, email, phone, address) pass through directly. A parent company relationship in Brokerkit translates to parent_id on the Odoo res.partner. If the Contact has no company association in Brokerkit, we attach it to a default 'Unassigned' res.partner record flagged as a company stub.
Brokerkit
Company
Odoo CRM
res.partner
1:1Brokerkit Company records map to res.partner records with type='company'. The company name populates the name field, domain maps to website, industry to industry (as a selection field with value mapping), and employee count to employee_count. Parent-company hierarchies in Brokerkit map to parent_id on the Odoo res.partner — the parent company must be migrated first or circular reference is flagged.
Brokerkit
Deal
Odoo CRM
crm.lead (type='opportunity')
1:1Brokerkit Deal records map to Odoo crm.lead with type='opportunity'. The deal name becomes crm.lead name, amount maps to planned_revenue, close date maps to date_deadline, and stage maps to stage_id via value mapping against the Odoo pipeline's stage definitions. Brokerkit deal owner resolves by email match to Odoo res.users.
Brokerkit
Activity / Follow-up
Odoo CRM
crm.phonecall / mail.message
1:1Brokerkit follow-up activities and call logs map to Odoo's crm.phonecall model for calls and mail.message for note-type activities. Original timestamps and owners are preserved. Odoo's crm.phonecall requires a name field (constructed from the activity type and related partner) and a duration if available from Brokerkit's log data.
Brokerkit
Custom Property (Agent-level)
Odoo CRM
Custom field on res.partner
1:1Brokerkit custom properties on Agent records that have no Odoo equivalent become custom fields on res.partner (x_agent_license, x_recruiting_source, etc.). Custom fields must be pre-created in Odoo Settings > Technical > Fields before migration. Field type is inferred from Brokerkit's property type (text, number, date, pick-list).
Brokerkit
Custom Property (Deal-level)
Odoo CRM
Custom field on crm.lead
1:1Brokerkit deal-level custom properties migrate as custom fields on crm.lead (x_deal_commission_type, x_referral_source, etc.). Each custom field requires creation in Odoo before import. For pick-list type properties, we create a selection field and perform value-by-value mapping from Brokerkit values to Odoo selection options.
Brokerkit
Pipeline Stage
Odoo CRM
crm.stage (via crm.team)
1:1Brokerkit pipeline stage names map to Odoo stage records. Stage names that have no exact Odoo match get created as new stages within the target crm.team. We preserve Brokerkit stage order as sequence values in Odoo. Stage probability values are stored in a custom float field (x_stage_probability) for reporting continuity since Odoo's stage probability is defined per stage and not directly importable.
Brokerkit
Attachment / File
Odoo CRM
ir.attachment
1:1File attachments associated with Agent, Contact, or Deal records in Brokerkit are re-uploaded to Odoo's ir.attachment model, linked to the corresponding res.partner or crm.lead record via res_model and res_id. Odoo's attachment storage backend (file system or database) depends on Odoo configuration — we preserve the original file name and content type.
| Brokerkit | Odoo CRM | Compatibility | |
|---|---|---|---|
| Agent | res.partner1:1 | Fully supported | |
| Agent.recruiting_pipeline | crm.lead (type='opportunity')1:1 | Fully supported | |
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner1:1 | Fully supported | |
| Deal | crm.lead (type='opportunity')1:1 | Fully supported | |
| Activity / Follow-up | crm.phonecall / mail.message1:1 | Fully supported | |
| Custom Property (Agent-level) | Custom field on res.partner1:1 | Fully supported | |
| Custom Property (Deal-level) | Custom field on crm.lead1:1 | Fully supported | |
| Pipeline Stage | crm.stage (via crm.team)1:1 | Fully supported | |
| Attachment / File | ir.attachment1: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.
Brokerkit gotchas
CSV exports truncate long text fields
No public API means migration tooling is limited
Plan tier limits restrict what data exists
Integration connections do not transfer on migration
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 Brokerkit data and define Odoo schema
We extract a full export of all Brokerkit objects via their API: Agent, Contact, Company, Deal, Pipeline, and Activity records. We audit field types, identify custom properties, and flag records with missing required fields (especially agents without email). We deliver a schema setup plan specifying every Odoo custom field to create on res.partner and crm.lead, every stage to define per crm.team, and the value-mapping tables for pick-list fields. Your Odoo admin (or our team) creates these before data lands.
Cleanse and deduplicate Brokerkit data
We remove duplicate Agent, Contact, and Company records based on email and name matching. We resolve parent-company dependencies so the correct company records are migrated first, preventing orphaned Contact records. Brokerkit deals without a valid owner are flagged and mapped to your designated fallback owner. Any Brokerkit records with stale close dates (deals closed over 24 months ago) are archived by default unless you specify a retention policy — we surface this decision before migration runs.
Run a sample migration with field-level diff
A representative slice — typically 200–500 records spanning Agents, Contacts, Companies, Deals, and Activities — migrates to your Odoo instance first. We generate a field-level diff comparing source Brokerkit values against the destination Odoo fields, covering field-level accuracy, owner resolution, and stage mapping. You review the diff and approve before the full run commits. This step catches incorrect value mappings or missing custom field definitions before they affect your production data.
Execute full migration with delta-pickup window
The full migration loads all Brokerkit records into Odoo using Odoo's XML-RPC API in sequenced batches. Companies load first (res.partner type='company'), then Contacts and Agents (res.partner type='contact'), then Deals (crm.lead), then Activities (crm.phonecall and mail.message). A delta-pickup window of 24–48 hours after the main run captures any Brokerkit records created or modified during the cutover. All operations are logged in an audit trail, and one-click rollback reverts the full import if reconciliation fails.
Post-migration reconciliation and workflow reference export
We run a reconciliation report comparing record counts, field-level accuracy, and deal amount totals between Brokerkit and Odoo. Unmatched or dropped records are re-imported. We export your Brokerkit workflow definitions (automation rules, sequence logic, follow-up templates) as a structured JSON file that your Odoo admin can use to rebuild automations in Odoo's Studio or Automations module. Reports and dashboards from Brokerkit do not migrate — their underlying data is available in Odoo for rebuilding.
Platform deep dives
Brokerkit
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 Brokerkit 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
Brokerkit: Not publicly documented — confirm with Brokerkit support during scoping..
Data volume sensitivity
Brokerkit 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 Brokerkit to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Brokerkit 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 Brokerkit
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.