CRM migration

Migrate from Bilr to Odoo CRM

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

Bilr logo

Bilr

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between Bilr and Odoo CRM.

Complexity

BStandard

Timeline

72–120 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Bilr organizes data around clients, matters, time entries, and invoices — a billing-centric model common to practice-management tools. Odoo CRM uses res.partner for contacts and companies, crm.lead for leads and opportunities, and a stage-keyed pipeline kanban. The migration maps Bilr client records to res.partner, matters to a combination of crm.lead and custom fields on the partner record, and time-entry histories to Odoo activities with original timestamps preserved. We carry over all standard Bilr fields (name, email, phone, address, custom properties) plus any custom properties your team has defined. Invoices and payment records migrate as custom fields on res.partner or as linked sale orders if Odoo Sale is active — no native billing-to-invoice translation exists between the two models. Workflows, automation rules, and billing-rate templates do not migrate; FlitStack exports these as CSV reference sheets for your Odoo admin to rebuild using Odoo Automated Actions. The migration mechanism uses Bilr CSV exports as the source, transformed to Odoo CSV import format or batched via Odoo XML-RPC API for datasets over 5,000 records. We run a sample migration of 50–200 records first, generate a field-level diff, and cut over with a 24–48 hour delta window to capture any Bilr changes during the switch.

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

Bilr logo

Bilr

What's pushing teams away

  • No trust accounting capability means firms subject to IOLTA requirements must run a separate system or leave the platform entirely
  • Limited customization options for templates and workflows frustrate firms with non-standard billing arrangements or practice-area-specific needs
  • Mid-tier and Advanced pricing at $45–55 per user per month scales cost-prohibitively for larger firms evaluating against all-in-one legal practice management suites
  • Smaller ecosystem and fewer integrations compared to dominant legal platforms creates friction for firms needing calendar, document, or accounting sync

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

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

Bilr

Client

maps to

Odoo CRM

res.partner

1:1
Fully supported

Bilr Client records map directly to Odoo res.partner. Name, email, phone, address, and website fields translate field-for-field. Multiple contacts per client collapse to one primary res.partner — additional contacts migrate as Contact records linked via 'Contact' type on the partner.

Bilr

Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

Individual Bilr Contact records (within a Client) map to res.partner with type='contact'. Email, phone, name, and job title translate directly. Parent company link uses res.partner's Parent Partner field to maintain client-contact hierarchy. If a contact has multiple phone numbers, additional entries store as separate contact subrecords under the same partner.

Bilr

Matter

maps to

Odoo CRM

crm.lead

1:1
Fully supported

Bilr Matters have no native Odoo equivalent — they bridge contact and billing data. We map Matter to crm.lead as Opportunities, with Matter name as Opportunity name, status as stage, and client as the linked res.partner (partner_id). Billing-specific fields (rate, billing method) become custom fields on the crm.lead record.

Bilr

Time Entry

maps to

Odoo CRM

crm.activity / crm.lead.note_ids

1:1
Fully supported

Time entries carry description, hours, date, and billing rate. In Odoo, these become CRM activities (mail.activity) with type='Other', original date preserved, description in the activity note, and hours stored in a custom Duration field. If Odoo Timesheet module is active, entries link to crm.lead as timesheet lines.

Bilr

Invoice

maps to

Odoo CRM

sale.order / account.move (custom_field_required)

1:1
Fully supported

Bilr Invoice records (number, date, amount, status, line items) do not have a direct CRM counterpart. If Odoo Sale is active, invoices map to sale.order with state='sale'. If Odoo Account is active, they map to account.move. In all cases, invoice ID, amount, and status migrate as custom fields on the linked res.partner for historical reference.

Bilr

Payment

maps to

Odoo CRM

account.payment (custom_field_required)

1:1
Fully supported

Bilr Payment records (date, amount, method, reference) link to an Invoice. In Odoo, payments belong to account.payment tied to account.move invoices. We store payment date, amount, method, and reference as custom fields on the res.partner record — actual payment objects require Odoo Account module activation.

Bilr

Custom Property (on Client)

maps to

Odoo CRM

res.partner custom field (x_bilr_*)

1:1
Fully supported

Bilr custom properties on Client records require Odoo custom fields. Property names become field technical names prefixed x_bilr_ (e.g., x_bilr_referral_source). Field type maps per Bilr type: text→char, number→float, date→date, dropdown→selection. Odoo Studio (Enterprise) or custom module (Community) needed before import.

