CRM migration
Field-level mapping, validation, and rollback between Actionstep and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
Actionstep
Source
Salesforce Sales Cloud
Destination
Compatibility
11 of 12
objects map 1:1 between Actionstep and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
3–5 days
Overview
Actionstep is legal practice management software built for law firms — its core objects (Matters, Participants, Data Collections, Steps, and Trust Transactions) reflect law-firm workflows rather than standard CRM structure. Salesforce Sales Cloud uses the Account-Contact-Opportunity-Case model with a custom __c object schema for anything outside standard objects. The migration challenge is threefold: (1) Actionstep's Matter-centric model has no direct Salesforce equivalent — matters must split into Cases or Opportunities depending on whether they represent client matters or sales pipeline activity; (2) Actionstep Participants carry role types (Client, Opposing Counsel, Witness, Vendor) that require a custom Contact role field in Salesforce rather than native Salesforce Contact Roles; (3) Actionstep Data Collections — the custom fields scoped per matter type — map to Salesforce custom fields but require the custom object or custom fields to be pre-created in Salesforce with the same pick-list values before migration validation runs. We extract data from Actionstep via their REST API (pageSize capped at 200 per request) and load into Salesforce via Bulk API 2.0, respecting rate limits on both sides. Workflows, Steps, trust accounting, and billing rules do not migrate — those are operational configuration that must be rebuilt in Salesforce or delegated to a legal-specific add-on.
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 Actionstep 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.
Actionstep
Matter
Salesforce Sales Cloud
Case (or Opportunity)
1:manyActionstep Matters split by intent: client service matters (billable work) route to Salesforce Case; business development or sales-cycle matters route to Opportunity. We preserve Matter ID as Source_Matter_ID__c for traceability. Matter status (Active, Pending, Closed) maps to Case.Status or Opportunity.StageName based on split destination.
Actionstep
Participant (role: Client)
Salesforce Sales Cloud
Contact + Account
1:1Client Participants map to Salesforce Contacts linked to an Account. The Account is either pre-existing in Salesforce or created from the Matter's client name during migration. Participant email, phone, and address fields map directly. The AccountId lookup on Contact is set from the parent Matter's client Account.
Actionstep
Participant (role: Opposing Counsel / Third Party)
Salesforce Sales Cloud
Contact + custom role field
1:1Non-client Participants have no native Salesforce Contact Role equivalent. We migrate them as Contacts with a custom pick-list field Participant_Role__c storing the Actionstep contact_type value (Opposing Counsel, Witness, Expert, Vendor). The field is created in Salesforce before migration. If your firm needs granular role tracking, a custom Participant_Role junction object is an alternative.
Actionstep
Data Collection (matter-type fields)
Salesforce Sales Cloud
Custom fields on Case + Custom fields on Account
1:1Actionstep Data Collections are matter-type-scoped custom fields — a Litigation matter has different fields than a Real Estate transaction. We map each Data Collection field to a Salesforce custom field on Case (for matter-specific data) or Account (for client-level data). Pick-list values are migrated value-by-value. The custom fields must be pre-created in Salesforce; we deliver a schema setup plan specifying field labels, API names, types, and pick-list values per matter type.
Actionstep
Step (matter process stage)
Salesforce Sales Cloud
Custom pick-list field on Case
1:1Actionstep Steps (Intake, Discovery, Review, etc.) represent matter progression with conditional branching. Salesforce has no step-based workflow equivalent — we migrate current Step value as a custom pick-list field Case.Current_Step__c. Step history (all steps entered) is stored as a custom text area field Case.Step_History__c in JSON format for audit purposes. Automation based on step progression must be rebuilt in Salesforce Flow.
Actionstep
Document
Salesforce Sales Cloud
ContentVersion + ContentDocumentLink
1:1Actionstep documents are downloaded from the API, preserving original file names and content. They are uploaded to Salesforce as ContentVersion records, then linked to the target Case via ContentDocumentLink with LinkedEntityId = Case ID. File size limits (25MB default per Salesforce) apply; files exceeding this are chunked. Inline document tags from Actionstep are stored as ContentVersion.Description for reference.
Actionstep
Time Entry
Salesforce Sales Cloud
Task + custom fields on Case
1:1Actionstep time entries (billable hours logged against matters) have no native Salesforce equivalent for billing. We migrate them as Salesforce Tasks with Subject = time entry description, ActivityDate = work date, and custom fields Duration_Minutes__c and Billable__c. For firms using Salesforce Finance CRM or a billing integration, time entries are surfaced as a migration reference dataset for rebuild in the billing system.
Actionstep
Trust Transaction
Salesforce Sales Cloud
Custom Object (Trust_Transaction__c)
1:1Actionstep trust accounting (IOLTA pools, client ledger entries, tri-party trust) has no Salesforce Sales Cloud equivalent. We create a custom object Trust_Transaction__c with fields for Transaction_Type__c, Amount__c, Date__c, IOLTA_Pool__c, and a lookup to Contact. Trust balance reconciliation is out of scope; firms needing trust accounting in Salesforce should evaluate legal-specific add-ons like LexisNexis SmartDraw or third-party integrations.
Actionstep
Billing / Invoice
Salesforce Sales Cloud
Custom Object (Invoice__c)
1:1Actionstep invoices are migrated as a custom object Invoice__c linked to Case and Contact. Fields include Invoice_Number__c, Amount__c, Status__c, Date__c, and Description__c. Tax calculations, payment terms, and aging are not migrated — those are billing-system logic that must be rebuilt in your chosen billing platform.
Actionstep
Calendar / Event
Salesforce Sales Cloud
Event
1:1Actionstep calendar events (meetings, hearings, deadlines) map to Salesforce Events with original start/end times preserved. The WhatId on Event links to the target Case. OwnerId is resolved by email match to Salesforce users. Recurring events are expanded to individual Salesforce Events with a custom Recurrence_Group_ID__c field linking them.
Actionstep
Custom Object (FilePro / third-party integrations)
Salesforce Sales Cloud
Custom Object
1:1Actionstep supports custom objects via FilePro integration and data collections with custom relationships. These map 1:1 to Salesforce custom objects. If the source uses N:N relationships (e.g., a Participant linked to multiple Matters), Salesforce junction objects are created with two lookup fields. We document every custom object and relationship in the migration plan.
Actionstep
Note
Salesforce Sales Cloud
Note
1:1Actionstep notes (text entries on matters) migrate as Salesforce Notes (not the legacy Note object) with Body, Title, ParentId linking to the target Case, and OwnerId resolved by email match. Rich-text formatting is preserved as HTML in the Note.Body field.
| Actionstep | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Matter | Case (or Opportunity)1:many | Fully supported | |
| Participant (role: Client) | Contact + Account1:1 | Fully supported | |
| Participant (role: Opposing Counsel / Third Party) | Contact + custom role field1:1 | Fully supported | |
| Data Collection (matter-type fields) | Custom fields on Case + Custom fields on Account1:1 | Fully supported | |
| Step (matter process stage) | Custom pick-list field on Case1:1 | Fully supported | |
| Document | ContentVersion + ContentDocumentLink1:1 | Fully supported | |
| Time Entry | Task + custom fields on Case1:1 | Fully supported | |
| Trust Transaction | Custom Object (Trust_Transaction__c)1:1 | Fully supported | |
| Billing / Invoice | Custom Object (Invoice__c)1:1 | Fully supported | |
| Calendar / Event | Event1:1 | Fully supported | |
| Custom Object (FilePro / third-party integrations) | Custom Object1:1 | Fully supported | |
| Note | Note1: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.
Actionstep gotchas
API is case-sensitive and requires exact casing
No system account access — API is user-centric
Rate limiting introduced April 2024 limits bulk export speed
Trust accounting transactions require special migration handling
Workflow automations are not API-exportable
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 Actionstep matter types and Data Collection schema
We connect to your Actionstep instance via API and pull a full inventory of matter types, their associated Data Collection field schemas, and pick-list values. We also extract the Step definitions per matter type and identify the workflow logic attached to each step. This audit produces a Data Collection Map — a document listing every custom field that needs to be created in Salesforce, its API name, type, and value mappings. We share this with your Salesforce admin to create all custom fields, custom objects, and pick-list values before migration validation begins.
Map participants to Contacts and establish Account hierarchy
Actionstep participants are extracted with their contact_type values. Client participants are linked to a parent Account (created from the Matter's client name or from the Matter's company reference if present). Non-client participants are created as Contacts with a Participant_Role__c custom field. We resolve owner and uploader email addresses against Salesforce users. Unmatched users are flagged — your team creates Salesforce accounts for them or assigns records to a fallback queue. We also identify duplicate Contacts by email and apply your chosen de-duplication rule before inserting.
Split Matters into Cases and load base objects first
Salesforce requires a specific load order: Accounts before Contacts before Cases. We first create Accounts from Actionstep client participants, then create Contacts with AccountId lookups, then create Cases with the appropriate AccountId and ContactId. The matter_type and current_step from Actionstep populate the Case.Type and Current_Step__c fields respectively. Time entries, trust transactions, and invoices are loaded as custom objects after Cases are created and validated. Documents are downloaded from Actionstep's file storage, re-uploaded as ContentVersion records, and linked to Cases via ContentDocumentLink.
Run sample migration with field-level diff
A representative slice of 50–200 records migrates first — spanning 3–5 matter types, mixed participant roles, documents, and time entries. We generate a field-level diff comparing the source JSON from Actionstep against the loaded Salesforce records so you can verify that Data Collection field values, pick-list mappings, step values, and document links are correct. You sign off on the sample before the full migration runs. Any field mapping adjustments are made before the full run commits.
Execute full migration with delta-pickup window
The full dataset loads into Salesforce via Bulk API 2.0. A delta-pickup window (typically 24–48 hours after the full run) captures any Actionstep records modified during cutover. Our audit log records every insert, update, and skip operation. If reconciliation fails — a mismatch in record count, missing required fields, or duplicate detection — one-click rollback reverts the Salesforce org to its pre-migration state. Post-migration, we deliver a reconciliation report showing record counts by object, failed records with error reasons, and a field coverage summary.
Platform deep dives
Actionstep
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 Actionstep 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
Actionstep: Rate limiting introduced April 2024 — limits not publicly documented per endpoint; page size capped at 200 records per request.
Data volume sensitivity
Actionstep 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 Actionstep to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your Actionstep 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 Actionstep
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.