CRM migration

Migrate from LegalServer to Freshsales

Field-level mapping, validation, and rollback between LegalServer and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.

LegalServer logo

LegalServer

Source

Freshsales

Destination

Freshsales logo

Compatibility

92%

11 of 12

objects map 1:1 between LegalServer and Freshsales.

Complexity

BStandard

Timeline

48–96 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

LegalServer logo

LegalServer

What's pushing teams away

  • Users consistently describe the interface as visually outdated and clunky — reviewers on Capterra note heavy reliance on dropdown triangles, a dated calendar system, and a layout that does not feel like a modern program.
  • The contact creation workflow has a documented pitfall where using the wrong button to add contacts to a case creates a static contact record instead of a dynamic one, requiring manual cleanup and support intervention.
  • The v2 Core API caps results at 100 records per request with no cursor or offset pagination, which creates slow extraction cycles for organizations with large case histories and limits bulk migration efficiency.

Choosing

Freshsales logo

Freshsales

What's pulling them in

  • Lowest barrier to entry among major CRMs — the free tier supports up to 3 users and includes core CRM functionality before committing to per-seat pricing.
  • Built-in chat, email, and phone reduce reliance on third-party integrations for basic sales communication and contact management.
  • Freddy AI contact scoring and deal insights are included on Pro plans at a lower price than comparable HubSpot tiers.
  • Kanban pipeline views across Contacts, Accounts, and Deals provide visual deal management without requiring custom configuration.
  • Integration with the broader Freshworks ecosystem (Freshdesk, Freshchat, Freshservice) reduces tool sprawl for teams already using Freshworks.

Object mapping

How LegalServer objects map to Freshsales

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)

maps to

Freshsales

Contact

1:1
Fully supported

LegalServer 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

maps to

Freshsales

Account

1:1
Fully supported

LegalServer 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

maps to

Freshsales

Deal

1:1
Fully supported

LegalServer 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

maps to

Freshsales

Deal (custom fields)

1:1
Fully supported

LegalServer'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

maps to

Freshsales

Lead

1:1
Fully supported

LegalServer 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)

maps to

Freshsales

Files (on Contact / Account / Deal)

1:1
Fully supported

LegalServer 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)

maps to

Freshsales

Freshsales pick-list fields

1:1
Fully supported

LegalServer 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

maps to

Freshsales

Task (on Contact)

1:1
Fully supported

LegalServer 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

maps to

Freshsales

Task + custom fields on Deal

1:many
Fully supported

LegalServer 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

maps to

Freshsales

Custom fields on Contact / Account

1:1
Fully supported

LegalServer 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

maps to

Freshsales

Contact (custom fields)

1:1
Fully supported

LegalServer'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

maps to

Freshsales

Freshsales User

1:1
Fully supported

LegalServer 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.

Gotchas + challenges

What specifically takes care here

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 logo

LegalServer gotchas

High

Dynamic vs static contact record split

High

v2 API 100-record hard cap on all result sets

Medium

Custom fields on versioned subtables require exact path mapping

Medium

Grant billing types require pre-migration decision on deduction logic

Freshsales logo

Freshsales gotchas

Medium

Freddy AI is Pro-tier only despite heavy marketing

High

Post-migration emails and sequences are disabled

Medium

Bot session credits are a one-time 500-session allocation

Medium

Phone credits charged per minute with no cap

Low

File storage limits scale with plan tier

