CRM migration

Migrate from Smokeball to Odoo CRM

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

Smokeball logo

Smokeball

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between Smokeball and Odoo CRM.

Complexity

BStandard

Timeline

3–5 days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Smokeball is practice management software built specifically for law firms — it models Contacts, Matters, Activities, Documents, and Workflows using legal-industry semantics and billing integrations. Odoo CRM operates with a general-business model: res.partner handles contacts and companies, crm.lead manages leads and opportunities, crm.activity tracks planned tasks and meetings, and ir.attachment stores file binaries. Our migration strategy maps Smokeball Contacts to res.partner records, Smokeball Matters to crm.lead records in the opportunity stage, Smokeball Activities to crm.activity entries, and Smokeball Documents to ir.attachment records linked to the corresponding Odoo records. Hard costs, soft costs, and trust accounting balances require Odoo accounting module configuration after migration completes. Smokeball workflows — automated task sequences tied to matter types and status triggers — do not migrate automatically; they must be manually rebuilt using Odoo's base.automation engine or Studio tools. We access Smokeball data via their REST API for live extraction and write to Odoo using XML-RPC API calls. A sample migration runs first so you can verify field-level accuracy before the full cutover commits.

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

Smokeball logo

Smokeball

What's pushing teams away

  • Billing issues appear in 22+ G2 reviews, with users reporting disorganization in invoicing, problems with payment routing, and hard/soft cost misalignments between Smokeball and integrated accounting software like Xero or MYOB.
  • Missing features frustrate users, particularly poor search functionality across documents and the absence of auto-save, which leads to lost work and wasted time re-entering data.
  • Software bugs cause real operational pain—duplicate documents appearing in containers, slow performance under load, and files failing to load after upload, each cited 14+ times on review platforms.
  • Collaboration limitations and cumbersome document import processes are cited as missing features, making it difficult for multi-attorney firms to share and organize files efficiently.
  • Integration issues with third-party software, particularly after major updates, cause connectivity failures with Outlook, LawPay, and accounting tools that disrupt billing workflows.

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

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

Smokeball

Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

Smokeball contacts map directly to Odoo res.partner records. Names, emails, phone numbers, addresses, and tags transfer as-is. The res.partner record type (contact vs. company) defaults to 'contact' unless the Smokeball contact has a company association, in which case it becomes a company record with contact children.

Smokeball

Contact (with company link)

maps to

Odoo CRM

res.partner (company record)

1:1
Fully supported

Smokeball contacts that have a primary company association become Odoo res.partner records with partner_type='company'. The company name from Smokeball becomes the res.partner name field, while individual contact names populate the display_name field. Child contacts for that company create separate res.partner records linked via child_ids, preserving the hierarchical relationship structure.

Smokeball

Matter

maps to

Odoo CRM

crm.lead (opportunity stage)

1:1
Fully supported

Smokeball matters map to Odoo crm.lead records in the 'opportunity' state (type='opportunity'). The matter description becomes the crm.lead name field. Matter status (Open/Pending/Closed) maps to Odoo crm.stage_id based on the stage configuration in Odoo's CRM Pipeline settings, requiring prior stage setup by your Odoo administrator.

Smokeball

Matter Type

maps to

Odoo CRM

crm.lead.stage_id + custom field

1:1
Fully supported

Smokeball matter types (e.g., Family Law, Personal Injury, Corporate) have no direct Odoo equivalent. We create a custom Char or Selection field on crm.lead called x_smokeball_matter_type and populate it from the source. Odoo stage configuration can group stages by matter type using Kanban columns filtered by this custom field.

Smokeball

Activity (task/meeting/call)

maps to

Odoo CRM

crm.activity

1:1
Fully supported

Smokeball activities — tasks, meetings, calls, and billable time entries — map to Odoo crm.activity records. Activity type (call, meeting, task, email) maps to Odoo's activity_type_id. Original dates, durations, and staff assignments transfer. Unbilled time entries become crm.activity records linked to the opportunity.

Smokeball

Document / Attachment

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

Smokeball documents attached to matters re-upload to Odoo as ir.attachment records linked to the crm.lead. File names, content types, and binary content preserve exactly as they existed in Smokeball. Large document batches exceeding 500 per matter may require batch processing with smaller chunk sizes to avoid Odoo worker timeout issues during the migration run.

Smokeball

Staff / User

maps to

Odoo CRM

res.users

1:1
Fully supported

Smokeball staff records (first name, surname, email, status) map to Odoo res.users. Email matching resolves the owner on migrated matters and activities. Inactive Smokeball staff become Odoo users with active=False. If Smokeball staff lack email addresses, they are flagged for manual Odoo user creation.

