CRM migration
Field-level mapping, validation, and rollback between LegalServer and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
LegalServer
Source
Freshsales
Destination
Compatibility
11 of 12
objects map 1:1 between LegalServer and Freshsales.
Complexity
BStandard
Timeline
48–96 hours
Overview
LegalServer is a case-management platform built for civil legal aid, public defenders, and government agencies — it organizes data around Cases (Matters), Clients, Organizations, and a configurable set of custom modules (Outreach, Timekeeping, Intake). Freshsales is a sales CRM organized around Leads, Contacts, Accounts, Deals, and Tasks. The two platforms share almost no schema parity: LegalServer has no native deal/pipeline concept, no lead-status lifecycle, and uses a lookup-list data model that requires conversion to Freshsales pick-list fields. FlitStack AI extracts LegalServer data via its Core API v2 (which returns a maximum of 100 records per request, requiring paginated batch processing) or via its Reports API for bulk export. We map LegalServer Client records to Freshsales Contacts, LegalServer Organizations to Freshsales Accounts, and LegalServer Cases to Freshsales Deals — capturing case type, status, assigned attorney, and financial data in custom fields. Custom modules migrate as Freshsales custom objects or as custom fields on the Deal record depending on complexity. Lookup lists (LegalServer's custom pick-list equivalent) map to Freshsales pick-list fields via value-by-value mapping. Grant management, contractor, and financial-screening data have no native Freshsales equivalent — we preserve these as custom fields on the relevant record for reference and rebuild. Workflows, process automations, intake logic trees, and document templates do not migrate; we export LegalServer workflow definitions as a rebuild reference for your Freshsales admin. Owner resolution uses email matching against Freshsales user accounts.
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 LegalServer object lands in Freshsales, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
LegalServer
Client / Person (Contact)
Freshsales
Contact
1:1LegalServer Client records map directly to Freshsales Contacts. Client name fields (first name, last name, suffix) split into Freshsales First Name and Last Name. Email address maps to Contact Email. Physical address maps to Freshsales Address fields (street, city, state, zip, country). Client status (active/inactive) maps as a custom pick-list on the Contact record.
LegalServer
Organization
Freshsales
Account
1:1LegalServer Organization records — representing law firms, government agencies, or referring partners — map to Freshsales Accounts. Organization name maps to Account Name. Website URL maps to Account Website. Industry classification maps to Account Industry pick-list via value mapping. Parent-child organization hierarchies in LegalServer map to Account.ParentId in Freshsales where applicable.
LegalServer
Case / Matter
Freshsales
Deal
1:1LegalServer Cases are the most structurally complex mapping target. Each Case becomes a Freshsales Deal with the case title as Deal Name, case type as Deal Type, and case status mapped to a Freshsales pipeline stage. Case priority and urgency flags map to a custom Priority field on the Deal. The attorney or caseworker assigned in LegalServer resolves to a Freshsales user by email match and becomes the Deal Owner.
LegalServer
Case Data > Custom Matter fields
Freshsales
Deal (custom fields)
1:1LegalServer's Case Data > Custom Matter subtable holds the bulk of case-specific custom fields — these vary by site configuration and can include bool flags, money amounts, percentage values, lookup references, and text. Each custom field requires a corresponding Freshsales custom field on the Deal object, created in the Custom Fields admin section before migration. Field type conversion (e.g., LegalServer money to Freshsales currency field) is handled per field-type mapping.
LegalServer
Intake / Prescreen record
Freshsales
Lead
1:1LegalServer Intake and Prescreen records — representing potential clients who have not yet been accepted as full matters — map to Freshsales Leads. Intake status (pending, approved, denied) maps to Lead Status via value mapping. Intake date maps to Freshsales Created Date for reporting continuity. If the Intake converts to an active Case, both the Lead and a Deal are created in Freshsales — maintaining traceability back to the original intake record.
LegalServer
Document / File (document_id fields)
Freshsales
Files (on Contact / Account / Deal)
1:1LegalServer documents stored on Cases, Clients, and Organizations are re-uploaded to Freshsales Files attached to the corresponding Contact, Account, or Deal record. Files must be downloaded from LegalServer storage first, then uploaded to Freshsales. File size limit in Freshsales is 25MB per file. Documents exceeding this threshold are flagged and preserved as external URL references in a custom text field.
LegalServer
Lookup Lists (custom pick-lists)
Freshsales
Freshsales pick-list fields
1:1LegalServer Lookup Lists are administrator-defined pick-lists used across multiple fields — for example, a 'County' lookup or 'Case Type' lookup. Each unique Lookup List value requires a Freshsales pick-list field with the same values. We map each LegalServer lookup value to its Freshsales equivalent by label. Values not found in the destination pick-list are flagged for admin review before migration commits.
LegalServer
Outreach module
Freshsales
Task (on Contact)
1:1LegalServer Outreach records — representing community outreach activities, follow-up calls, or intake events — map to Freshsales Tasks attached to the relevant Contact. Outreach date maps to Task Due Date. Outreach type (phone, email, in-person) maps to Task Type. Notes from the outreach record become the Task Description. Outreach assigned staff resolves to a Freshsales user by email match.
LegalServer
Timekeeping / Timeslip
Freshsales
Task + custom fields on Deal
1:manyLegalServer timekeeping records (attorney hours logged against a Case) split across a Freshsales Task representing the time entry and custom number fields on the related Deal storing the total hours and billing amount. Billable vs. non-billable flag from LegalServer maps to a custom boolean on the Task. Individual timeslip notes become Task Description for audit traceability.
LegalServer
Grant / Funding record
Freshsales
Custom fields on Contact / Account
1:1LegalServer grant management and funding-code records have no native Freshsales equivalent. Grant balance remaining, grant billing type (Flat Hourly Rate, Variable Hourly Rate), and percentage-of-poverty calculation are preserved as custom currency and percent fields on the Contact record. Grant type and funder organization map to text fields for reference. These are informational — Freshsales does not enforce grant-balance logic.
LegalServer
Contractor / Panel Attorney
Freshsales
Contact (custom fields)
1:1LegalServer's Contractor module tracks outside counsel, panel attorneys, and third-party experts — including expertise areas, fee structures, and case assignments. These migrate as Freshsales Contacts with custom fields for contractor type, subject matter expertise, languages spoken, and fee structure. Case-assignment history is preserved as a custom multi-select text field or as Tasks attached to the contractor Contact.
LegalServer
LegalServer user / staff
Freshsales
Freshsales User
1:1LegalServer staff user records resolve to Freshsales users by email address match. Active LegalServer users with email addresses that have Freshsales user accounts are assigned as Deal Owners and Task owners during migration. LegalServer users without matching Freshsales accounts are flagged before migration — either the Freshsales user is created first or records are assigned to a fallback owner designated by the client.
| LegalServer | Freshsales | Compatibility | |
|---|---|---|---|
| Client / Person (Contact) | Contact1:1 | Fully supported | |
| Organization | Account1:1 | Fully supported | |
| Case / Matter | Deal1:1 | Fully supported | |
| Case Data > Custom Matter fields | Deal (custom fields)1:1 | Fully supported | |
| Intake / Prescreen record | Lead1:1 | Fully supported | |
| Document / File (document_id fields) | Files (on Contact / Account / Deal)1:1 | Fully supported | |
| Lookup Lists (custom pick-lists) | Freshsales pick-list fields1:1 | Fully supported | |
| Outreach module | Task (on Contact)1:1 | Fully supported | |
| Timekeeping / Timeslip | Task + custom fields on Deal1:many | Fully supported | |
| Grant / Funding record | Custom fields on Contact / Account1:1 | Fully supported | |
| Contractor / Panel Attorney | Contact (custom fields)1:1 | Fully supported | |
| LegalServer user / staff | Freshsales User1: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.
LegalServer gotchas
Dynamic vs static contact record split
v2 API 100-record hard cap on all result sets
Custom fields on versioned subtables require exact path mapping
Grant billing types require pre-migration decision on deduction logic
Freshsales gotchas
Freddy AI is Pro-tier only despite heavy marketing
Post-migration emails and sequences are disabled
Bot session credits are a one-time 500-session allocation
Phone credits charged per minute with no cap
File storage limits scale with plan tier
Pair-specific challenges
Migration approach
Extract LegalServer schema and field inventory
FlitStack AI connects to the LegalServer site via the Core API v2 using site-specific credentials. We extract the full field inventory across all active modules — Client, Organization, Case, Outreach, Timekeeping, and any active custom modules. For each field we capture: field label, field type (bool, number, money, text, lookup_custom, etc.), lookup-list reference if applicable, and whether the field is required. We also extract all active Lookup List definitions with their complete value sets. This inventory is compared against the target Freshsales account's existing field schema to identify custom field creation requirements. The LegalServer Reports API is used in parallel for bulk data extraction where the Core API's 100-record pagination would create excessive round-trips.
Create Freshsales custom fields and pick-lists
Before any data is written to Freshsales, we create all required custom fields on the Contact, Account, and Deal objects. For each LegalServer Lookup List, we create a corresponding Freshsales pick-list field and populate it with all values from the LegalServer lookup definition. Grant balance, poverty percentage, billing type, case priority, and contractor-specific fields are all created as custom fields in this phase. We also create the Freshsales Users for any LegalServer staff who do not yet have Freshsales accounts — matched by email — and flag any LegalServer staff with no email match for client-side resolution before migration.
Resolve record relationships and owner mapping
LegalServer data has referential integrity across record types: Cases reference Clients, Cases reference Organizations, and Outreach records reference Clients and Cases. We resolve these relationships before writing to Freshsales so that Deals are created with correct Contact lookups and Account lookups already established. Owner resolution matches LegalServer staff email addresses to Freshsales user accounts. For each unresolved owner (LegalServer staff without a Freshsales user account), we assign records to a client-designated fallback owner and surface the full list of unmatched staff for client review before the migration commits.
Run sample migration with field-level diff
A representative sample — typically 200–500 records spanning Clients, Organizations, Cases, and a sample of Outreach and Timekeeping entries — is migrated to the Freshsales production environment. We generate a field-level diff comparing source LegalServer values against the destination Freshsales values for each mapped field. This diff is reviewed with the client to verify lookup-list value mapping, case-to-deal transformation, owner resolution, and custom field population. Any field mapping errors identified in the sample are corrected in the migration plan before the full run is scheduled. Freshsales validation rules and required-field constraints are temporarily disabled during the sample run to surface all data issues without partial-success failures.
Execute full migration with delta-pickup window
The full migration runs against Freshsales with all record types in dependency order: Organizations (Accounts) first, then Clients (Contacts), then Cases (Deals), then Outreach (Tasks) and Timekeeping. Each operation is logged to the FlitStack AI audit trail with source record ID, destination record ID, timestamp, and operator. A delta-pickup window of 24–48 hours runs concurrently — any records created or modified in LegalServer during the migration are captured in a second pass and applied to Freshsales before go-live. After the delta window closes, FlitStack AI generates a reconciliation report comparing record counts, field-level coverage, and relationship integrity. One-click rollback is available if the reconciliation report identifies critical data issues.
Platform deep dives
LegalServer
Source
Strengths
Weaknesses
Freshsales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 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 LegalServer and Freshsales.
Object compatibility
3 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
LegalServer: Not publicly documented; v2 APIs enforce a 100-result hard cap per request regardless of page size.
Data volume sensitivity
LegalServer 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 LegalServer to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your LegalServer to Freshsales migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave LegalServer
Other ways to arrive at Freshsales
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.