CRM migration

Migrate from Agent Legend to Odoo CRM

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

Agent Legend logo

Agent Legend

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between Agent Legend and Odoo CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Teams migrate from Agent Legend to Odoo CRM to escape the per-contact consumption pricing model that inflates costs as contact volumes grow, and to consolidate CRM operations into a full ERP suite. Agent Legend serves insurance agents, real estate professionals, and mortgage brokers well as an AI-powered standalone CRM with Lily lead scoring and campaign sequencing. Odoo CRM is one module inside Odoo's open-source all-in-one business suite — covering CRM, sales, accounting, inventory, and project management with a single PostgreSQL database and per-user pricing. FlitStack AI extracts data from Agent Legend via API or structured exports, audits the schema for Lily scores, campaign membership data, and custom fields, then maps contacts to Odoo res.partner, campaigns to crm.campaign, activities to crm.activity, and Lily AI scores to custom float fields on crm.lead. Automations, email sequences, and campaign builder logic do not transfer — we export workflow definitions as a rebuild reference for Odoo Action Rules and Server Actions. The migration runs against Odoo using XML-RPC API with full CRUD support and transactional rollback, preserving original create_date and activity timestamps throughout the run.

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

Agent Legend logo

Agent Legend

What's pushing teams away

  • The per-contact pricing model ($0.40/contact) becomes expensive at scale as contact databases grow into the thousands, with no flat-rate unlimited tier available.
  • Lily AI features (lead scoring, data enrichment) are proprietary and do not export with contact records, meaning migration means losing the intelligence layer built over years.
  • Steep learning curve around campaign setup, Circle Prospecting configuration, and CRM integration workflows frustrates agents who expect faster time-to-value.
  • Limited multi-user collaboration features on lower tiers, with seat-based pricing creating friction for teams that need shared inbox or role-based access controls.
  • Customer support responsiveness is inconsistent, with some users reporting delayed responses when integration or billing issues arise.

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 Agent Legend objects map to Odoo CRM

Each row shows how a Agent Legend 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.

Agent Legend

Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

Agent Legend contacts map directly to Odoo res.partner records. Odoo distinguishes individuals from companies via the is_company flag — contacts without a company association in Agent Legend land as individual partner records. We set is_company=False and preserve the Agent Legend contact name split across name, firstname, and lastname fields. Partner addresses, phone numbers, and email map 1:1 to Odoo partner contact fields.

Agent Legend

Contact (Lily score)

maps to

Odoo CRM

crm.lead (custom float field)

1:1
Fully supported

Agent Legend Lily AI lead scores (0–100 scale using 1,600+ third-party data points) have no native Odoo equivalent. FlitStack creates a float field on crm.lead called agent_legend_lily_score__c, preserving the original numeric score. Odoo admins can display this field in list views or integrate it into Odoo's built-in probability-based lead scoring for combined ranking.

Agent Legend

Campaign

maps to

Odoo CRM

crm.campaign

1:1
Fully supported

Agent Legend campaigns map to Odoo crm.campaign records, preserving campaign name, description, start and end dates. Odoo campaigns support utm.source tracking, email marketing integration, and child campaigns. Campaign membership — which Agent Legend tracks as a per-contact property — maps to a many2many relation on the contact's partner record linking to crm.campaign.

Agent Legend

Campaign Membership

maps to

Odoo CRM

res.partner (many2many crm.campaign)

1:1
Fully supported

Agent Legend tracks which campaigns a contact belongs to as a property on the contact record. Odoo has no per-contact campaign membership property — instead, we create a many2many relation on res.partner linking to crm.campaign. Each Agent Legend campaign a contact belongs to becomes a link in this relation. Odoo campaign reporting then aggregates partner records by campaign.

Agent Legend

Lead Source

maps to

Odoo CRM

utm.source / tag

1:1
Fully supported

Agent Legend lead sources (Inbound Call, Referral, Zillow, Realtor.com, etc.) map to Odoo utm.source records when Odoo Marketing is installed. If only CRM is installed, we create tags on res.partner for each unique source value. We build a value map during the audit phase mapping each Agent Legend source string to its corresponding Odoo utm.source or tag name.

Agent Legend

Activity (Call)

maps to

Odoo CRM

crm.activity (type=call)

1:1
Fully supported

Agent Legend logged calls map to Odoo crm.activity records with activity_type_id set to the Call activity type. Odoo stores call notes in the activity's note field, the contact as res.partner, and the responsible user as res.users — owner resolution handled via email match. Original call date and duration preserved in activity_date_deadline and Odoo's duration field.

Agent Legend

Activity (Email)

maps to

Odoo CRM

crm.activity (type=email)

1:1
Fully supported

Agent Legend email records map to Odoo crm.activity with activity_type_id set to Email. Subject, body content, and timestamp migrate to the activity record. Odoo's mail.message threading attaches to the partner record. Original send date preserved as activity_date_deadline or a custom Created_Date__c field if the email timestamp needs to survive past the deadline field.

