CRM migration
Field-level mapping, validation, and rollback between SuiteCRM and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
SuiteCRM
Source
Freshsales
Destination
Compatibility
12 of 12
objects map 1:1 between SuiteCRM and Freshsales.
Complexity
BStandard
Timeline
3-4 weeks
Overview
Moving from SuiteCRM to Freshsales is a move from a self-hosted PHP CRM to a cloud-native SaaS platform with built-in phone, email, and Freddy AI. The structural migration centres on resolving SuiteCRM's custom fields (stored in extended database tables with Studio naming conventions), extracting document files from the server filesystem alongside database records, and documenting AOW workflow rules as a JSON handoff since they cannot be migrated as code. We use the SuiteCRM v4.1 SOAP or v8 REST API depending on the source version, and import into Freshsales via its native CSV import tool. Lead, Contact, Account, Deal, and Cases mapping is 1:1 at the object level; pipeline and stage names require Freshsales configuration before import. We do not migrate Workflows, Reports, or Documents as managed objects — we extract a written inventory of these for your admin to rebuild.
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 SuiteCRM 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.
SuiteCRM
Accounts
Freshsales
Accounts
1:1SuiteCRM Accounts map directly to Freshsales Accounts. The SuiteCRM account name, industry, website, billing address, and phone fields map to Freshsales Account equivalents. We use Account Name as the dedupe key during import to prevent duplicate records. Account must be imported before any Contact import to satisfy the AccountId lookup on Contact records.
SuiteCRM
Contacts
Freshsales
Contacts
1:1SuiteCRM Contacts map to Freshsales Contacts with direct field mapping on name, email, phone, title, and the primary Account link. Custom fields added via SuiteCRM Studio are identified by scanning the database for extended table columns (accounts_cstm, contacts_cstm) and recreated as Freshsales custom fields before import. We map the SuiteCRM modified_date and date_entered timestamps to Freshsales created_at and updated_at for historical accuracy.
SuiteCRM
Leads
Freshsales
Leads
1:1SuiteCRM Leads map directly to Freshsales Leads with status, source, and assignment fields preserved. Note that Freshsales has a Lead Conversion feature that creates a Contact, Account, and Deal from a single Lead — we configure Lead conversion field mapping during the Freshsales setup phase so that custom fields on SuiteCRM Leads map correctly through the conversion process.
SuiteCRM
Opportunities
Freshsales
Deals
1:1SuiteCRM Opportunities map to Freshsales Deals. The SuiteCRM sales_stage maps to Freshsales deal stage, amount maps to deal value, and closed_date maps to expected close date. We configure Freshsales Deal pipelines and stage values before migration to ensure that stage names and probability percentages are available for import. Multiple SuiteCRM pipelines require Freshsales Pro plan or above; we flag this at scoping if applicable.
SuiteCRM
Cases
Freshsales
Cases
1:1SuiteCRM Cases (tracked in the Bugs module) map to Freshsales Cases. Case status, priority, description, and related Account or Contact link migrate directly. Freshsales includes a Service module on its Suite plan ($49/user); if the customer has Cases, we recommend enabling the Freshsales Service module during migration scope to avoid Cases living in the Sales CRM. Case conversations migrate as notes if the Service module is not activated.
SuiteCRM
Products
Freshsales
Products
1:1SuiteCRM Products map to Freshsales Products with pricing information, descriptions, and taxonomy preserved. Products must be imported before Quotes to maintain referential integrity for line items. The SuiteCRM product catalogue size is assessed during discovery and Products are imported in the correct dependency order before Deals that reference them.
SuiteCRM
Quotes
Freshsales
Quotes
1:1SuiteCRM Quotes map to Freshsales Quotes with line items linked to the Products catalogue. Quote body content, total amounts, and related Opportunity linkage transfer as data records. Quote PDFs are not migrated as binary files; we export quote data and recommend regenerating PDFs in Freshsales post-migration. Freshsales quoting is available from Pro plan ($39/user) and above.
SuiteCRM
Contracts
Freshsales
Contracts
1:1SuiteCRM Contracts map to Freshsales Contracts with start date, end date, renewal status, and linked Account preserved. Renewal date fields transfer as Freshsales date types. Contract status values are mapped to Freshsales contract status options during field mapping configuration.
SuiteCRM
Invoices
Freshsales
Invoices
1:1SuiteCRM Invoice records migrate to Freshsales Invoices. Both platforms track invoice payment status but neither has a native accounting ledger — we flag Invoice records as partial financial data and direct customers to their accounting system for AR/AP reconciliation. Invoice line items map to Freshsales Invoice Items referencing the Product catalogue.
SuiteCRM
Campaigns
Freshsales
Campaigns
1:1SuiteCRM Campaigns map to Freshsales Campaigns with campaign type, status, start date, and budget preserved. Campaign target lists from SuiteCRM are mapped to Freshsales Lists. Note that Freshsales campaign features are basic — advanced email campaign automation may require Freshdesk or a separate marketing platform. We document the campaign structure in the migration handoff for the customer to decide on marketing replacement strategy.
SuiteCRM
Documents
Freshsales
Attachments
1:1SuiteCRM Document records store files on the server filesystem (typically /upload/) with database metadata records. We extract the file blobs alongside the metadata records, preserve file checksums for integrity validation, and upload files as Freshsales record attachments. File permission issues during extraction are a known SuiteCRM migration risk — we validate checksums after extraction and flag any files that fail integrity checks. The Documents module does not have a direct Freshsales equivalent; files attach to the parent Account, Contact, or Deal record.
SuiteCRM
Users / Assignees
Freshsales
Users
1:1SuiteCRM Users map to Freshsales Users by email address match. Active and inactive status is preserved. We export the full SuiteCRM Users table including usernames and email addresses during discovery. Users without a matching Freshsales User email go to a reconciliation queue for the customer admin to provision before record import begins, since OwnerId references on all records must be resolved before migration.
| SuiteCRM | Freshsales | Compatibility | |
|---|---|---|---|
| Accounts | Accounts1:1 | Fully supported | |
| Contacts | Contacts1:1 | Fully supported | |
| Leads | Leads1:1 | Fully supported | |
| Opportunities | Deals1:1 | Fully supported | |
| Cases | Cases1:1 | Fully supported | |
| Products | Products1:1 | Mapping required | |
| Quotes | Quotes1:1 | Fully supported | |
| Contracts | Contracts1:1 | Fully supported | |
| Invoices | Invoices1:1 | Mapping required | |
| Campaigns | Campaigns1:1 | Fully supported | |
| Documents | Attachments1:1 | Mapping required | |
| Users / Assignees | Users1:1 | Mapping required |
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.
SuiteCRM gotchas
7.x to 8.x upgrade silently breaks the web UI
Documents store files on the server filesystem, not in the database
Invoices are standalone records with no accounting ledger
Workflow automation rules (AOW) cannot be programmatically exported
Version 7.x extended support ends mid-2027 on ESR branch
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
Discovery and Freshsales plan selection
We audit the source SuiteCRM instance for version (7.x or 8.x), active modules, custom fields (by scanning the database for _cstm tables), custom modules, AOW workflow count and complexity, document file volume, and engagement history size. We pair this with a Freshsales plan assessment: Growth ($9/user) covers basic Contact, Account, Lead, Deal migration; Pro ($39/user) is required if the customer has multiple Deal pipelines or needs Freshsales Flow; Enterprise ($59/user) is required for custom objects; Suite ($49/user) is required for the Service module if Cases are in scope. The discovery output is a written migration scope and plan recommendation.
Custom field and schema design in Freshsales
We map every SuiteCRM custom field (identified by the _cstm table pattern) to an equivalent Freshsales custom field type. Picklist fields map to Freshsales dropdown or multi-select fields. Date fields map to Freshsales date fields. Custom modules in SuiteCRM require Freshsales Enterprise custom objects — we verify the plan covers this before designing the schema. We create all custom fields in Freshsales Admin Settings before any data import so that the CSV column headers match the destination field names at import time. Pipeline and stage configuration in Freshsales is also completed in this phase.
Sandbox migration and reconciliation
We run a full migration into a Freshsales sandbox or trial account using production data volume. The customer's admin reconciles record counts (Accounts, Contacts, Leads, Deals, Cases), spot-checks 20-30 random records against the SuiteCRM source, and verifies that custom field values appear correctly in Freshsales. Owner mapping (SuiteCRM user to Freshsales user by email) is validated in this phase. The customer admin signs off the schema and mapping before production migration begins.
Document file extraction
We extract document files from the SuiteCRM server filesystem alongside the database export. Files are downloaded from the upload directory with their original file names and extensions preserved. We validate file integrity by comparing checksums against the file_size field in the SuiteCRM database. Any files with checksum mismatches or inaccessible paths are flagged in the migration report. Files are staged in a temporary location before bulk upload to Freshsales as record attachments.
Production migration in dependency order
We run production migration in record dependency order: Accounts first (no dependencies), Contacts with AccountId resolved from the Account import, Leads, Deals with pipeline and stage resolved, Cases, Products before Quotes (for referential integrity), Quotes, Contracts, Invoices, Campaigns, then Activities (calls, emails, meetings, tasks) last. Each phase produces a row-count reconciliation report before the next begins. Files from the document extraction step are uploaded to Freshsales as attachments to the relevant parent records after the base object migration is complete.
Cutover, validation, and automation handoff
We freeze SuiteCRM writes during the cutover window, run a final delta migration of any records modified during migration, then enable Freshsales as the system of record. We deliver the AOW workflow JSON inventory to the customer's admin for Freshsales Flow rebuild, a custom field mapping reference document, and a post-migration data quality report. We support a one-week hypercare window for reconciliation issues. We do not rebuild SuiteCRM AOW workflows as Freshsales Flow within the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
SuiteCRM
Source
Strengths
Weaknesses
Freshsales
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 SuiteCRM and Freshsales.
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
SuiteCRM: Not publicly documented in SuiteCRM's own docs.
Data volume sensitivity
SuiteCRM exposes a bulk API — large-volume migrations stream efficiently.
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 SuiteCRM to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your SuiteCRM 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 SuiteCRM
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.