Smokeball

Hard Cost / Soft Cost

maps to

Odoo CRM

account.move.line (on vendor bills)

1:1
Fully supported

Smokeball hard costs and soft costs are legal billing constructs with no Odoo equivalent. We map hard costs to account.move.line entries on vendor bills with a custom x_cost_type='hard' field. Soft costs map similarly with x_cost_type='soft'. Trust accounting balances require separate Odoo configuration post-migration.

Smokeball

Workflow

maps to

Odoo CRM

base.automation (manual rebuild)

1:1
Fully supported

Smokeball workflows (automated task sequences tied to matter type triggers) do not migrate. We export workflow definitions as JSON so your Odoo administrator can rebuild them using base.automation triggers (on_create, on_write, on_cron) and server actions. The exported JSON includes task names, trigger conditions, and sequence order.

Smokeball

Tag

maps to

Odoo CRM

res.partner.category

1:1
Fully supported

Smokeball contact tags map to Odoo res.partner.category (contact tags). Matter tags map to crm.tag. Tags with identical names merge; tags with no Odoo match create new category records during migration. Tag color assignments do not transfer and default to Odoo's neutral color.

Smokeball

Custom Field (Contact/Matter)

maps to

Odoo CRM

ir.model.fields (x_ fields)

1:1
Fully supported

Smokeball custom fields on contacts and matters require Odoo custom field creation via Settings > Technical > Database Structure > Fields. Field types map: text to Char, number to Float or Integer, date to Date, dropdown to Selection. Post-migration, Odoo Studio provides a GUI for managing these fields.

Smokeball

Trust Account Balance

maps to

Odoo CRM

account.journal (trust) + account.move

1:1
Fully supported

Smokeball trust account balances (client funds held in trust) map to an Odoo account.journal with type='bank' and x_is_trust=True custom flag. Opening balances transfer as account.move entries. This setup requires the Odoo accounting module configuration with proper chart of accounts and trust-specific account codes established before migration runs.

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.

Smokeball logo

Smokeball gotchas

High

Document upload may not finish before Go Live

High

Data entry must halt during final LIVE migration cutover

Medium

Duplicate contacts are not detected during import

Medium

Closed and archived matters migrate after Go Live

Medium

Lower pricing tiers strip PDF functionality and auto time

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

  • Smokeball matters have no Odoo equivalent — stage mapping requires Odoo Pipeline configuration

    Smokeball models legal matters with types (Family, Criminal, Corporate) and statuses (Open, Pending, Closed) tied to billing workflows. Odoo CRM stages are defined per Pipeline (crm.team), and stage values are pick-list fields on crm.lead. If your Smokeball setup uses 5+ matter types with different status progressions, Odoo's single Pipeline per team model may not match. We create custom fields on crm.lead for matter_type and preserve status-as-of-migration as a stage-override note. Your Odoo admin must configure Pipeline stages to reflect your matter-type workflow before or after migration.

  • Smokeball workflows require manual Odoo rebuild using base.automation

    Smokeball workflows are automated task sequences triggered when a matter is opened or a specific condition is met (e.g., 'New Family Law matter creates intake tasks for paralegal, sets calendar reminder, sends client intake form'). Odoo has no equivalent workflow engine that reads Smokeball's trigger logic. We export your workflow definitions as structured JSON (task names, trigger conditions, sequence order, assignee rules) so your Odoo administrator can rebuild them using base.automation triggers. This is manual work — plan 1-3 hours per workflow for configuration in Odoo Studio or via automation rules.

  • Trust accounting and billing balances need Odoo accounting module configuration before import

    Smokeball hard costs, soft costs, and trust account balances are legal-industry accounting constructs tied to matter-level billing. Odoo accounting module handles invoicing and payments but trust accounting (client funds held separately) requires custom journal configuration with x_is_trust=True flag, proper account codes for client trust, and ODOO's account.payment model setup. If your Smokeball migration includes active trust balances, the accounting module must be configured before migration data lands — otherwise balances appear as orphaned entries without proper account linkage.

  • Document container/letterhead templates do not migrate — document content does

    Smokeball stores letterhead templates and document containers as Word-based template references tied to practice areas. These template definitions include variable placeholders, conditional logic for different matter types, and pre-configured formatting styles. Odoo has no native document container concept — document generation uses QWeb templates in Odoo's reporting engine. The actual document content and binary attachments migrate to ir.attachment linked to crm.lead records, but letterhead styling, template placeholders, and document layout configurations must be rebuilt in Odoo using the reporting module's layout editor or Studio's PDF report designer.

  • Smokeball API rate limits are undocumented — large extractions may require throttling

    Smokeball's REST API does not publicly document rate limits. During extraction of large firms (500+ matters, 50k+ documents), we have observed 429 Too Many Requests responses intermittently. FlitStack AI implements exponential backoff and batch-size reduction when rate limit responses occur. If your Smokeball subscription is on a lower tier, API access may be restricted entirely — in that case, CSV export via Smokeball's Data Import tool is the fallback, with binary document extraction via direct database access where permitted.

