CRM migration
Field-level mapping, validation, and rollback between Aderant Milana and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Aderant Milana
Source
Twenty CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Aderant Milana and Twenty CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Aderant Milana is a legal-industry docketing and calendar management platform built around matters, clients, court rules libraries, and deadline-tracking workflows. It stores contacts and companies in a matter-centric schema where every record is anchored to a legal matter and attorney assignments drive ownership. Twenty CRM is an open-source CRM built on PostgreSQL with a generic object model: People, Companies, Opportunities, Notes, and Tasks as standard objects, plus fully customizable custom objects and fields. The migration from Milana to Twenty is a domain-shift: it transforms a practice-management system into a sales-and-relationship CRM. We map Milana's Client records to Twenty Companies, Milana's Contact records to Twenty People, and Milana's Matters to Twenty Opportunities — reparenting each matter under its associated client in Twenty's object graph. Calendar events and deadline records migrate as Tasks with original due dates and assigned users preserved. Milana's custom fields and UDF-style properties become Twenty custom fields, created in the data model before CSV import. We do not migrate Milana's court rules, automated docketing workflows, or matter-specific legal configurations — those require manual rebuild in Twenty's workflow engine. The migration mechanism uses Milana's API and export utilities to extract records, FlitStack's ETL layer to transform and map, and Twenty's CSV import endpoint (with API fallback for large datasets) to land data. A delta-pickup window captures any changes made in Milana during the cutover window.
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 Twenty 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
Client
Twenty CRM
Company
1:1Milana Client records map directly to Twenty Companies. Client name maps to Company.name, primary address maps to the company's address fields, and industry can be set as a custom select. Multi-office clients create one Company record with address as the primary; branch offices can be tracked via a custom field.
Aderant Milana
Contact
Twenty CRM
Person
1:1Milana Contact records (attorneys, paralegals, opposing counsel, client representatives) map to Twenty People. Each person is linked to their associated Company via companyId. Role or relationship to a matter is preserved as a custom select field on the Person record.
Aderant Milana
Matter
Twenty CRM
Opportunity
1:1Milana Matter is the core record but Milana's matter model includes billable hours, court info, and legal status fields that don't exist in Twenty's Opportunity. We map Matter.name to Opportunity.name, Matter.client to the related Company, Matter.status to a custom Opportunity status field, and billable amounts to Opportunity.amount. Legal-specific fields (court, judge, opposing counsel) become custom fields on the Opportunity.
Aderant Milana
Matter Deadline / Calendar Event
Twenty CRM
Task
1:1Milana deadline events and calendar entries map to Twenty Tasks. The task title captures the deadline description, dueDate maps to Task.dueDate, and the assigned user is resolved by email match against Twenty Workspace Members. Calendar type (court hearing, filing deadline, client meeting) becomes a Task.customField.
Aderant Milana
Document / File
Twenty CRM
Note
1:1Milana document records and file attachments associated with matters become Twenty Notes. The Note body captures document metadata (title, date, type) and a link to the re-uploaded file. We re-upload files to the attachment storage linked from the Note record.
Aderant Milana
Attorney / User
Twenty CRM
WorkspaceMember
1:1Milana attorney and user records map to Twenty Workspace Members by email resolution. The Milana user email must match an invited Twenty workspace member to resolve correctly. Attorney role classifications such as partner, associate, paralegal, or contract attorney are preserved as a custom text field on the Workspace Member record for permissions and assignment context across matters and opportunities.
Aderant Milana
Bill / Invoice
Twenty CRM
Custom Object: Invoice
1:1Milana's bill and invoice records have no direct Twenty CRM equivalent. We create a custom Invoice object in Twenty with fields: invoice number, amount, date, status, and a lookup to the related Opportunity (matter). Invoice line items become a second custom object linked to Invoice.
Aderant Milana
Time Entry
Twenty CRM
Custom Object: TimeEntry
1:1Milana time entries track billable hours per matter and attorney. We create a custom TimeEntry object with fields: hours, date, attorney (lookup to WorkspaceMember), matter (lookup to Opportunity), description, and billing status. TimeEntry links to both the attorney and the matter Opportunity.
Aderant Milana
Custom Field / UDF
Twenty CRM
Custom Field
1:1Milana user-defined fields on any object map to Twenty custom fields on the corresponding object. Before import, FlitStack creates all custom fields in Twenty's data model so the CSV import can populate them. Field types are mapped: Milana text → Twenty text, Milana date → Twenty date, Milana picklist → Twenty select.
Aderant Milana
Court Rules Library
Twenty CRM
No Equivalent
1:1Milana's court rules library is a legal-domain knowledge base with no CRM equivalent. We do not migrate it. Firms must use Milana or a dedicated legal rules provider for court rule lookups post-migration. The rules data can be exported as a reference document.
Aderant Milana
Docketing Workflow / Automation
Twenty CRM
No Equivalent
1:1Milana's automated docketing rules (trigger-based calendar event creation from court rules) have no direct Twenty CRM equivalent. Twenty's workflow builder handles CRM-level automation but not court-rule-driven event generation. We export Milana workflow definitions as a rebuild reference for the firm's legal operations team.
Aderant Milana
Insurance / Trust Account
Twenty CRM
No Equivalent
1:1Milana tracks client trust account balances and insurance requirements as part of matter records. These are financial/accounting constructs outside Twenty CRM's scope. We preserve them as custom fields on the Company or Opportunity for reference only; the accounting logic must live in a dedicated legal accounting system.
| Aderant Milana | Twenty CRM | Compatibility | |
|---|---|---|---|
| Client | Company1:1 | Fully supported | |
| Contact | Person1:1 | Fully supported | |
| Matter | Opportunity1:1 | Fully supported | |
| Matter Deadline / Calendar Event | Task1:1 | Fully supported | |
| Document / File | Note1:1 | Fully supported | |
| Attorney / User | WorkspaceMember1:1 | Fully supported | |
| Bill / Invoice | Custom Object: Invoice1:1 | Fully supported | |
| Time Entry | Custom Object: TimeEntry1:1 | Fully supported | |
| Custom Field / UDF | Custom Field1:1 | Fully supported | |
| Court Rules Library | No Equivalent1:1 | Fully supported | |
| Docketing Workflow / Automation | No Equivalent1:1 | Fully supported | |
| Insurance / Trust Account | No Equivalent1: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
Twenty CRM gotchas
Import order is enforced and critical
Export limited to 20,000 records and visible columns only
Soft-deleted records count toward uniqueness and trigger restores
API rate limits cap at 200 req/min on Organization tier
No native email sequences — follow-up cadences require external tools
Pair-specific challenges
Migration approach
Extract Milana data via API and export utilities
FlitStack connects to Milana using the Aderant API (authenticated via enterprise credentials) and Milana's built-in export utilities to pull all standard objects: Clients, Contacts, Matters, Time Entries, Invoices, Calendar Events, and Deadline records. User-defined field schemas are captured separately so the full field inventory is known before mapping begins. Milana's export is scoped read-only — your team continues working in Milana throughout. The extraction produces a structured data dump organized by object with foreign key references intact.
Design Twenty data model and pre-create custom fields
Before any data lands in Twenty, FlitStack delivers a data model design document that maps every Milana object and field to its Twenty equivalent. All custom fields (court, judge, matter type, billing status, etc.) are specified with field type and select options. Your Twenty admin (or our team) creates these fields in Settings → Data Model. This step is critical — Twenty's CSV import will silently ignore any column that has no corresponding field. The custom field creation must be complete before the import CSV files are generated.
Map and transform data; generate migration CSV files
FlitStack's ETL layer transforms Milana records into Twenty CSV format, applying all object and field mappings. Matter records are reparented under their associated Client/Company. Contact records are linked to Companies via companyId. Milana attorneys are resolved by email against Twenty Workspace Members. User-defined field values are translated to Twenty select options. Milana's matter-specific custom fields are mapped to the corresponding custom fields created in Step 2. The ETL layer also de-duplicates records using email and matter number as unique keys.
Run sample migration with field-level diff
A representative slice (typically 200–500 records spanning Companies, People, Opportunities, Tasks, and custom objects) is imported first. FlitStack generates a field-level diff comparing source Milana values against the imported Twenty values for every mapped field. You verify that matter status, assigned attorney, due dates, and custom fields all landed correctly. Any mapping errors are corrected in the ETL layer before the full migration run is triggered. This sample step prevents full-run surprises and gives your team confidence in the mapping logic.
Execute full migration with delta-pickup window
The full migration runs against Twenty using the corrected ETL pipeline. A delta-pickup window (typically 24–48 hours) runs concurrently, capturing any records created or modified in Milana during the cutover. FlitStack's audit log records every record created, updated, or skipped. If reconciliation reveals discrepancies, a one-click rollback reverts the Twenty workspace to its pre-migration state. After rollback verification, the full migration re-runs with the delta records included. Your team transitions to Twenty at go-live; Milana access is retained in read-only mode for a 30-day reference window.
Platform deep dives
Aderant Milana
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Aderant Milana and Twenty CRM.
Object compatibility
1 of 8 objects need a mapping; the rest are 1:1.
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 Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Aderant Milana to Twenty 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 Twenty 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.