CRM migration
Field-level mapping, validation, and rollback between Aderant Milana and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Aderant Milana
Source
Odoo CRM
Destination
Compatibility
12 of 13
objects map 1:1 between Aderant Milana and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Aderant Milana is a legal practice management system built around court rules-based calendaring and matter tracking. Its core objects — Contacts, Matters, Calendars, and Documents — serve law firms that need deadline compliance. Odoo CRM is a general-purpose business development platform centered on leads, opportunities, pipeline stages, and sales activities. The migration maps Milana contact records (attorneys, clients, opposing counsel) to Odoo crm.lead objects, Milana matters to Odoo opportunities or custom crm.lead fields, and Milana calendar entries to Odoo calendar.meeting or crm.activity records. Court rules libraries and compliance logic have no direct Odoo equivalent — those must be rebuilt using Odoo's calendar reminders and custom fields. We migrate everything the API and export tools can reach: contact names, email addresses, matter titles, matter numbers, responsible attorneys, deadline dates, and file attachments. Workflows, approval chains, and billing rate tables do not migrate — we provide export-for-rebuild packages so your Odoo administrator can reconstruct them in Odoo's automation tools.
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 Aderant Milana 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.
Aderant Milana
Milana Contact (Attorney)
Odoo CRM
crm.lead
1:1Milana attorney records map to Odoo crm.lead with type='lead'. The attorney's name, email, phone, and bar number migrate as custom fields on crm.lead. Owner assignment resolves by email match against Odoo res.users. If an attorney email does not match an existing Odoo user, we create a pending user record for activation.
Aderant Milana
Milana Contact (Client)
Odoo CRM
res.partner
1:1Milana client records map to Odoo res.partner (contact). Client company name maps to partner_name, individual name maps to name. Email and phone migrate as direct fields. Client matter history preserved as a custom many2many field. We also map the client's primary address to the partner's street and city fields.
Aderant Milana
Milana Matter
Odoo CRM
crm.opportunity
1:1Milana matters become Odoo crm.opportunity records. Matter number maps to opportunity name with matter type prefix. Matter status (Open/Closed) maps to stage — 'Open' routes to Odoo Qualified stage, 'Closed' routes to Won or Lost based on disposition. We preserve the original matter open date as the opportunity's create_date.
Aderant Milana
Milana Matter Type
Odoo CRM
crm.lead custom field
1:1Odoo has no native matter-type concept. Milana matter classifications (e.g., Litigation, Corporate, Real Estate) migrate as a custom selection field Matter_Type__c on crm.opportunity so your team can filter pipelines by legal work type. We also add a corresponding dropdown option list in Odoo Studio to keep the selection consistent.
Aderant Milana
Milana Calendar Entry (Deadline)
Odoo CRM
calendar.event
1:1Milana court deadlines and calendar entries map to Odoo calendar.event records. Start date and stop date migrate with original timestamps. Reminder settings default to 1 day before; your admin can adjust in Odoo calendar settings. If a deadline spans multiple days, we create separate all-day events for each day.
Aderant Milana
Milana Calendar Entry (Filing)
Odoo CRM
crm.activity
1:1Filing-related calendar entries map to Odoo crm.activity with activity_type='Legal Filing'. The filing deadline date and responsible attorney link migrate so Odoo activities show the owner assignment. We also map the filing description to the activity note field, preserving any attached instructions or references.
Aderant Milana
Milana Document
Odoo CRM
ir.attachment
1:1Milana documents attached to matters re-upload to Odoo ir.attachment linked to the corresponding crm.opportunity. File size limits: Odoo Community default 25MB per file. Documents over 25MB are flagged for chunked upload. We also verify file integrity by comparing MD5 checksums before and after the upload process.
Aderant Milana
Milana Court Rules Library
Odoo CRM
No equivalent
1:1Milana's court rules library (the core legal compliance feature) has no Odoo CRM equivalent. Rules-based deadline calculation must be rebuilt in Odoo using custom calendar rules or a third-party legal calendar integration. We recommend documenting each jurisdiction's rule set during the audit for accurate rebuilding.
Aderant Milana
Milana Billing Rate Table
Odoo CRM
No equivalent
1:1Milana attorney billing rates and timekeeping rules do not map to Odoo CRM. These must be rebuilt in Odoo using the product/pricelist model or the Odoo Timesheet app if your plan includes it. We provide a rate-table export template with service codes, effective dates, and billing tiers for straightforward import.
Aderant Milana
Milana Opposing Counsel
Odoo CRM
res.partner (contact)
many:1Opposing counsel contacts merge with the general Milana Contact pool and map to res.partner records. A custom field Opposing_Counsel__c = True flags these contacts so Odoo users can filter the partner list. We also set a default contact type of 'opposing_counsel' on these partner records for consistency.
Aderant Milana
Milana User / Attorney Owner
Odoo CRM
res.users
1:1Milana user accounts resolve by email match to Odoo res.users. Unmatched attorneys are flagged before migration — your team either creates Odoo users first or assigns records to a fallback administrator. We provide a CSV list of unmatched emails for rapid user creation in Odoo's user management panel.
Aderant Milana
Milana Custom Field (Matter)
Odoo CRM
ir.model.fields custom
1:1Milana firm-specific custom matter fields (e.g., Jury Trial Demand, Case Judge, Statute of Limitations) create Odoo custom fields on crm.opportunity using the field name as label and appropriate data type (char, date, selection). We also add help text to each field describing the expected data format and example values.
Aderant Milana
Milana Notes
Odoo CRM
mail.message
1:1Milana matter notes migrate as Odoo mail.message records attached to the crm.opportunity. Original note text and create date preserved. Rich-text formatting is retained where the export format supports it. If a note includes embedded images, we store them as binary attachments and reference them in the message body.
| Aderant Milana | Odoo CRM | Compatibility | |
|---|---|---|---|
| Milana Contact (Attorney) | crm.lead1:1 | Fully supported | |
| Milana Contact (Client) | res.partner1:1 | Fully supported | |
| Milana Matter | crm.opportunity1:1 | Fully supported | |
| Milana Matter Type | crm.lead custom field1:1 | Fully supported | |
| Milana Calendar Entry (Deadline) | calendar.event1:1 | Fully supported | |
| Milana Calendar Entry (Filing) | crm.activity1:1 | Fully supported | |
| Milana Document | ir.attachment1:1 | Fully supported | |
| Milana Court Rules Library | No equivalent1:1 | Fully supported | |
| Milana Billing Rate Table | No equivalent1:1 | Fully supported | |
| Milana Opposing Counsel | res.partner (contact)many:1 | Fully supported | |
| Milana User / Attorney Owner | res.users1:1 | Fully supported | |
| Milana Custom Field (Matter) | ir.model.fields custom1:1 | Fully supported | |
| Milana Notes | mail.message1: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.
Aderant Milana gotchas
CompuLaw legacy data requires pre-migration transformation
Court rules jurisdiction mapping must be validated per-matter
Document repositories require path remapping
User and calendar ownership requires explicit re-assignment
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
Audit Milana data export and Odoo target schema
FlitStack AI reads your Aderant Milana data via the Aderant Expert API or export tools. We inventory all contact types, matter records, calendar entries, and document attachments. In parallel, we inspect your target Odoo database to identify installed CRM modules, existing pipeline stages, and custom field definitions. This audit produces a field-level mapping spreadsheet before any data moves. The spreadsheet includes data type, validation rules, and target Odoo field names.
Create Odoo custom fields and pipeline stages
Based on the mapping spreadsheet, we create the required Odoo custom fields on crm.lead and crm.opportunity (Matter_Type__c, Matter_Number__c, Jury_Trial__c, etc.) and configure a Milana-specific pipeline with stages matching your matter statuses. We also create the calendar event types for legal filings and court appearances. Your Odoo admin approves the schema before migration runs. We also generate a validation script to test field constraints in a staging environment before go-live.
Resolve attorney and user owners by email
Milana attorney and user accounts are matched against Odoo res.users by email address. Unmatched users are flagged — your team either creates Odoo user accounts first or assigns their records to a fallback administrator. No opportunity or calendar event lands without an Odoo owner. We provide a pre-migration checklist of required Odoo users, with email templates for inviting staff and assigning security roles.
Run a sample migration with field-level diff
A representative slice migrates first — typically 50–200 records spanning attorneys, clients, matters, calendar events, and attachments. We generate a field-level diff comparing source Milana values against destination Odoo fields so you can verify matter status mapping, deadline date accuracy, and owner resolution before the full run commits. The diff report highlights any missing fields, mismatched values, or unexpected nulls, enabling rapid corrective action before production.
Execute full migration with delta-pickup window
The full migration runs against your Odoo database. A 24–48 hour delta-pickup window captures any Milana records created or modified during cutover so Odoo reflects Milana's final state at go-live. Audit logs capture every operation, and one-click rollback is available if reconciliation reveals data integrity issues. Documents re-upload to Odoo filestore linked to their respective opportunities. We also schedule a post-migration review meeting to confirm data completeness and discuss ongoing maintenance.
Platform deep dives
Aderant Milana
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Aderant Milana and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Aderant Milana and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Aderant Milana 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
Aderant Milana: Not publicly documented — Aderant's API Terms reserve the right to enforce usage limits at their discretion, with no published numeric thresholds. Confirmed during vendor scoping..
Data volume sensitivity
Aderant Milana 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 Aderant Milana to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Aderant Milana 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 Aderant Milana
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.