CRM migration

Migrate from Jubilee to Odoo CRM

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

Jubilee logo

Jubilee

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

100%

16 of 16

objects map 1:1 between Jubilee and Odoo CRM.

Complexity

BStandard

Timeline

48–96 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Jubilee is bankruptcy and practice management software that stores client contacts, bankruptcy case records, document attachments, and court-specific case data. The platform tracks case status across chapters 7, 11, 13, and 15, maintains trustee and court assignments, and logs attorney activities against each case. Odoo CRM models legal data using res.partner for contacts, crm.lead for pre-conversion leads, and crm.lead (opportunity) for active cases. The migration carries every Jubilee client record, case field, and attachment into Odoo's partner and opportunity objects, creating custom fields on the opportunity model for bankruptcy-specific data that Odoo does not natively store — including x_bankruptcy_chapter, x_case_status, x_trustee_name, and x_court_district. We surface the workflow definitions as a rebuild reference for Odoo Studio and the Odoo workflow engine. The migration runs via Odoo's XML-RPC API with batched writes to handle large case volumes without triggering Odoo's request throttling thresholds. Prior to data movement, the FlitStack AI engine audits Jubilee’s field definitions and creates the required custom fields on Odoo’s res.partner and crm.lead models, including x_bankruptcy_chapter, x_case_status, x_trustee_name, x_court_district, x_case_number, and x_remaining_balance. A pre‑migration validation script checks for missing required fields, duplicate emails, and orphaned attorney assignments. Attachments are re‑uploaded via Odoo’s ir.attachment model, preserving original filenames and timestamps. The migration script uses Odoo’s XML‑RPC batch write API, with configurable batch sizes to stay within Odoo’s request throttling limits, ensuring a smooth cutover within the 48‑96‑hour window for typical volumes.

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

Jubilee logo

Jubilee

What's pushing teams away

  • Firms that expand beyond bankruptcy into family law, civil litigation, or other practice areas find JubileePRO's feature set too narrow and migrate to general legal CRMs.
  • The desktop edition lacks real-time multi-user sync, causing collaboration friction for firms with remote or hybrid staff.
  • Reporting and analytics are limited compared to platforms with dedicated business intelligence tools, making firm health metrics harder to extract.

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

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

Jubilee

Client / Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

Jubilee client records map directly to Odoo res.partner. The partner record holds name, email, phone, address, and company type (individual vs. organization). Client status (active, inactive) becomes a custom selection field on the partner if needed — Odoo partner records do not have a native status field.

Jubilee

Client Email

maps to

Odoo CRM

res.partner (email field)

1:1
Fully supported

Jubilee email maps to partner email. Odoo validates email format on insert and rejects malformed addresses. Duplicate email detection flags existing partners so the migration does not create duplicate contact records when the same attorney appears across multiple cases. Unmatched email formats are logged for pre‑migration correction.

Jubilee

Client Phone

maps to

Odoo CRM

res.partner (phone field)

1:1
Fully supported

Phone and mobile phone map to the partner phone field. Odoo stores phone as a Char field, accepting free‑form numbers. If Jubilee stores separate mobile and work phone fields, both insert into the same Odoo phone field, with a label annotation indicating type. Phone numbers are normalized to a consistent format before insert to avoid validation errors.

Jubilee

Client Address

maps to

Odoo CRM

res.partner (address fields)

1:1
Fully supported

Jubilee street, city, state, zip, country map to Odoo partner address fields (street, city, state_id, zip, country_id). State maps as a many2one to res.country.state — the state ID must resolve to an existing Odoo state record. Country maps as many2one to res.country.

Jubilee

Client Type

maps to

Odoo CRM

res.partner (x_client_type custom field)

1:1
Fully supported

Jubilee client types (individual, corporation, LLC, partnership) have no direct Odoo equivalent. We create x_client_type as a selection field on res.partner and map each Jubilee value to the matching selection option. If Jubilee contains a type not defined in Odoo, we flag it for pre‑migration review and store the raw value in a Char fallback field.

Jubilee

Attorney / Responsible Party

maps to

Odoo CRM

res.partner (x_attorney_id custom field on opportunity)

1:1
Fully supported

