CRM migration

Migrate from Visionary to Odoo CRM

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

Visionary logo

Visionary

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

91%

10 of 11

objects map 1:1 between Visionary and Odoo CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Visionary CRM stores contacts, companies, deals, and activities in a flat object model with limited pipeline configurability. Odoo CRM represents the same entities using its crm.lead (which serves as both Lead and Opportunity), res.partner (Contacts and Companies merged), and crm.opportunity models — with stage management via crm.stage records that belong to sales teams. The migration carries Visionary's standard objects into Odoo using XML-RPC API calls against the destination database, mapping pick-list values value-by-value for stages and sources, and creating custom char fields for Visionary properties that have no direct Odoo equivalent. Automations, workflows, and email templates from Visionary do not migrate — we export their definitions as JSON so your Odoo admin can rebuild them using Odoo's Studio automation builder or server actions. Attachment files are downloaded from Visionary's storage and re-uploaded to Odoo's ir.attachment model tied to the correct res.partner or crm.lead record. Owner resolution happens by email match against Odoo res.users, with unmatched owners flagged for manual assignment before the full 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

Visionary logo

Visionary

What's pushing teams away

  • User-experience reviews skew low (ITQlick cites 2/5 user rating) despite a higher overall 82/100 system score, indicating UI/UX friction in daily use.
  • Total cost of ownership is reported as higher than the base pricing suggests, with additional modules and setup costs accumulating quickly.
  • Smaller installed base and review footprint compared to Clio, MyCase, PracticePanther, and Smokeball — narrower consultant ecosystem and fewer self-serve learning resources.
  • Feature depth in pure practice-management workflows (matter intake, trust accounting, conflict checks) is lighter than legal-specialist competitors.
  • Brand confusion exists — multiple unrelated 'Visionary' products in CRM, CDP (Japan), and EHR markets make vendor due diligence harder.

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

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

Visionary

Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

Visionary Contact maps directly to Odoo res.partner. In Odoo, res.partner serves as both individual contacts and company records — contacts are distinguished by having a parent_id pointing to the company partner. The Visionary contact's primary company link becomes the parent_id on the Odoo partner record.

Visionary

Company

maps to

Odoo CRM

res.partner

many:1
Fully supported

Visionary Company and Contact merge into Odoo res.partner, with Company records created as partners of type 'company' and Contact records as partners of type 'person' linked via parent_id. Visionary's company domain, industry, and employee-count fields populate corresponding res.partner fields or custom fields on the company partner.

Visionary

Deal / Opportunity

maps to

Odoo CRM

crm.lead

1:1
Fully supported

Visionary Deal maps to Odoo crm.lead with type='opportunity'. The Visionary pipeline becomes an Odoo sales team (crm.team), and each Visionary pipeline stage maps to a crm.stage record within that team. The crm.lead.stage_id field links the opportunity to the correct stage ordered record.

Visionary

Lead

maps to

Odoo CRM

crm.lead

1:1
Fully supported

Visionary Lead maps to Odoo crm.lead with type='lead'. In Odoo, a single crm.lead model holds both Leads and Opportunities differentiated by the type char field — Leads retain the Visionary lead status as a custom field or are mapped to Odoo's stage model if the values align.

Visionary

Pipeline

maps to

Odoo CRM

crm.team + crm.stage

1:1
Fully supported

Visionary Pipeline translates to an Odoo crm.team record. Within each team, Visionary stage names become crm.stage records ordered by sequence integer. Each stage record belongs to a team_id, so pipeline isolation is preserved at the team level in Odoo. The mapping also carries over stage probabilities and fold (won/lost) flags, ensuring that deal progress reflects the original pipeline logic.

Visionary

Stage / Stage Value

maps to

Odoo CRM

crm.stage

1:1
Fully supported

Visionary stage pick-list values map value-by-value to Odoo crm.stage records. The mapping plan includes sequence ordering, probability percentages, and fold (won/lost) flags per stage. We preserve the original stage-entered timestamp as a custom datetime field on the crm.lead for historical reporting continuity.