Bilr

Custom Property (on Matter)

maps to

Odoo CRM

crm.lead custom field (x_bilr_*)

1:1
Fully supported

Matter-level custom properties migrate to crm.lead as custom fields prefixed x_bilr_matter_*. Billing-specific properties (e.g., matter rate, billing method) become Odoo custom fields on the opportunity record. Custom field creation in Odoo is a prerequisite before migration data can land correctly.

Bilr

Attachment / File

maps to

Odoo CRM

ir.attachment / documents.document

1:1
Fully supported

Bilr file attachments on matters and time entries re-upload to Odoo as ir.attachment records linked to the target crm.lead. If Odoo Documents app is installed, files go to documents.document for the CRM workspace. Re-upload step required — attachments are downloaded from Bilr and pushed to Odoo via API.

Bilr

Staff / User

maps to

Odoo CRM

res.users

1:1
Fully supported

Bilr user accounts (staff names, email, role) match Odoo res.users by email. Active Bilr users get mapped to Odoo users with matching email; inactive accounts flagged. If Bilr roles don't map to Odoo groups, we assign to 'Sales / User' group and note the role name in a custom field.

Bilr

Billing Rate Rule

maps to

Odoo CRM

None (no_equivalent)

1:1
Fully supported

Bilr billing rate rules (per-attorney rates, matter-type rates, discount rules) have no Odoo CRM equivalent. Odoo Sale uses pricelists for product pricing, not per-staff billing rates. We export rate rules as a CSV reference sheet for the Odoo admin to configure as product pricelist rules in Sale if needed.

Bilr

Trust Accounting Ledger

maps to

Odoo CRM

None (no_equivalent)

1:1
Fully supported

Bilr trust accounting records (client trust balance, ledger entries) are legal-specific and have no Odoo CRM equivalent. These require the Odoo Accounting module for proper handling. We export trust ledger as a separate CSV for an accountant to import into Odoo Account or reconcile manually.

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.

Bilr logo

Bilr gotchas

High

No trust accounting support is a hard blocker for IOLTA firms

Medium

Limited workflow and template customization

Medium

Per-seat pricing model is migration-cost-sensitive

Low

Export scope discovery is required before 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

  • Odoo has no native billing or invoice object in the CRM module

    Bilr's core value is trust-accounting and invoice generation. Odoo separates these into the Account and Sale modules — they are not part of the CRM data model by default. We migrate invoice numbers, amounts, and status as custom fields on res.partner or sale.order records, but actual invoice records require activating Odoo Sale or Account and recreating them from the CSV reference. Your team will need to decide whether Odoo Account handles billing going forward or whether billing stays in a separate tool.

  • Bilr CSV export is the only migration source — no public API

    Unlike Odoo which exposes XML-RPC for both read and write, Bilr has no documented public API. The migration runs entirely on CSV exports generated from within the Bilr application (Settings > Export). Basic plan exports may be limited to core fields — Pro and Advanced plans include more fields. We flag any fields not present in the export before migration planning, but the export format is the hard constraint on what data can leave Bilr.

  • Custom properties require Odoo field creation before data lands

    Bilr allows custom properties on clients, matters, and time entries without any module installation. Odoo Community requires a custom Python module to add fields — either a manually built x_bilr_ module or one generated by Odoo Studio (Enterprise only). We deliver a field creation script as part of the migration package, but the fields must exist in Odoo before our importer can write data into them. This adds a prerequisite step that most non-Odoo migrations skip.

  • Matter-to-opportunity mapping loses Bilr's billing-rate context

    Bilr matters carry billing rates per attorney or matter type. Odoo crm.lead has no native billing_rate field — those values migrate as custom fields on the opportunity, but Odoo's sale.order pricing engine uses product pricelists instead. If your team uses Bilr's rate rules for client invoices, Odoo's pricing model requires rebuilding those rules as Sale pricelist items. The CSV rate-rule export we provide helps but the logic cannot auto-transfer. Additionally, Odoo’s native reporting does not aggregate custom billing fields by attorney; manual adjustments may be necessary after migration to maintain accurate cost breakdowns.

  • Trust accounting records have no Odoo CRM equivalent

    Bilr trust accounting ledgers (client trust balance, individual ledger entries, trust-triggered alerts) are a legal-industry construct. Odoo CRM has no trust accounting model — the Odoo Accounting module handles this but it is a separate configuration entirely. We export trust ledger data as a standalone CSV. If trust accounting is critical to your practice, plan for a separate Odoo Account implementation rather than assuming it flows from the CRM migration.