Jubilee's assigned attorney field maps as a many2one custom field (x_attorney_id) on crm.lead pointing to res.partner. The attorney partner record must exist first — we resolve by email match against Odoo users and create a minimal partner record for unmatched attorneys before opportunity insert.

Jubilee

Bankruptcy Case

maps to

Odoo CRM

crm.lead (opportunity)

1:1
Fully supported

Each Jubilee case record maps to one Odoo crm.lead in opportunity state. The lead stores case name, amount (debt amount or fee), stage, expected close date, and all custom bankruptcy fields. Odoo uses crm.lead for both lead and opportunity — the convert_lead opportunity action handles the split if the firm later distinguishes pre-filing leads from active cases.

Jubilee

Case Number

maps to

Odoo CRM

crm.lead (x_case_number custom field)

1:1
Fully supported

Jubilee case number (e.g., 23‑bk‑12345) has no native Odoo equivalent. We create x_case_number as a Char field on crm.lead and index it for fast lookup by case number after migration. Court docket integrations reference this field directly, and we preserve the original case number format to avoid re‑keying errors.

Jubilee

Bankruptcy Chapter

maps to

Odoo CRM

crm.lead (x_bankruptcy_chapter custom field)

1:1
Fully supported

Chapter 7, 11, 13, and 15 values from Jubilee map to selection field x_bankruptcy_chapter on crm.lead. Value mapping ensures case-insensitive match against Odoo selection options. Chapter type drives Odoo stage pipeline creation — each chapter may warrant a separate Odoo sales team and stage set.

Jubilee

Case Status

maps to

Odoo CRM

crm.lead (stage_id + x_case_status custom field)

1:1
Fully supported

Jubilee status values (Pending, Filed, Discharged, Dismissed, Reopened) map to Odoo stage_id records on crm.lead. We create one Odoo stage per Jubilee status value before migration. For reporting continuity we also store the original Jubilee status string in x_case_status__c as a read-only custom field.

Jubilee

Trustee Assignment

maps to

Odoo CRM

res.partner (x_trustee_name) + crm.lead (x_trustee_id)

1:1
Fully supported

Jubilee trustee name maps to a partner record (or x_trustee_name Char field on crm.lead if no Odoo partner exists). Trustee partners are created with type 'company' and stored in x_trustee_id as a many2one on crm.lead. Duplicate trustee names are de-duplicated before insert.

Jubilee

Court District

maps to

Odoo CRM

crm.lead (x_court_district custom field)

1:1
Fully supported

Court jurisdiction string from Jubilee (e.g., 'Northern District of California') becomes a Char field x_court_district on crm.lead. If Jubilee stores court as a structured object with name and division sub-fields, we concatenate into the Char field or create separate x_court_name and x_court_division fields.

Jubilee

Remaining Balance

maps to

Odoo CRM

crm.lead (x_remaining_balance custom field)

1:1
Fully supported

Jubilee remaining_balance decimal maps to Odoo x_remaining_balance as a Monetary field on crm.lead, automatically respecting the company's default currency (USD unless overridden). The field stores the outstanding debt figure for case‑disposition reporting, and any null balances are preserved as zero rather than omitted, ensuring consistent reporting across all migrated cases.

Jubilee

Activity Log (calls, notes, meetings)

maps to

Odoo CRM

mail.message + crm.lead (activity_ids)

1:1
Fully supported

Jubilee activity entries (date, type, note body, author) map to Odoo mail.message records linked to crm.lead. Each message stores author as res.partner, body as HTML, and date as mail.message create_date. Odoo's chatter widget on the opportunity form displays the full case activity history in chronological order.

Jubilee

Document Attachment

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

Jubilee file attachments (petitions, schedules, orders) re-upload to Odoo ir.attachment linked to crm.lead via res_model='crm.lead' and res_id=crm.lead_id. Files retain original filenames and (if readable from source) original create dates stored in ir.attachment create_date. Large files follow Odoo's file storage configuration.

Jubilee

Workflow / Automation

maps to

Odoo CRM

No equivalent — manual rebuild required

1:1
Fully supported

Jubilee workflow definitions (deadline triggers, status-change notifications, filing reminders) do not migrate. We export workflow definitions as a structured JSON rebuild reference and provide an Odoo Studio setup guide so your team can recreate triggers using Odoo Automated Actions and Server Actions. Third-party e-filing integrations require separate API configuration.

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.