Visionary

Call / Email / Meeting Log

maps to

Odoo CRM

crm.phonecall / mail.message

1:1
Fully supported

Visionary activity records (calls, emails, meetings, notes) migrate as Odoo crm.phonecall entries and mail.message records. Original timestamps, duration minutes, and description text are preserved. The call's related partner and opportunity links are set via the res_id and model fields on the mail.message record.

Visionary

Attachment / File

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

Visionary file attachments download from the source storage and re-upload into Odoo ir.attachment records. Each attachment is linked to its parent record (res.partner or crm.lead) via the res_model and res_id fields. Odoo's default 25MB per-file limit is enforced; files exceeding this are flagged for manual handling.

Visionary

Custom Object

maps to

Odoo CRM

ir.model + ir.model.fields

1:1
Fully supported

Visionary custom objects require Odoo custom model creation via the ORM. We create the ir.model record and corresponding ir.model.fields entries for each custom object, then map the data into the new model. Many-to-many associations in Visionary become Odoo ir.model.relational fields.

Visionary

Owner / User

maps to

Odoo CRM

res.users

1:1
Fully supported

Visionary owner IDs resolve to Odoo res.users by email address match. Unmatched owners are flagged before migration so your Odoo admin can either invite them as Odoo users or reassign their records to an existing user. No crm.lead lands without a valid user_id in Odoo.

Visionary

Tag / Label

maps to

Odoo CRM

crm.tag

1:1
Fully supported

Visionary tags map to Odoo crm.tag records. Tags are many-to-many on crm.lead via the tag_ids relational field. We create missing tag records in Odoo during migration and link them to the corresponding leads and opportunities, preserving the original categorization. If multiple tags share the same name, they are deduplicated to a single Odoo tag to avoid duplication.

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.

Visionary logo

Visionary gotchas

High

Visionary brand is heavily reused across software categories

High

Trust accounting and IOLTA compliance must be preserved exactly

Medium

Document management is the highlighted feature — migrate documents and their links

Medium

Voice-recognition / audio-video synced deposition files are binary and large

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

  • Visionary pipeline stages do not automatically become Odoo crm.stage records

    Odoo crm.stage records are ordered integers scoped to a crm.team. Visionary stages stored as free-text or pick-list values cannot be imported directly into Odoo's stage model without first creating the stage records in the target team. FlitStack creates a crm.team for each Visionary pipeline, then creates the crm.stage records within it in the correct sequence order, and maps each Visionary stage value to the new stage_id on the crm.lead. If the Visionary pipeline has more than 20 stages, additional validation is required to ensure stage ordering matches the original business process.

  • Odoo res.partner serves both Contacts and Companies, requiring a merge step

    Visionary separates Contact and Company into distinct objects with a many-to-many link between them. Odoo collapses this into a single res.partner table where a company partner has type='company' and individual contacts have type='person' with a parent_id pointing to the company partner. During migration, FlitStack first creates all Visionary Company records as company-type partners, then creates Visionary Contact records as person-type partners linked to their parent company. Contacts that have no company association in Visionary are created as standalone partners with no parent_id.

  • Visionary custom fields require Odoo custom field pre-creation before data loads

    Odoo does not accept new custom fields via bulk import without the fields first existing as ir.model.fields records in the database. FlitStack's pre-migration phase audits all Visionary custom fields, generates the Odoo field-creation plan (including field type mapping — Visionary text becomes char, numeric becomes float or integer, dates become datetime), and delivers the setup steps for your Odoo admin to create them in Settings > Technical > Models before the data migration run. Fields that are not pre-created are flagged and skipped with a reference list for manual handling.

  • Odoo ir.attachment file size limits can orphan large Visionary attachments

    Odoo's default attachment file size limit is configured in system parameters (ir_attachment_max_size_mb, defaulting to 25MB). Visionary attachments exceeding this size will fail to upload and are logged separately for manual re-hosting. For teams with large file libraries, FlitStack surfaces the count and total size of oversized files during the pre-migration audit so you can decide whether to store them externally (with a URL custom field pointing to the file) or temporarily raise Odoo's attachment limit.

  • Visionary owner-to-Odoo user email matching silently assigns 'OdooBot' for unmatched owners

    Odoo's crm.lead.user_id field is a many2one to res.users. If a Visionary owner email does not match any Odoo res.users.login, Odoo requires a valid user_id — the record cannot save with a null user_id by default. FlitStack resolves this by flagging all unmatched owners during the pre-flight phase and either mapping them to a designated fallback user (e.g., a sales manager) or prompting your team to invite the unmatched users to Odoo before the migration run commits.

