CRM migration

Migrate from Brokerkit to Odoo CRM

Field-level mapping, validation, and rollback between Brokerkit and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.

Brokerkit logo

Brokerkit

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

100%

10 of 10

objects map 1:1 between Brokerkit and Odoo CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Brokerkit logo

Brokerkit

What's pushing teams away

  • The platform lacks deep customization options, leaving brokerages with non-standard recruiting workflows forced to work around the tool's opinionated structure.
  • Canadian market integrations do not exist, and no native equivalents to US tools like RealMetrix means international teams have no path forward within the platform.
  • Reporting and analytics fall short for teams that need pipeline attribution broken down beyond basic source-level tracking.

Choosing

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How Brokerkit objects map to Odoo CRM

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

maps to

Odoo CRM

res.partner

1:1
Fully supported

Brokerkit 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

maps to

Odoo CRM

crm.lead (type='opportunity')

1:1
Fully supported

Each 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

maps to

Odoo CRM

res.partner

1:1
Fully supported

Brokerkit 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

maps to

Odoo CRM

res.partner

1:1
Fully supported

Brokerkit 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

maps to

Odoo CRM

crm.lead (type='opportunity')

1:1
Fully supported

Brokerkit 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

maps to

Odoo CRM

crm.phonecall / mail.message

1:1
Fully supported

Brokerkit 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)

maps to

Odoo CRM

Custom field on res.partner

1:1
Fully supported

Brokerkit 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)

maps to

Odoo CRM

Custom field on crm.lead

1:1
Fully supported

Brokerkit 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

maps to

Odoo CRM

crm.stage (via crm.team)

1:1
Fully supported

Brokerkit 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

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

File 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.

Gotchas + challenges

What specifically takes care here

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 logo

Brokerkit gotchas

High

CSV exports truncate long text fields

High

No public API means migration tooling is limited

Medium

Plan tier limits restrict what data exists

Medium

Integration connections do not transfer on migration

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • Brokerkit Agent records require transformation into Odoo's partner model

    Odoo has no Agent object — agent data from Brokerkit must land as res.partner records. Any agent-specific custom properties (license number, recruiting status, licensing state) require custom fields pre-created on res.partner before import. If a Brokerkit agent has no email address, Odoo cannot auto-link activities to the partner record, and the activity will attach to the related deal instead. We flag agents without emails before migration and either create a placeholder partner with no email or attach orphan activities to the nearest res.partner.

  • Brokerkit pipeline stages need Odoo stage records created per crm.team

    Brokerkit pipelines translate to Odoo crm.team records, each with its own set of stage_id records. If your Brokerkit setup has a recruiting pipeline and a referral pipeline, those become two crm.team records in Odoo, each with independent stage definitions. Stage probability values are not stored on the crm.lead record in Odoo — they live on the stage definition — so we store Brokerkit's probability values in a custom field (x_stage_probability) on crm.lead for reporting continuity. The migration plan delivered before migration includes the exact stage-to-stage mapping and which crm.team each stage belongs to.

  • Multi-company contacts collapse to a single parent_id in Odoo

    Brokerkit allows a Contact record to associate with multiple Company records simultaneously. Odoo res.partner supports only a single parent_id for the company relationship, which creates a constraint when migrating from Brokerkit's multi-company contact model. During migration, contacts associated with multiple Brokerkit companies have their primary company (determined by the most-recently-modified association by default, or by a custom rule you specify before migration) mapped to parent_id on the Odoo res.partner record. Secondary company associations are surfaced as custom fields (x_secondary_company_1, x_secondary_company_2, etc.) for manual reconciliation in Odoo after the migration completes. Your team can decide whether to consolidate these relationships or maintain them as-is within Odoo's custom field structure.

  • Odoo API rate limits affect large-volume migration windows

    Odoo's XML-RPC API has no formal published rate limit on self-hosted or Odoo Online instances, but Odoo Online enforces a request-throttling mechanism that triggers 429 responses under sustained high-volume imports. For migrations exceeding 10,000 records, we implement exponential backoff and chunk the load into batches of 500 records per request. Odoo Community (self-hosted) instances are limited by the server's own worker configuration — we recommend increasing the worker count before migration to avoid timeouts on bulk writes.

  • Brokerkit's deal owner resolution depends on Odoo user email matching

    Odoo CRM resolves crm.lead ownership to res.users records — there is no equivalent to Brokerkit's internal owner_id numeric reference. We match Brokerkit owner_id to Odoo res.users by email. If an owner in Brokerkit has no corresponding user in Odoo (e.g., a recruiter who will not have Odoo access), their deals are flagged and assigned to a fallback owner specified by your team. Ownership for Agent records (res.partner) follows the same email-match logic.

Migration approach

Six steps for a successful Brokerkit to Odoo CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

Context on both ends of the pair

Brokerkit logo

Brokerkit

Source

Strengths

  • Tiered plans scale from solo broker to 10-seat brokerage with predictable per-user pricing.
  • Built-in SMS and email follow-up sequences without requiring a separate engagement platform.
  • Multi-admin account support on Core and Expansion tiers enables office manager delegation.
  • Strong customer support reputation with responsive ticket resolution and webinar-based onboarding resources.

Weaknesses

  • No public API documentation means migration relies on CSV exports, which can truncate long text fields.
  • Canadian market has no integrations or localization, making the platform US-only for practical purposes.
  • Limited customization compared to general-purpose CRMs like HubSpot or Follow Up Boss.
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

Complexity grading

How hard is this migration?

Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Brokerkit and Odoo CRM.

  • Object compatibility

    B

    1 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Brokerkit: Not publicly documented — confirm with Brokerkit support during scoping..

  • Data volume sensitivity

    B

    Brokerkit doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Brokerkit to Odoo CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Brokerkit to Odoo CRM data migrations

Answers to the questions buyers ask most during Brokerkit to Odoo CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most Brokerkit-to-Odoo CRM migrations complete in 48–72 hours of clock time for under 20,000 records. Larger setups with over 100,000 agent, contact, and deal records, or those with extensive custom properties per agent, extend to 7–12 days. The longest planning step is creating Odoo custom fields and stage definitions per crm.team before data lands — we deliver the schema plan before the migration begins so your Odoo instance is ready on day one.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Brokerkit.
Land in Odoo CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day