Migration approach

Six steps for a successful Bilr to Odoo CRM data migration

  1. Extract Bilr CSV exports and audit field coverage

    We guide your Bilr admin through generating exports from all relevant modules: Clients, Contacts, Matters, Time Entries, Invoices, Payments, and Custom Properties. We audit the export columns against your Bilr configuration and flag any custom properties not included in the Basic plan export. We also extract attachment URLs (where accessible) for the re-upload step. This audit produces the field inventory that drives Odoo custom field creation.

  2. Create Odoo custom fields and configure CRM pipeline stages

    Before data can migrate, we generate an Odoo custom module (Community) or Studio field definition (Enterprise) containing every x_bilr_* custom field identified in the audit. We also map Bilr matter statuses to Odoo CRM stage names and deliver the stage configuration plan. If Odoo Sale or Account is active, we define the invoice and payment custom field structures on res.partner as well. Odoo custom fields must be installed and active before Step 4.

  3. Resolve Bilr staff to Odoo users by email

    Bilr staff records are matched to Odoo res.users by email address. We run a pre-flight check: active Bilr users with Odoo login matches are mapped directly; staff without Odoo accounts are flagged for your admin to create before migration. Owner resolution on crm.lead records uses the same email match. No record lands in Odoo without a resolved user — unresolvable staff get assigned to a designated fallback Odoo user.

  4. Run sample migration of 50–200 records with field-level diff

    A representative slice migrates first: all object types (clients, contacts, matters, time entries) across multiple status values. We generate a field-level diff comparing source CSV values against Odoo record values — verifying that custom property values, date fields, and mapped pick-list values landed correctly. You review the diff and confirm the mapping logic before we commit to the full run. Any field mapping corrections happen at this stage.

  5. Execute full migration with delta-pickup window

    The full dataset migrates in ordered batches: res.partner (clients + contacts) first to resolve partner_ids, then crm.lead (matters) with partner_id foreign keys, then mail.activity records (time entries) linked to the migrated opportunities, then invoice/payment custom fields. Attachment re-upload runs in parallel via Odoo ir.attachment API. A 24–48 hour delta window after the initial load captures any Bilr records modified during cutover. An audit log records every imported record with source Bilr ID.

  6. Validate, reconcile, and confirm with rollback available

    We generate a reconciliation report comparing Bilr record counts and sampled field values against Odoo records. You spot-check data in Odoo — custom field values, activity histories, and opportunity linkages. If reconciliation fails any critical threshold, one-click rollback reverts the Odoo database to its pre-migration state. On confirmation, we deliver the CSV reference exports for billing rate rules and trust accounting for your Odoo admin to rebuild manually in Sale or Account modules.

Platform deep dives

Context on both ends of the pair

Bilr logo

Bilr

Source

Strengths

  • Purpose-built for legal billing workflows with time entry, expense tracking, and invoice generation within a single platform
  • Per-user pricing from $33.99/month provides a low barrier to entry for solo practitioners and small law firms
  • Three tiers (Basic, Pro, Advanced) offer a clear upgrade path as firm size and billing complexity grow
  • 24/5 support and on-demand training included across all tiers, differentiating from platforms that charge extra for support
  • Mobile apps on iOS and Android allow attorneys to log time and review bills from outside the office

Weaknesses

  • No trust accounting or IOLTA-compliant ledger means firms with client fund requirements cannot use Bilr as their sole financial system
  • Limited workflow customization and template flexibility frustrate firms with non-standard billing arrangements or practice-area-specific needs
  • Smaller third-party integration ecosystem compared to dominant legal practice management platforms creates friction for calendar, document, and accounting sync
  • Per-seat pricing scales cost linearly, which may become expensive for larger firms with many non-billing staff who need access
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 Bilr 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

    Bilr: Not publicly documented — typical SaaS limits assumed and confirmed during scoping.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Bilr-to-Odoo CRM migrations complete in 72–120 hours of clock time for under 25,000 records. Larger setups with custom property inventories exceeding 20 fields, multi-phase billing data (invoices + trust ledgers), or Odoo Sale/Account module integration extend to 7–14 days. The longest planning step is Odoo custom field creation — Community edition requires a Python module; Enterprise uses Odoo Studio. We deliver the field creation package before the migration run begins so that step does not block data movement.

Adjacent paths

Related migrations to explore

Ready when you are

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