Jubilee logo

Jubilee gotchas

High

Desktop edition stores documents in local file paths

Medium

Trust account balance snapshot may not reflect pending transactions

Medium

Chapter-specific form versions are not auto-upgraded on import

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

  • Bankruptcy chapter types require separate Odoo stage pipelines or case-type filtering

    Jubilee stores bankruptcy chapter (7, 11, 13, 15) as a case attribute. Odoo CRM uses stage_id on crm.lead for pipeline progression, but a single Odoo pipeline mixes chapter types unless you create separate sales teams or use x_bankruptcy_chapter in a domain filter on stage views. If your firm handles multiple chapter types, Odoo's default kanban view groups all cases together regardless of chapter — you need Odoo Studio to configure a stage view filtered by x_bankruptcy_chapter or create separate pipeline views per chapter. We include a Studio export template with these filters pre-configured in the migration plan.

  • Trust account and escrow balances require separate Odoo Accounting configuration

    Jubilee may track trust account balances or retainer balances for clients. Odoo Accounting handles financial transactions separately from CRM. Numeric balance fields from Jubilee can migrate to opportunity custom fields for reporting, but Odoo's double-entry accounting (Journal Entries, Payment Providers) is a separate module that requires its own chart of accounts configuration. We migrate the balance figures as custom opportunity fields for reporting continuity. Trust accounting reconciliation — creating journal entries for deposits and withdrawals — must be done manually in Odoo Accounting post-migration or configured by an Odoo accountant before go-live.

  • Odoo lead-to-opportunity conversion unmerges embedded case data

    If Jubilee treats all cases as embedded records on the client object (a common pattern in practice management CRMs), Odoo's convert_lead_to_partner action extracts case fields from crm.lead into the partner record when converting a pre-filing lead to an active case opportunity. This can orphan x_bankruptcy_chapter, x_case_number, and trustee fields if the conversion wizard is used without preserving custom field mappings. We configure the crm.lead2opportunity.partner wizard to copy x_bankruptcy_chapter and x_case_number to the resulting opportunity after conversion so the case data survives the action.

  • Large document attachments hit Odoo filestore limits during bulk insert

    Jubilee petitions, schedules, and court orders can exceed 25MB per file. Odoo 17 and 18 default ir.attachment storage to 25MB per file via the web_attachment_max_size parameter. Files exceeding this threshold fail with a ValidationError during migration insert. We detect files over 25MB before migration and chunk them into multiple Odoo Document records or compress them before upload. For court orders over 50MB we create a Document link reference rather than storing the binary — your team downloads from the original source system if needed.

  • Jubilee attorney email addresses must resolve to Odoo users before opportunity owner assignment

    Odoo crm.lead has a user_id field (owner) that must reference a res.users record. Jubilee attorney assignments are stored as email strings. We match Jubilee attorney emails against Odoo res.users by email. Attorneys with no matching Odoo account are flagged before migration so your admin can invite them to Odoo. Records assigned to unmatched attorneys default to a fallback Odoo user (e.g., admin) — the original attorney assignment is preserved in x_attorney_id for post-migration reassignment.

Migration approach