Migration approach

Six steps for a successful Visionary to Odoo CRM data migration

  1. Pre-migration audit: export Visionary schema and data

    FlitStack connects to Visionary's export API or database to pull a full schema inventory — all objects, field names, field types, pick-list values, and relationship definitions. We cross-reference this against Odoo's crm.lead, res.partner, crm.team, and ir.attachment models to generate a field-mapping plan. The audit also identifies custom fields requiring Odoo pre-creation, oversized attachments, and owner emails that have no corresponding Odoo user account.

  2. Create Odoo custom fields and stage infrastructure

    Before any data loads, FlitStack delivers a setup checklist for your Odoo admin to create the custom fields (via Settings > Technical > Models), crm.team records for each Visionary pipeline, and crm.stage records within each team. This step ensures the Odoo schema is ready to accept data in the correct field types and relationship structure. FlitStack validates the setup before proceeding to data migration.

  3. Resolve owners and users by email match

    Visionary owner IDs are resolved against Odoo res.users by matching the email address. FlitStack generates a pre-flight report listing all matched owners (confirmed migration path), all unmatched owners (requires Odoo user creation or fallback assignment), and the total count of records affected per owner. No record migrates with an unresolved owner — the report gives your admin a 24-hour window to invite or reassign before the migration run begins.

  4. Run sample migration with field-level diff

    A representative slice of 100–500 records — spanning contacts, companies, leads, opportunities, and activities — migrates first. FlitStack generates a field-level diff showing the source value, the mapped Odoo field, and any transformation applied. You verify that Visionary stage values landed in the correct crm.stage, that company contacts have the right parent_id links, and that owner assignment matches expectations. Approval of the sample diff gates the full run.

  5. Execute full migration with delta-pickup window

    The full record set migrates via Odoo's XML-RPC API using batched writes to stay within Odoo's transaction size limits. A delta-pickup window of 24–48 hours runs concurrently — any Visionary records created or modified during the migration window are captured and written to Odoo after the initial pass. FlitStack maintains an audit log of every record written, the API operation performed, and the before/after field values. One-click rollback reverts all changes if post-migration reconciliation uncovers data integrity issues.

Platform deep dives

Context on both ends of the pair

Visionary logo

Visionary

Source

Strengths

  • Established 2005-era legal-tech vendor with court reporter and videographer roots.
  • Lower entry price than dedicated legal CRMs.
  • Document management is the highlighted core capability.
  • Audio/video sync tools for deposition workflows.
  • Choice of perpetual license ($495) or per-user monthly ($50).

Weaknesses

  • User ratings on review aggregators trend low despite system scores.
  • Total cost of ownership creeps higher than base pricing indicates.
  • Smaller installed base than Clio/MyCase/PracticePanther.
  • Brand confusion with unrelated 'Visionary' products in other categories.
  • Feature depth in trust accounting and conflict checks is lighter than specialists.
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. 2 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 Visionary and Odoo CRM.

  • Object compatibility

    B

    2 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

    Visionary: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Visionary-to-Odoo migrations complete within 48–72 hours of clock time for setups with fewer than 25,000 records. Larger migrations with more than 100,000 records, multiple custom objects, or complex custom-field schemas extend to 7–10 days. The longest single step is usually creating the Odoo custom fields and crm.stage infrastructure during the pre-migration phase, which your admin completes before FlitStack runs the data migration.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Visionary.
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