Agent Legend

Activity (Meeting)

maps to

Odoo CRM

calendar.event

1:1
Fully supported

Agent Legend scheduled meetings map to Odoo calendar.event records. Event subject, start_datetime, stop_datetime, and location migrate directly. The meeting is linked to the relevant res.partner records as attendees. Owner attribution preserved via res.users match. If Odoo Calendar module is not installed, meetings fall back to crm.activity with a Meeting activity type.

Agent Legend

Note

maps to

Odoo CRM

Note (ir_attachment)

1:1
Fully supported

Agent Legend notes map to Odoo ir_attachment records with res_model=res.partner and res_id pointing to the partner record. Rich-text formatting from Agent Legend converts to HTML within Odoo's note field. Original create date and author preserved as ir_attachment create_date and create_uid fields. All attachments on contact, company, and deal records migrate as ir_attachment with the appropriate res_model and res_id values.

Agent Legend

Custom Property

maps to

Odoo CRM

Custom field on target model

1:1
Fully supported

Agent Legend custom properties (fields your team has configured beyond standard contact fields) migrate to Odoo custom fields. In Odoo, custom fields are created via Settings > Technical > Database Structure > Models, selecting the target model (res.partner, crm.lead, etc.) and field type. Agent Legend selection fields map to Odoo selection fields; multi-selection fields require a custom module using x_model_fields since Odoo does not natively support many2many tags without custom development.

Agent Legend

Company

maps to

Odoo CRM

res.partner (is_company=True)

1:1
Fully supported

Agent Legend company records map to Odoo res.partner with is_company=True, distinguishing them from individual contacts. Company name, website, industry classification, employee count, and annual revenue map to their Odoo counterparts. Agent Legend contacts linked to a company receive Odoo's parent_id pointing to the company partner record, establishing the contact hierarchy Odoo expects.

Agent Legend

Deal / Opportunity

maps to

Odoo CRM

crm.lead (type=opportunity)

1:1
Fully supported

Agent Legend deals map to Odoo crm.lead records with type=opportunity. Deal name, expected revenue (amount), stage, probability, expected close date, and responsible user migrate to Odoo's crm.lead fields. Agent Legend pipeline stages map to crm.stage records within each crm.team — stage IDs must be recorded during the Odoo setup phase before migration, as stage assignment is by database ID rather than name.

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.

Agent Legend logo

Agent Legend gotchas

High

Lily AI scores do not export from Agent Legend

High

CRM integration tokens and OAuth connections do not transfer

Medium

Contact-level per-message pricing creates billing risk on high-volume imports

Medium

Custom fields are not fully documented in the public API

Low

Letter templates use proprietary merge tag syntax

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

  • Agent Legend per-contact pricing amplifies costs at scale — not visible in the migration quote

    Agent Legend charges $0.40 per contact on top of subscription fees for contacts beyond the monthly allowance. Teams running high-volume outreach campaigns accumulate overage charges silently — a 5,000-contact database at 10% monthly growth can add $200/month in overages alone, on top of the base subscription. This cost structure is not visible in a data-migration quote but becomes apparent the first billing cycle after migration tooling begins. We surface this in the pre-migration audit so your Odoo sizing and per-user pricing comparison reflects the full picture.

  • Odoo res.partner is a single model for contacts and companies — Agent Legend contact-to-company relationships require parent_id setup

    Agent Legend models contacts and companies as separate objects with N:N associations. Odoo uses a single res.partner model where individuals (is_company=False) link to companies (is_company=True) via parent_id. Contacts without a primary company in Agent Legend must receive either a standalone partner record or be linked to a placeholder company partner in Odoo. We resolve primary company attribution during the audit phase using your specified rule — typically most-recently-modified company, or by explicit contact property designation.

  • Agent Legend pipeline stages map to Odoo crm.stage by database ID — stage IDs are not portable across Odoo environments

    Odoo stage assignment on crm.lead uses the database integer ID of the crm.stage record, not the stage name string. This means that stage names cannot be mapped by name alone — the Odoo instance must have its stages created and their IDs recorded before migration data is committed. In a fresh Odoo environment, stages created during setup get IDs that must be inserted into the migration field map before the full run. If stage IDs are misaligned, deals land in the wrong pipeline stages with incorrect probabilities and reporting data.

  • Odoo Community lacks external API access — Custom plan required for XML-RPC migration

    Odoo Community edition does not include external API access by default — XML-RPC and JSON-RPC are blocked without an active Odoo Enterprise or Custom plan subscription. FlitStack uses Odoo's XML-RPC API to run the migration with transactional rollback support. If your Odoo instance is on Community, you must upgrade to the Custom plan ($49/user/month) before migration tooling can connect. After migration completes, you can evaluate whether to remain on Custom or downgrade if API access is no longer required.

  • Agent Legend Lily AI scores and campaign membership have no Odoo native equivalent — custom field development required

    Agent Legend Lily AI lead scores (0–100) and campaign membership tracking exist as contact properties in Agent Legend but have no built-in Odoo CRM equivalent. We migrate these as custom float fields on crm.lead (agent_legend_lily_score__c) and many2many relations on res.partner (campaign_ids). Odoo custom field creation is standard configuration via Settings > Technical, but the many2many campaign membership relation may require a custom Odoo module depending on your reporting requirements — we assess this during the audit and include it in the migration plan.

