CRM migration
Field-level mapping, validation, and rollback between FilePro and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
FilePro
Source
Odoo CRM
Destination
Compatibility
10 of 10
objects map 1:1 between FilePro and Odoo CRM.
Complexity
BStandard
Timeline
3–5 business days
Overview
FilePro stores client and matter data in a proprietary flat-file database structure with User Defined Fields (UDFs) that firms configure per their practice areas. The platform has no standard REST or GraphQL API — data extraction relies on the built-in EXPORT command, which produces delimited ASCII or fixed-width files that require schema inference before mapping. Odoo CRM uses a relational model built on PostgreSQL: res.partner holds contacts and companies, crm.lead holds both leads and opportunities, account.analytic.line captures time and costs, and ir_attachment stores documents. Custom fields in Odoo are created via Odoo Studio or directly in the database as x_name columns on the target model. The migration therefore requires three phases: extracting FilePro data via the EXPORT command or direct database read, inferring the FilePro schema (field names, data types, and relationships between clients, matters, and billing records), then transforming and loading into Odoo's relational structure. Workflows, billing rules, and trust accounting configurations do not migrate — FlitStack exports the definitions as reference documents for manual rebuild in Odoo's automated actions and accounting modules. The migration uses Odoo's XML-RPC API for record creation, with bulk operations and batch commits to handle volume efficiently.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a FilePro 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.
FilePro
Client
Odoo CRM
res.partner
1:1FilePro clients map to Odoo res.partner records. The partner's address, phone, and email fields map directly. For law firms, clients are typically stored as companies (type='company') rather than individuals — the is_company flag is set based on FilePro's client-type indicator.
FilePro
Client Contact
Odoo CRM
res.partner (individual)
1:1FilePro contact records within a client matter (e.g., opposing counsel, referrer contacts, co-counsel) map to res.partner with type='contact' and a parent_id linking to the primary client partner. Name fields split into firstname/lastname using Odoo's name_split logic. If FilePro stores only a full-name field without a separator, the migration applies standard name parsing heuristics to extract the components correctly.
FilePro
Matter
Odoo CRM
crm.lead
1:1FilePro matters are the primary work units — they map to Odoo crm.lead records representing opportunities or cases. The matter description becomes the lead description field. Matter status (open, closed, billed) maps to crm.lead stage_id through a value-mapping defined during discovery.
FilePro
User Defined Field (UDF)
Odoo CRM
ir.model.field (custom)
1:1Each FilePro UDF requires an Odoo custom field to be created on the appropriate model before data loads. String-type UDFs become char or text fields, numeric UDFs become float or integer, date UDFs become date fields, and pick-list UDFs become selection fields with value-mapping entries.
FilePro
Time Entry
Odoo CRM
account.analytic.line
1:1FilePro time entries map to Odoo account.analytic.line records linked to the matter's analytic account. Unit_amount carries the duration in hours, product_id links to the service item, and staff initials resolve to Odoo res.users via the operator mapping table created during discovery.
FilePro
Document / File
Odoo CRM
ir_attachment
1:1FilePro document attachments linked to matters are downloaded and re-uploaded to Odoo's ir_attachment table via the /web/binary/attachment XML-RPC API. Each file's binary content transfers as base64-encoded data through the datas field. The res_model and res_id fields link each attachment to the corresponding crm.lead record representing the matter. FilePro file metadata such as creation dates and author information is preserved in the attachment's create_date and create_uid fields during upload.
FilePro
Billing Record / Invoice
Odoo CRM
account.move
1:1FilePro invoice records map to Odoo account.move with move_type='out_invoice'. Each invoice header creates one account.move record, preserving the invoice number, date, and partner_id from FilePro. Line items generate account.move.line entries linked to the matter's analytic account for cost tracking. Tax amounts and discounts from FilePro map to appropriate tax and analytic fields on the line entries. Trust account transactions from FilePro's billing system map to separate journal entries on the trust account journal configured in Odoo Accounting.
FilePro
Trust Accounting Entry
Odoo CRM
account.move + account.journal
1:1FilePro trust ledger entries (receipts, disbursements, transfers) map to Odoo account.move records on the trust account journal configured in Odoo Accounting. Receipt transactions create journal entries that debit the trust receivable account and credit the appropriate client-specific trust liability account. Disbursement transactions reverse this pattern with debits to the trust payable account and credits to the operating account. Each transaction maps to the firm's chart of accounts entries established during Odoo schema setup. The matter_id on each entry links to the corresponding analytic account for client-level trust balance reporting.
FilePro
Staff / Operator
Odoo CRM
res.users
1:1FilePro operator IDs map to Odoo res.users records. Matching is performed by email address where available in FilePro staff records, or by full name if email is absent. Staff without an identifiable match are flagged as 'Unresolved Owner' for manual assignment before the migration commits.
FilePro
Calendar / Appointment
Odoo CRM
calendar.event
1:1FilePro calendar entries linked to matters map to Odoo calendar.event records. The start datetime and stop datetime fields carry over directly from FilePro, preserving the original appointment duration and timing. The event's res_id links to the corresponding crm.lead record representing the matter, and the res_model field is set to 'crm.lead' to establish the relationship. Staff assignment uses the mapped res.users record from the operator mapping table created during discovery. For all-day events or multi-day appointments, the allday flag and start_date/stop_date fields are set appropriately in Odoo.
| FilePro | Odoo CRM | Compatibility | |
|---|---|---|---|
| Client | res.partner1:1 | Fully supported | |
| Client Contact | res.partner (individual)1:1 | Fully supported | |
| Matter | crm.lead1:1 | Fully supported | |
| User Defined Field (UDF) | ir.model.field (custom)1:1 | Fully supported | |
| Time Entry | account.analytic.line1:1 | Fully supported | |
| Document / File | ir_attachment1:1 | Fully supported | |
| Billing Record / Invoice | account.move1:1 | Fully supported | |
| Trust Accounting Entry | account.move + account.journal1:1 | Fully supported | |
| Staff / Operator | res.users1:1 | Fully supported | |
| Calendar / Appointment | calendar.event1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
FilePro gotchas
No REST API — export depends on native EXPORT utility
User Defined Fields are firm-specific with no published schema
Actionstep acquisition creates migration scope ambiguity
Document paths exported as registry, not file bodies
Odoo CRM gotchas
Odoo.sh version gating blocks assisted migrations from trial
Enterprise modules fail to install on Community after database restore
Custom module view inheritance breaks between Odoo major versions
Custom fields risk losing their application context on Community
API access for Community is gated behind the Custom Plan
Pair-specific challenges
Migration approach
Extract FilePro data and infer schema
FlitStack requests admin-level exports from FilePro covering all clients, contacts, matters, time entries, documents, and billing records. We use the EXPORT command with CSV delimiter output to maximize field coverage. Simultaneously, we analyze the exported headers and data patterns to infer FilePro UDF names, data types, and pick-list value sets. The firm's FilePro administrator confirms the inferred schema before we proceed. Any FilePro staff table exports are cross-referenced to begin the operator-to-odoo-user mapping table.
Configure Odoo target schema
We create the required Odoo records before data loads: res.country and res.country.state entries (if not already present), crm.team records per practice area, crm.stage records per team, and custom fields on res.partner and crm.lead using Odoo Studio or direct ir.model.field creation. For firms with Odoo Accounting active, we create or confirm the trust account journal and operating account entries. The custom-field creation script is validated in a staging Odoo environment before execution on the production target.
Build operator mapping and resolve owner IDs
FlitStack matches FilePro operator IDs to Odoo res.users records using the firm's provided mapping table. For any operators without a defined Odoo user, we create a 'Migrated Staff' placeholder user (marked inactive) and assign their records to it, flagging each for the admin to reassign. This step runs before any crm.lead creation so that every opportunity has a resolved user_id at the point of insertion.
Run sample migration with field-level diff
A representative slice of FilePro data — typically 50–200 records across clients, matters, and time entries — is migrated to Odoo staging. We generate a field-level diff comparing source values against Odoo field values for every mapped column. The diff is reviewed with the firm to confirm stage mappings, practice-area routing, and custom-field rendering. No data is committed to the production Odoo instance until the firm signs off on the sample output.
Execute full migration with delta-pickup and audit log
The full migration runs against the production Odoo instance via XML-RPC API using the admin credentials provided by the firm. Records are committed in batches of up to 100 per XML-RPC call to respect Odoo's rate limits. A delta-pickup window (typically 24 hours post-go-live) captures any FilePro records created or modified during the cutover window. Every operation is logged in the FlitStack audit trail, and one-click rollback reverts all inserted records if reconciliation finds discrepancies beyond the agreed tolerance threshold.
Platform deep dives
FilePro
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between FilePro and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across FilePro and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between FilePro and Odoo CRM.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
FilePro: Not applicable — no REST API.
Data volume sensitivity
FilePro doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during FilePro to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your FilePro to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave FilePro
Other ways to arrive at Odoo CRM
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.