Pair-specific challenges

  • LegalServer API v2 caps at 100 records per page — large datasets require batch pagination

    LegalServer's Core API v2 returns a maximum of 100 results per API call with no configurable page size. For a dataset of 10,000 Client records, this means 100 sequential API calls are required to export the full set. FlitStack AI implements paginated batch extraction with cursor-based pagination using LegalServer's sort order parameters to ensure complete record sets without duplicates. We also use the LegalServer Reports API as a parallel extraction path for bulk export scenarios where the Core API pagination overhead is prohibitive. This 100-record cap must be factored into migration timeline estimation — organizations with 50,000+ records should expect longer extraction phases.

  • LegalServer lookup lists require manual value-by-value mapping to Freshsales pick-lists

    LegalServer Lookup Lists are administrator-defined custom pick-lists that power dropdown fields across Cases, Clients, and Organizations — they can contain dozens or hundreds of values depending on the site's configuration (e.g., a 'County' lookup for a statewide legal aid organization). Freshsales pick-list fields require each value to be explicitly defined in the field editor. There is no bulk-import mechanism for pick-list values. FlitStack AI extracts the full set of LegalServer Lookup List values from the site's lookup definitions, presents a value-mapping plan for each lookup list, and creates the corresponding Freshsales pick-list fields with all values pre-populated before the migration run. Lookup lists with more than 150 values may require a Freshsales admin to approve the field configuration since Freshsales pick-lists have a 150-value soft limit.

  • Grant management and financial screening data have no native Freshsales equivalent

    LegalServer tracks grant funding balances, billing types (Flat Hourly Rate vs. Variable Hourly Rate), and client poverty-level percentages as core financial concepts. Freshsales has no grant management module and no concept of poverty-level financial screening — these are legal-aid-specific constructs. FlitStack AI preserves grant balance remaining, billing type, and poverty percentage as custom fields on the Contact record in Freshsales. However, the grant balance deduction logic (which runs automatically in LegalServer when attorneys log time against a grant) has no Freshsales equivalent and must be rebuilt as a manual process or a Freshsales workflow if grant balance enforcement is required post-migration.

  • Contractor and panel attorney case assignments do not map to a native Freshsales object

    LegalServer's Contractor module tracks outside counsel and panel attorneys with case-level assignments, fee structures, and work-order history. Freshsales has no native contractor or panel attorney concept — these are not Leads, Contacts, or Users in the standard CRM model. FlitStack AI maps Contractor records to Freshsales Contacts with custom fields for contractor type, expertise, languages, and fee structure. Case-assignment history is preserved as Tasks attached to the contractor Contact record. However, the work-order creation and voucher workflow that LegalServer automates for contractors has no Freshsales native equivalent and must be rebuilt using Freshsales Deals, Tasks, and custom fields, or documented for manual process adaptation.

  • LegalServer document file storage requires download-and-reupload cycle — 25MB Freshsales limit applies

    LegalServer stores documents as attachments on Cases, Clients, and Organizations using its own document management system. Documents are referenced via document_id fields in the API. Freshsales Files attach to CRM records with a 25MB per-file size limit and a storage quota that varies by plan tier. LegalServer documents must be downloaded from LegalServer storage and re-uploaded to Freshsales Files. For organizations with large document archives (e.g., discovery files, court filings in PDF or TIFF format), FlitStack AI selectively imports files under 25MB directly to Freshsales Files and flags oversized files for client decision — either compressing, splitting, or maintaining an external URL reference in a custom field rather than migrating the file body.

Migration approach

Six steps for a successful LegalServer to Freshsales data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

Context on both ends of the pair

LegalServer logo

LegalServer

Source

Strengths

  • Built-in grant management tools with billing type deduction logic for funder compliance reporting
  • Highly configurable dynamic processes, forms, and profiles without requiring technical skills
  • Online client intake and prescreen forms with rules-based triage and poverty level assessment
  • Active community support via site administrator listserv and free weekly trainings
  • No licensing fees or third-party app dependencies — fully hosted SaaS model

Weaknesses

  • Interface described as visually outdated with a clunky dropdown-heavy navigation pattern
  • v2 API caps all multi-record results at 100 with no cursor pagination, slowing bulk extraction
  • Dynamic Contact records require a two-step add-to-case workflow that creates friction for intake staff
  • Document templates must be manually recreated on each environment transition (demo to live)
  • No public pricing page — subscription tiers and per-user costs are opaque without a sales conversation
Freshsales logo

Freshsales

Destination

Strengths

  • Generous free tier for small teams with core CRM functionality without per-seat costs.
  • All-in-one sales CRM with built-in telephony, chat, and email reducing third-party tool dependency.
  • Freddy AI contact scoring and deal predictions available on Pro tier.
  • Multiple pipeline views with Kanban and list options across all plans.

Weaknesses

  • Reports lack depth compared to competitors like HubSpot, with limited customization options.
  • Integration setup is poorly documented with no clear guides for connecting third-party tools.
  • AI features gated behind $39/user/month Pro tier despite marketing emphasis on Freddy AI.
  • Bot sessions limited to 500 one-time allocation with no monthly refresh.

Complexity grading

How hard is this migration?

Standard CRM migration. 3 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across LegalServer and Freshsales.

  • Object compatibility

    B

    3 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    LegalServer: Not publicly documented; v2 APIs enforce a 100-result hard cap per request regardless of page size.

  • Data volume sensitivity

    B

    LegalServer doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your LegalServer to Freshsales migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about LegalServer to Freshsales data migrations

Answers to the questions buyers ask most during LegalServer to Freshsales migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your LegalServer to Freshsales migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most LegalServer-to-Freshsales migrations complete in 48–96 hours of clock time for under 25,000 LegalServer records. The primary time variable is the number of LegalServer API pagination cycles required for extraction — the Core API v2 caps at 100 records per page, so large datasets need more extraction cycles. Migrations involving 100,000+ records or complex multi-module setups (Cases plus Timekeeping plus Contractor module) typically extend to 7–14 days. The custom field creation phase and the sample migration review add 1–3 days of planning time before data movement begins. The delta-pickup window adds 24–48 hours at the end.

Adjacent paths

Related migrations to explore

Ready when you are

Move from LegalServer.
Land in Freshsales, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day