Six steps for a successful Jubilee to Odoo CRM data migration

  1. Inventory Jubilee data and configure Odoo custom fields

    FlitStack AI extracts every client contact, case record, activity entry, and attachment from Jubilee via the source API or CSV export. We audit field data types, pick-list values, and attachment file sizes. Meanwhile, your Odoo admin (or our team) creates the custom fields on res.partner and crm.lead — x_bankruptcy_chapter, x_case_number, x_case_status, x_trustee_id, x_attorney_id, x_court_district, x_remaining_balance, and x_source_crm_id — so the schema is ready before any data inserts. We deliver a field creation checklist with exact field names, types, and selection options derived from your Jubilee configuration.

  2. Create Odoo partner records and resolve attorney-to-user mappings

    All Jubilee client records insert into Odoo res.partner first. We deduplicate by email — if the same email appears across multiple Jubilee records, we create one partner and link all related cases to it. Attorney email addresses from Jubilee case assignments are resolved against Odoo res.users. Unmatched attorneys are flagged with a pre-migration report listing their names and emails so you can invite them to Odoo. Partner records are validated for required fields (name, email format, country_id) before the migration batch commits.

  3. Create Odoo opportunity records with bankruptcy field mapping

    Each Jubilee case inserts as an Odoo crm.lead opportunity. The partner_id foreign key references the pre-created res.partner record. All bankruptcy custom fields (x_case_number, x_bankruptcy_chapter, x_case_status, x_trustee_id, x_attorney_id, x_court_district, x_remaining_balance) populate from the corresponding Jubilee fields. Stage_id resolves via value mapping — each Jubilee status value points to a pre-created Odoo stage record. Filing dates, discharge dates, and original create timestamps map to their Odoo custom field counterparts. The insert batch is ordered by Jubilee case ID to preserve creation sequence.

  4. Migrate activity logs and re-upload document attachments

    Jubilee activity entries (calls, notes, emails) insert as mail.message records linked to their crm.lead. Each message preserves original author, timestamp, and HTML body so the Odoo chatter widget displays a complete case activity timeline. File attachments from Jubilee (petitions, schedules, court orders) are re-uploaded to ir.attachment linked to the corresponding crm.lead via res_model='crm.lead'. Large files over 25MB are chunked or compressed before upload to avoid Odoo attachment size validation errors. Original filenames and create dates are preserved.

  5. Run sample migration with field-level diff and reconcile

    A representative slice — typically 100–300 records spanning clients, cases, activities, and attachments — migrates first. We generate a field-level diff between Jubilee source values and Odoo destination fields for every record in the sample. You verify that x_bankruptcy_chapter values, x_case_status stage mapping, x_trustee_id partner links, and activity message bodies match the source. Attorney email resolution reports are reviewed to confirm owner assignment. Any mapping errors are corrected before the full run commits. We surface custom field definitions as a Studio export so your admin can apply them to additional Odoo environments.

  6. Full migration with delta pickup, audit log, and rollback

    The full migration batch inserts all remaining records into Odoo. A delta-pickup window of 24–48 hours captures any records created or modified in Jubilee during the cutover. Every insert, update, and rollback operation is logged in the FlitStack audit trail with timestamps and operator IDs. One-click rollback reverts all changes to the pre-migration snapshot if reconciliation fails. Post-migration, we deliver a reconciliation report comparing record counts and field population rates between Jubilee and Odoo. Workflow definitions are exported as a JSON rebuild reference for Odoo Studio and the Automated Actions engine.

Platform deep dives

Context on both ends of the pair

Jubilee logo

Jubilee

Source

Strengths

  • Pay-per-case pricing option lets occasional or part-time bankruptcy attorneys avoid monthly subscriptions for low case volume.
  • Covers all consumer/business chapters (7, 11, 12, 13) per LegalPRO Systems' vendor description.
  • Cloud-based platform reduces local infrastructure requirements for small firms per Capterra listing.
  • Strong review aggregations describe tech support as 'top notched' per multiple reviewer comments on Capterra and ITQlick.
  • Frequent updates to local court rules and form versions reduce manual compliance burden per existing whyPeopleChoose content.

Weaknesses

  • Narrow vertical focus on bankruptcy only — firms with mixed practice areas outgrow it quickly.
  • Desktop edition lacks real-time multi-user sync, complicating hybrid/remote staff workflows.
  • Reporting and analytics are basic relative to general legal practice management platforms.
  • Per-case fees on the pay-per-case plan add up for firms processing high case volume; subscription plan becomes more cost-effective above a break-even threshold.
  • No public API documentation found, complicating integrations beyond the bundled feature set.
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 Jubilee 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

    Jubilee: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Jubilee to Odoo CRM migrations complete in 48–96 hours of clock time for setups with fewer than 10,000 case records. Complex migrations with multiple bankruptcy chapters, high-volume custom fields, or multi-office configurations requiring separate Odoo company partitions extend to 7–10 days. The longest planning step is Odoo custom field creation and stage configuration — we deliver the schema setup checklist before data migration begins so the destination environment is ready when the migration runs.

Adjacent paths

Related migrations to explore

Ready when you are

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