Migration approach

Six steps for a successful Smokeball to Odoo CRM data migration

  1. Audit Smokeball data and configure Odoo accounting module

    FlitStack AI runs a pre-migration audit against your Smokeball instance via REST API — extracting contacts, matters, activities, documents, staff, tags, and custom field schemas. We generate a data quality report flagging duplicates, missing emails, inactive records, and workflow count. Simultaneously, your Odoo administrator configures the accounting module (chart of accounts, trust journal, tax codes) so billing data has a destination on migration day.

  2. Create Odoo custom fields and configure CRM Pipeline stages

    Based on the audit findings, we create Odoo custom fields (x_smokeball_matter_type, x_internal_reference, x_original_create_date, x_cost_type, and others) via the ir.model.fields API. This includes Selection fields for dropdown values, Char fields for text, Date fields for timestamps, and Float/Integer fields for numeric custom properties. Your Odoo administrator then configures CRM Pipeline stages to match your Smokeball matter statuses, grouping Kanban columns by matter type where applicable. This step ensures field mapping validation runs against the correct Odoo schema before migration data arrives.

  3. Run sample migration with field-level diff for verification

    A representative sample (typically 200–500 records including 50 contacts, 30 matters, 100 activities, and 20 documents) migrates to your Odoo instance first. We generate a comprehensive field-level diff comparing source values against destination field contents, surfacing any mapping discrepancies, truncated data, or missing field translations before the full run proceeds. You review the diff output and approve the mapping accuracy before cutover commits to the complete dataset.

  4. Execute full migration with delta-pickup window

    The full migration executes in dependency order: res.partner records first (since crm.lead requires partner_id links), then crm.lead records for matters, then crm.activity records linked to leads, and finally ir.attachment records for documents. A 24–48 hour delta-pickup window captures any records created or modified in Smokeball during the cutover period. An audit log records every write operation with timestamps and user context; if reconciliation fails, a one-click rollback reverts the Odoo instance to its pre-migration state.

  5. Deliver workflow export package and post-migration handoff

    We export Smokeball workflow definitions as structured JSON containing task names, trigger conditions, assignee rules, and sequence order for each workflow. Alongside the export, we deliver a detailed rebuild guide that maps each Smokeball trigger condition to corresponding Odoo base.automation triggers (on_create, on_write, on_cron, on_change) and available server actions. Post-migration, your Odoo administrator configures the accounting module trust journal if applicable, assigns CRM team membership to migrated users, and validates document attachments on sample matters. FlitStack provides 30 days of post-migration support for data corrections and mapping adjustments.

Platform deep dives

Context on both ends of the pair

Smokeball logo

Smokeball

Source

Strengths

  • Automatic time tracking via AutoTime captures billable activity without manual entry, directly improving firm collection rates.
  • Comprehensive document automation with Smokeball Toolbar in Microsoft Word enables rapid generation of standardized legal precedents and letters.
  • Built-in trust accounting and reporting satisfy law firm regulatory requirements out of the box.
  • Exceptional customer support with dedicated Client Success Managers and UK-based telephone support keeps small firms operational.
  • AI assistant Archie and Outlook integration reduce context switching for attorneys managing client communications.

Weaknesses

  • Billing issues appear frequently in reviews, with payment routing and cost allocation problems requiring manual intervention.
  • Search functionality across documents and matters is a known pain point, making it difficult to locate historical files efficiently.
  • Auto-save is not available, risking data loss if attorneys forget to save manually during document work.
  • Collaboration features are limited, making Smokeball less suitable for large multi-office or multi-attorney firms requiring real-time co-authoring.
  • Price increases have been reported by existing customers, and lower tiers strip critical features like PDF functionality and automatic time tracking.
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 Smokeball 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

    Smokeball: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Smokeball to Odoo CRM migrations typically complete in 3–5 days of clock time for under 25,000 records. Larger setups with 100,000+ records, 50+ custom fields, or multi-firm configurations extend to 7–12 days. The longest single step is often Odoo Pipeline stage configuration — your admin should define stages before migration data lands. Delta-pickup adds 24–48 hours after the full run commits.

Adjacent paths

Related migrations to explore

Ready when you are

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