CRM migration
Field-level mapping, validation, and rollback between MerusCase and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
MerusCase
Source
Salesforce Sales Cloud
Destination
Compatibility
12 of 12
objects map 1:1 between MerusCase and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
48–72 hours
Overview
MerusCase stores legal case files as a top-level object with embedded parties, calendar events, activities, billing ledger entries, and document references — a flat-to-relational translation is the core challenge when moving to Salesforce Sales Cloud. Salesforce has no native legal-case equivalent: Cases sit alongside Accounts and Contacts in a standard CRM object graph, requiring a custom Case object or Salesforce-native Cases with a practice-area record-type configuration. We map MerusCase case files to Salesforce Cases, parties to Contacts (or Leads for opposing-counsel records), calendar events to Events, and activities to Tasks — preserving original create dates, assigned staff, and activity timestamps throughout. Billing ledger entries (time entries, expenses, damages, settlements) have no Salesforce equivalent and migrate as a custom Case_Ledger__c object with UTBMS task and activity codes intact. Document archives are re-hosted to Salesforce Files attached to the Case record. Workflows, statutes, and automation rules are not migratable — we export MerusCase workflow definitions as a rebuild reference for Salesforce Flow. We use a scoped MerusCase API read token for extraction, then load into Salesforce via Bulk API, running a delta pickup window after the cutover to capture any records modified during the transition.
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 MerusCase 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.
MerusCase
Case / Case File
Salesforce Sales Cloud
Case
1:1MerusCase case files map to Salesforce native Case records. Salesforce Case.Number becomes the legacy case identifier; the original MerusCase case number is stored in Legacy_Case_Number__c. Practice area maps to Salesforce Case RecordTypeId per firm-defined record types (Criminal, Personal Injury, Employment, etc.).
MerusCase
Party (role = Client)
Salesforce Sales Cloud
Contact
1:1MerusCase parties with role Client map to Salesforce Contact. Each Contact gets the Case record as its primary case association via a custom Case_Party__c junction object or the native Case Contact Role. The Contact.AccountId is resolved by matching the party's firm name to a Salesforce Account.
MerusCase
Party (role = Opposing Counsel / Third Party)
Salesforce Sales Cloud
Lead
1:1Parties with roles outside the firm (Opposing Counsel, Expert Witness, Insurer) lack a Salesforce Account relationship and map to Lead instead of Contact. The Lead.Company field stores the party's firm name; role is preserved in Party_Role__c for reference. Additionally, Lead.Status can be set to a custom value like 'External Party' to distinguish these records from marketing leads, and contact details are mapped to standard Lead fields.
MerusCase
Calendar Event
Salesforce Sales Cloud
Event
1:1MerusCase calendar events map to Salesforce Events with original start/end datetimes, assigned staff (OwnerId resolved by email match), and the linked case as WhatId. Event.Subject carries the MerusCase event title. Recurring event series are expanded into individual Event records. Time zones are preserved as entered; if the source stores UTC offset, we store it in a custom Timezone__c field and apply it when displaying the event in Salesforce.
MerusCase
Activity
Salesforce Sales Cloud
Task
1:1MerusCase activities map to Salesforce Tasks. Original activity dates become Task.ActivityDate; staff assignment becomes OwnerId via email match. The UTBMS task_code and activity_code from MerusCase are stored in Task.Task_Code__c and Activity_Code__c custom fields. Task.Priority is set based on the MerusCase urgency flag, and Task.Status defaults to 'Completed' for historical entries; open activities retain their original status for reconciliation.
MerusCase
Case Ledger
Salesforce Sales Cloud
Case_Ledger__c (custom object)
1:1MerusCase billing ledger entries (charges, payments, damages, settlements) have no Salesforce standard equivalent and migrate as a Salesforce custom object. The Case_Ledger__c custom object links to the Case via Case__c lookup and stores all financial amounts, UTBMS codes, and status values as custom fields.
MerusCase
Document Archive
Salesforce Sales Cloud
ContentDocument / Salesforce Files
1:1MerusCase documents are downloaded from the Document Archive and re-uploaded as "Salesforce Files" attached to the Case record via ContentDocumentLink. Large multi-document zips are split; individual files under 25 MB are uploaded via the Salesforce File object. Each file receives a ContentVersion entry with the file name, type, and creation timestamp, and is shared with the case's Salesforce group via a ContentDocumentLink with Visibility set to 'AllUsers' or 'InternalUsers'.
MerusCase
Custom Field (Date)
Salesforce Sales Cloud
CustomField__c (API name ends in __c)
1:1MerusCase Date-type custom fields become Salesforce Date custom fields on the Case object. Field labels are preserved; API names are sanitized (spaces removed, special characters stripped). Up to 50 custom fields per firm map across this pattern. Help text and description strings from MerusCase are copied to the Salesforce field-level help text, and any default date values are set in the field definition if present.
MerusCase
Custom Field (Currency)
Salesforce Sales Cloud
CustomField__c (Currency type)
1:1MerusCase Currency custom fields become Salesforce Currency custom fields on Case. The ISO currency code is stored alongside the value. Firms billing in multiple currencies should flag this during discovery for multi-currency org configuration. The decimal precision and scale of each Salesforce Currency field are set to match the MerusCase field definition, and if the org's default currency differs, a conversion formula or Salesforce Currency Management can be applied post‑migration.
MerusCase
Custom Field (Numeric / Text / Yes-No)
Salesforce Sales Cloud
CustomField__c (Number / Text / Picklist)
1:1MerusCase Numeric fields map to Salesforce Number; Text fields (≤250 chars) map to Text; Yes/No dropdowns map to Salesforce Checkbox or a custom pick-list depending on whether the field is multi-valued. Field-level validation rules can be applied post-migration. The Text field length is set to the lesser of 250 characters or the MerusCase defined length, and any picklist values are transferred as Salesforce picklist options for consistency.
MerusCase
MerusCase User / Staff
Salesforce Sales Cloud
User
1:1MerusCase staff records resolve to Salesforce Users by email address. Unmatched staff are flagged before migration; your team either creates Salesforce users or assigns records to a fallback OwnerId. Staff role and practice-area assignments are stored in a custom User field.
MerusCase
MerusCase Workflow
Salesforce Sales Cloud
Salesforce Flow
1:1MerusCase Workflows are not migratable to Salesforce. We export the workflow definitions (trigger types, conditions, resulting tasks) as a structured JSON reference document your Salesforce admin uses to rebuild equivalent Flows in Flow Builder or Process Builder post-migration. The export includes the original workflow name, activation criteria, step sequence, assigned staff roles, and any conditional branching logic, providing a clear blueprint for re‑creating each automation in Salesforce.
| MerusCase | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Case / Case File | Case1:1 | Fully supported | |
| Party (role = Client) | Contact1:1 | Fully supported | |
| Party (role = Opposing Counsel / Third Party) | Lead1:1 | Fully supported | |
| Calendar Event | Event1:1 | Fully supported | |
| Activity | Task1:1 | Fully supported | |
| Case Ledger | Case_Ledger__c (custom object)1:1 | Fully supported | |
| Document Archive | ContentDocument / Salesforce Files1:1 | Fully supported | |
| Custom Field (Date) | CustomField__c (API name ends in __c)1:1 | Fully supported | |
| Custom Field (Currency) | CustomField__c (Currency type)1:1 | Fully supported | |
| Custom Field (Numeric / Text / Yes-No) | CustomField__c (Number / Text / Picklist)1:1 | Fully supported | |
| MerusCase User / Staff | User1:1 | Fully supported | |
| MerusCase Workflow | Salesforce Flow1: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.
MerusCase gotchas
Annual subscription and data access tied together
Outbound migration is not supported by MerusCase
Document Archive exports are per-case, not bulk
Built-in CSV import tools are not easy to use
Custom Fields apply to Cases only and have a 50-field cap
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
Audit MerusCase data and configure Salesforce schema
FlitStack AI extracts a full inventory of MerusCase objects via CSV export and API: case files, parties, activities, calendar events, case ledgers, documents, and custom field definitions. We compare this inventory against your Salesforce org and deliver a schema setup plan: custom Case object fields (__c), Case RecordTypeIds per practice area, the Case_Ledger__c custom object, and custom fields on Task for UTBMS codes. Your Salesforce admin creates the schema before data loads begin.
Resolve owners and contacts by email
MerusCase staff and party email addresses are matched against Salesforce Users and Contacts by email. Unmatched staff are flagged for Salesforce user provisioning before migration; unmatched party contacts are flagged for a decision on whether they become Leads (for outside parties) or Contacts (for firm-affiliated parties). No record lands in Salesforce without a resolved OwnerId or ContactId, and any duplicate email matches generate a warning for admin review before the load proceeds.
Sequence the migration in dependency order
Salesforce requires parent records to exist before child records load: Accounts first, then Contacts/Leads, then Cases, then Tasks and Events linked to Cases, then ContentDocumentLinks for files, then Case_Ledger__c entries. We extract and stage each object in this sequence, validate foreign key integrity at each stage, and flag circular or missing references before they block the load. To optimize throughput, we group records into Bulk API batches of up to 10,000 rows and run dependent objects in parallel where foreign‑key dependencies allow, while preserving the dependency order for all lookup relationships.
Run a sample migration with field-level diff
A representative slice of 50–200 records (spanning multiple practice areas, party roles, activity types, and ledger statuses) migrates first. We generate a field-level diff between the MerusCase source values and the Salesforce destination values so you can verify case status mapping, UTBMS code preservation, billing ledger amount accuracy, and document attachment completeness before the full run commits. The diff report highlights any truncated text fields, missing picklist values, and unexpected nulls, enabling you to adjust field mappings or data‑prep steps before the bulk load.
Execute full migration with delta-pickup cutover
The full migration loads all objects in sequence via Salesforce Bulk API, respecting API rate limits and batch sizing. A delta-pickup window (typically 24–48 hours after the full load) captures any records created or modified in MerusCase during the cutover. FlitStack AI generates an audit log of every record operation and provides a one-click rollback to the pre-migration state if reconciliation uncovers data integrity issues.
Platform deep dives
MerusCase
Source
Strengths
Weaknesses
Salesforce Sales Cloud
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 MerusCase and Salesforce Sales Cloud.
Object compatibility
2 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
MerusCase: Not publicly documented.
Data volume sensitivity
MerusCase 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 MerusCase to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your MerusCase 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 MerusCase
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.