CRM migration
Field-level mapping, validation, and rollback between Lexis Affinity and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
Lexis Affinity
Source
Salesforce Sales Cloud
Destination
Compatibility
11 of 12
objects map 1:1 between Lexis Affinity and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
48–72 hours
Overview
Lexis Affinity is a law-practice-management platform built around matters, parties, documents, trust accounts, and time tracking. Salesforce Sales Cloud is a general-purpose CRM built around leads, contacts, accounts, opportunities, and cases. The two platforms share surface-level vocabulary (contacts, activities, files) but differ fundamentally in their financial model, hierarchy model, and relationship cardinality. We extract Lexis Affinity data through its export and API interfaces, then map each object into the closest Salesforce equivalent. Contacts map to Salesforce Contacts linked to Accounts; Lexis Affinity matters map to Salesforce Cases or Opportunities depending on whether the matter is billable; time entries become Salesforce Tasks with billable-hour fields preserved; documents re-upload as Salesforce Files; custom DataForm fields become a serialised JSON custom field on the target record for reference. Trust account balances and operating account ledgers have no native Salesforce equivalent — we create custom fields to carry forward the ledger for your bookkeeper to reconcile post-migration. Workflows, conflict checks, and trust-account automation rules do not migrate; we export the workflow definitions so your Salesforce admin can rebuild them in Flow.
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 Lexis Affinity object lands in Salesforce Sales Cloud, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Lexis Affinity
Contact (Client Party)
Salesforce Sales Cloud
Contact + Account
1:1Lexis Affinity contacts are mapped to Salesforce Contacts with a primary AccountId linking to a Salesforce Account created from the client's organisation name. For solo-client contacts without a company, a default 'Individual Client' Account is used so every Contact has a valid AccountId parent in Salesforce.
Lexis Affinity
Matter
Salesforce Sales Cloud
Case or Opportunity
1:1A Lexis Affinity Matter maps to a Salesforce Case when it is a legal matter (dispute, transaction, advisory). When the matter has an active fee arrangement with a billable amount, it also generates a Salesforce Opportunity so the financial pipeline is visible in Salesforce reporting alongside the operational case record.
Lexis Affinity
Time Entry
Salesforce Sales Cloud
Task
1:1Each time entry becomes a Salesforce Task with the billable hours stored in a custom numeric field (Billable_Hours__c), the billing rate preserved in Rate__c, and the total calculated amount in Billed_Amount__c. The Task.Subject carries the time-entry description; Task.ActivityDate carries the entry date.
Lexis Affinity
Bill / Invoice
Salesforce Sales Cloud
Opportunity + Custom Invoice__c
1:1Lexis Affinity invoices map to a Salesforce Opportunity for the billing relationship plus a custom Invoice__c object created on the fly. Invoice number, date, line items, and total are stored in the custom object; the Opportunity Amount is updated to match the invoice total so Salesforce pipeline reporting reflects the billing event.
Lexis Affinity
Trust Account Ledger Row
Salesforce Sales Cloud
Custom Trust_Ledger__c object
1:1Salesforce has no native trust-accounting model. We create a custom Trust_Ledger__c object with fields for Client__c (lookup to Contact), Account_Type__c (operating, IOLTA, or client trust), Transaction_Date__c, Description__c, Debit__c, and Credit__c. Your bookkeeper reconciles this ledger post-migration against your bank statements.
Lexis Affinity
Document
Salesforce Sales Cloud
ContentDocument / Salesforce Files
1:1Matter documents are re-uploaded as Salesforce Files attached to the corresponding Case record. We preserve file name, version number, and uploader in ContentDocument metadata. Inline images embedded in document metadata are extracted and re-hosted separately in Salesforce Files storage to maintain accessibility and preserve the original visual content associated with each matter file.
Lexis Affinity
Opposing Party / Witness / Vendor (Party roles)
Salesforce Sales Cloud
Contact + Role__c custom field
many:1Lexis Affinity party roles of all types (opposing counsel, expert witness, vendor) are merged into Salesforce Contacts. A custom Role__c pick-list field on the Contact records the party role so your team can filter by role type. Opposing counsel organisations map to Account records with their Contact as the person record.
Lexis Affinity
Custom DataForm fields
Salesforce Sales Cloud
Custom JSON field + optionally __c fields
1:1Lexis Affinity DataForms that define custom fields per matter type are evaluated for 1:1 Salesforce custom field creation. Fields that appear across all matter types get their own __c field. Fields unique to one matter type are serialised into a Matter_DataForms__c long-text field as JSON for reference, with a note to your admin to create dedicated fields if needed.
Lexis Affinity
Calendar / Event
Salesforce Sales Cloud
Event
1:1Lexis Affinity calendar events map to Salesforce Events with original start and end times, owner resolved by email match, and the Case or Contact record as the WhatId parent. Deadlines and court dates stored as matter milestones map to Salesforce Events with a ReminderDateTime set per the original deadline.
Lexis Affinity
Conflict Check Result
Salesforce Sales Cloud
Custom Conflict_Check__c custom field
1:1Conflict check results have no native Salesforce equivalent, so we store the conflict check date, result (cleared, conflict found, or requires review), and all parties checked in a custom Conflict_Check__c field on the Account record for audit and compliance purposes. This preserves the audit trail even though automated conflict checking cannot be re-run natively in Salesforce.
Lexis Affinity
Responsible Attorney (Staff User)
Salesforce Sales Cloud
User (OwnerId)
1:1Lexis Affinity staff and attorney records are matched to Salesforce Users by email address lookup. Any staff member without a matching Salesforce User is flagged before migration with their associated matter count so your team can decide whether to create a User or reassign their matters to a fallback attorney owner before migration proceeds.
Lexis Affinity
Billing Rate Schedule
Salesforce Sales Cloud
Custom Billing_Rate__c object
1:1Lexis Affinity stores per-attorney and per-matter-type billing rates in the rate schedule. We create a custom Billing_Rate__c object with a lookup to the User record, matter_type pick-list, and rate_amount currency field. This allows time entries in Salesforce to reference the correct rate when calculating billable amounts per attorney and matter type combination.
| Lexis Affinity | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Contact (Client Party) | Contact + Account1:1 | Fully supported | |
| Matter | Case or Opportunity1:1 | Fully supported | |
| Time Entry | Task1:1 | Fully supported | |
| Bill / Invoice | Opportunity + Custom Invoice__c1:1 | Fully supported | |
| Trust Account Ledger Row | Custom Trust_Ledger__c object1:1 | Fully supported | |
| Document | ContentDocument / Salesforce Files1:1 | Fully supported | |
| Opposing Party / Witness / Vendor (Party roles) | Contact + Role__c custom fieldmany:1 | Fully supported | |
| Custom DataForm fields | Custom JSON field + optionally __c fields1:1 | Fully supported | |
| Calendar / Event | Event1:1 | Fully supported | |
| Conflict Check Result | Custom Conflict_Check__c custom field1:1 | Fully supported | |
| Responsible Attorney (Staff User) | User (OwnerId)1:1 | Fully supported | |
| Billing Rate Schedule | Custom Billing_Rate__c object1: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.
Lexis Affinity gotchas
Records and Safe Custody module creates migration lock-in
DataForm custom field schemas are per-firm and must be reverse-engineered
Trust account sub-account types map differently to destination ledgers
Workflow automations do not export and must be rebuilt manually
Salesforce Sales Cloud gotchas
Workflow Rules and Process Builder are retired
Bulk API batch quota exhaustion during large imports
Storage overage billing is non-obvious
Account-Contact many-to-many relationship mapping
Territory and team member import ordering dependencies
Pair-specific challenges
Migration approach
Extract Lexis Affinity data via export and API
We request a full data export from Lexis Affinity covering all matter types, contacts, parties, time entries, invoices, trust account ledger rows, and documents. Where the export is incomplete (certain DataForm fields or document metadata may require direct API reads), we supplement with targeted API calls. The export is reviewed for data quality: duplicate contacts, matter records with missing responsible attorneys, and time entries with orphaned billing rates are flagged for your team to resolve before we begin mapping.
Build Salesforce schema: record types, custom fields, and objects
Before data lands in Salesforce, we create the schema: one Case record type per Lexis Affinity matter type (so page layouts and pick-list values are scoped correctly per practice area), the Trust_Ledger__c and Invoice__c custom objects, the Billing_Rate__c object, and all custom fields referenced in the field mapping. We deliver a schema setup plan as a package.xml so your Salesforce admin can deploy it to a sandbox first, review the field configuration, and promote to production.
Resolve attorneys and staff by email match to Salesforce Users
Lexis Affinity staff and attorney records are matched to Salesforce Users by email address. Any attorney or staff member without an active Salesforce User is flagged with their matter count before the migration runs — your team either creates a Salesforce User for them or assigns their records to a fallback owner. No case, contact, or time entry lands in Salesforce without a valid OwnerId.
Run a sample migration with field-level diff on a representative slice
A representative slice migrates first: 50–100 matters spanning your most common matter types, 200–500 contacts, and a sample of time entries and invoices. We generate a field-level diff comparing source values against Salesforce field values so you can verify practice-area mapping, billing arrangement translation, and time-entry hour preservation before the full run commits. Your team approves the diff output before we proceed.
Execute full migration with delta-pickup and rollback window
The full migration loads accounts and contacts first (Salesforce requires AccountId before Contact), then matters as Cases with Opportunity tie for billable matters, then time entries as Tasks, then trust ledger rows and invoices. A delta-pickup window (typically 24–48 hours) captures any matters opened or contacts updated in Lexis Affinity during the cutover. An audit log records every record created and every field value set. One-click rollback is available if reconciliation reveals systematic data loss or mapping errors.
Platform deep dives
Lexis Affinity
Source
Strengths
Weaknesses
Salesforce Sales Cloud
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 Lexis Affinity and Salesforce Sales Cloud.
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
Lexis Affinity: Not publicly documented for the practice management module; enterprise customers should confirm limits during onboarding.
Data volume sensitivity
Lexis Affinity 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 Lexis Affinity to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your Lexis Affinity to Salesforce Sales Cloud migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Lexis Affinity
Other ways to arrive at Salesforce Sales Cloud
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.