Migration approach

Six steps for a successful Agent Legend to Odoo CRM data migration

  1. Extract and audit Agent Legend data via API

    We connect to Agent Legend using your API credentials or structured platform exports and pull a complete data inventory: all contacts with Lily scores and campaign membership, companies, deals, activity logs, notes, attachments, and custom property definitions. The audit phase identifies every Agent Legend-specific field requiring Odoo custom field creation, maps campaign names to Odoo crm.campaign IDs, and surfaces any data-quality issues — duplicate records, missing required fields, or contacts without email — before mapping logic is written.

  2. Stand up Odoo CRM schema and custom fields

    Before data moves, we install the Odoo CRM module and create any custom fields required for Agent Legend properties: agent_legend_lily_score__c on crm.lead as a float field, campaign_ids many2many on res.partner linking to crm.campaign, and custom Char fields for Agent Legend property values that don't fit Odoo's standard field types. We also create crm.stage records matching your Agent Legend pipeline stage names and record their database IDs — stage_id assignment by integer ID is required before deals can migrate. API access is verified during this phase; Odoo Custom plan must be active for XML-RPC connectivity.

  3. Map Agent Legend fields to Odoo fields and resolve owners by email

    We build the complete field map: every Agent Legend contact, company, deal, activity, and custom property mapped to its Odoo equivalent — direct fields, transformed fields, and custom fields. Owner resolution matches Agent Legend owner email addresses to Odoo res.users records. Any owners without an Odoo user account are flagged for team action — either create the user in Odoo first or assign to a fallback owner before migration. Custom property selection fields map value-by-value to Odoo selection fields; multi-selection Agent Legend properties are flagged for custom module development if many2many tags are required.

  4. Run sample migration with field-level diff

    A representative slice of 100–500 records migrates first: contacts spanning different campaign memberships, companies with associated contacts, deals across all pipeline stages, and a sample of activities. We generate a field-level diff comparing source Agent Legend values against destination Odoo records — verifying Lily score preservation, campaign membership links, stage assignment by ID, owner resolution, and activity timestamp fidelity. You review the diff and approve before the full run commits. Any mapping adjustments are made at this stage.

  5. Full migration run with delta-pickup and rollback

    The full migration runs in dependency order: companies first (to resolve parent_id), then contacts with user_id assignment and campaign_ids links, then deals with stage_id mapped by database ID and owner resolution, then activity logs and attachments. All records preserve original create dates, activity timestamps, and owner attribution. A 24–48-hour delta-pickup window runs concurrently — any records created or modified in Agent Legend during the cutover are captured and merged before final reconciliation. The entire operation is transactional; one-click rollback reverts Odoo to its pre-migration state if validation fails.

Platform deep dives

Context on both ends of the pair

Agent Legend logo

Agent Legend

Source

Strengths

  • Lily AI lead scoring provides actionable prioritization without requiring technical setup or third-party data pipelines.
  • Circle Prospecting automates recurring geographic outreach, saving agents an estimated 19.7 hours per month on manual database sorting.
  • Native integrations with Follow Up Boss, Lofty, and 500+ lead sources reduce duplicate data entry across the real estate agent stack.
  • Predictable per-contact pricing with annual billing option that waives the $499 setup fee for qualifying teams.
  • Campaign response rates of 28–55% significantly exceed industry averages of 2–6%, validating the AI-driven targeting approach.

Weaknesses

  • Per-contact pricing scales poorly at high volume with no unlimited tier, making the platform expensive for large databases.
  • AI intelligence (Lily scores, enrichment data) does not export, meaning years of lead prioritization data are lost on migration.
  • Limited public API documentation and unclear rate limiting create challenges for custom automation and migration tooling.
  • Single-seat Starter tier restricts team collaboration, pushing teams toward higher tiers for shared access.
  • Customer support responsiveness is inconsistent according to third-party reviews, which complicates issue resolution during migration.
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. All 8 core objects map 1:1 between Agent Legend and Odoo CRM.

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

    All 8 core objects map 1:1 between Agent Legend and Odoo CRM.

  • 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

    Agent Legend: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Agent Legend 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 Agent Legend to Odoo CRM data migrations

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

Can't find your answer?

Walk through your Agent Legend to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most Agent Legend to Odoo CRM migrations complete in 48–72 hours for under 5,000 records. Complex setups with 50,000+ records, extensive custom fields, or multi-company structures extend to 5–10 days. The longest phase is the data audit and field mapping — where we identify every Lily score, campaign membership, and custom property requiring Odoo custom field creation before the first record moves.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Agent Legend.
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