CRM migration
Field-level mapping, validation, and rollback between X2CRM and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
X2CRM
Source
Salesforce Sales Cloud
Destination
Compatibility
9 of 13
objects map 1:1 between X2CRM and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
4-8 weeks
Overview
Moving from X2CRM to Salesforce Sales Cloud is a structural migration that changes how your data is organized, how automation is managed, and how your team accesses the CRM ecosystem. X2CRM's flat eight-module architecture (Contacts, Accounts, Deals, Products, Services, Marketing, Actions, Workflows) maps to Salesforce's Lead-and-Contact split model, Opportunity stages, Product2 catalog, and Case object. We extract data via the X2CRM REST API using application/json payloads, negotiate the Platinum-tier rate-limit gate before bulk export begins, and sequence parent-record creation so that Account lookups are resolved before Contact inserts and Opportunity lookups are resolved before Activity imports. X2Flow workflows do not export as portable data; we deliver a Workflow Reconstruction Document listing every trigger, condition, and action for your Salesforce admin to rebuild in Flow. We do not migrate workflows, sequences, forms, landing pages, or reports as code—those require manual rebuild by your admin or a Salesforce partner.
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 X2CRM 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.
X2CRM
Contact
Salesforce Sales Cloud
Lead and Contact (split required)
1:manyX2CRM Contacts with no associated Deal or with a status indicating pre-qualification map to Salesforce Lead. X2CRM Contacts linked to an Account with an active or won Deal map to Salesforce Contact attached to an Account. We compute the split during scoping using X2CRM's Contacts module fields (lifecycle stage tag, associated account link, deal association). The original X2CRM contact record ID is preserved in a custom field x2crm_contact_id__c on both Lead and Contact for audit and cross-reference.
X2CRM
Account
Salesforce Sales Cloud
Account
1:1X2CRM Accounts map directly to Salesforce Account. The X2CRM Account website field maps to Account Website, industry and type map to standard Account fields, and the annual revenue and employee count map to corresponding custom or standard fields. Account is created before any Contact import so that AccountId lookups are satisfied at the moment of Contact insert.
X2CRM
Deal
Salesforce Sales Cloud
Opportunity
1:1X2CRM Deals map to Salesforce Opportunity. The deal stage property maps to Salesforce StageName using a stage-mapping table defined during scoping. If X2CRM uses a custom stage label not present in Salesforce's standard stage set, we add it to the active Sales Process before migration. Closed-Lost reason and probability percentages migrate from X2CRM custom fields to Salesforce LossReason and DefaultProbability.
X2CRM
Pipeline
Salesforce Sales Cloud
Record Type + Sales Process
lossyX2CRM's single deal pipeline maps to a Salesforce Record Type on Opportunity with a corresponding Sales Process. If the customer has configured multiple pipeline views in X2CRM using custom module workarounds, each unique pipeline intent becomes a separate Salesforce Record Type with its own stage values and Page Layout.
X2CRM
Product
Salesforce Sales Cloud
Product2
1:1X2CRM Products map to Salesforce Product2 records. The product name, SKU (productCode), and description migrate directly. We create Standard Pricebook entries during migration so that migrated Deals can reference products without requiring a separate pricebook setup step. Product2 is created before any Deal with line items migrates.
X2CRM
Service
Salesforce Sales Cloud
Asset or Case
lossyX2CRM Services (recurring service contracts or subscriptions linked to Accounts) map to Salesforce Asset if the destination org has Service Cloud and the customer tracks contractual assets. If the customer uses Cases for service tracking, Services map to Case with the associated Account linked via AccountId. The mapping decision is made during scoping based on the customer's post-migration service model.
X2CRM
Marketing Campaign
Salesforce Sales Cloud
Campaign
1:1X2CRM Marketing Campaigns map to Salesforce Campaign. Campaign name, type, status, and start/end dates migrate directly. Linked Contact associations migrate as CampaignMember records with Status derived from the X2CRM contact-campaign association status. Email campaign templates migrate as static HTML content stored in a custom field or attached Document for the customer's email team to reassign to Salesforce Email Template or Marketing Cloud.
X2CRM
Activities (Calls, Meetings, Tasks)
Salesforce Sales Cloud
Task and Event
1:1X2CRM Activities split by type: call activities migrate to Salesforce Task with TaskSubtype=Call and CallDurationInSeconds preserved in a custom field; meeting activities migrate to Salesforce Event with StartDateTime, EndDateTime, and Location preserved; standalone task activities migrate to Salesforce Task with Status, Priority, and ActivityDate preserved. All Activity records resolve their related Contact or Deal lookup at migration time using the X2CRM association record to set WhatId and WhoId on the Salesforce record.
X2CRM
Actions (notes, comments)
Salesforce Sales Cloud
Note
1:1X2CRM Action records of type Note or Comment migrate to Salesforce Note linked via ContentDocumentLink to the parent Contact, Account, or Opportunity. Note body migrates as plain text; any embedded file references are resolved by the attachment migration process. Note ordering is preserved by setting CreatedDate to the original X2CRM timestamp.
X2CRM
Tag
Salesforce Sales Cloud
Custom field (multi-select picklist)
lossyX2CRM Tags are standalone label records applied across multiple module types. We inspect all unique tag values during discovery, create a custom multi-select picklist field on the relevant Salesforce objects (typically Contact and Account), and reapply tag associations during the post-import reconciliation phase. If tag count exceeds the 500-value limit for multi-select picklist, we use a custom tag junction object instead.
X2CRM
Users
Salesforce Sales Cloud
User
1:1X2CRM User records map to Salesforce User by email match. We extract every user referenced as an owner on Contacts, Accounts, Deals, and Activities and match against the destination Salesforce org's User table. Any X2CRM user without a matching Salesforce User is flagged in the reconciliation queue for the customer's admin to provision before record migration resumes. Inactive X2CRM users map to inactive Salesforce Users so historical assignment is preserved.
X2CRM
Custom Fields (module builder)
Salesforce Sales Cloud
Custom fields
1:1X2CRM custom fields added via the module builder vary by module and require field-level mapping during scoping. We inspect the X2CRM field schema via API discovery (field name, data type, required flag) and align each custom field to a typed Salesforce custom field (__c API name). Lookup relationships between custom modules resolve through parent-record lookup resolution. Custom module schema must be pre-created in Salesforce before data migration begins.
X2CRM
Attachments
Salesforce Sales Cloud
ContentDocument (Chatter Files)
1:1X2CRM attachment records linked to Contacts, Accounts, Deals, and other modules migrate as Salesforce ContentDocument records attached via ContentDocumentLink. We download files from X2CRM's attachment storage (REST API for SaaS; local disk path for self-hosted) and upload to Salesforce via the Connect API. For self-hosted X2CRM, we coordinate with the customer's IT team during discovery to expose the upload directory via admin panel or SSH access before attachment migration begins.
| X2CRM | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Contact | Lead and Contact (split required)1:many | Fully supported | |
| Account | Account1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Pipeline | Record Type + Sales Processlossy | Fully supported | |
| Product | Product21:1 | Fully supported | |
| Service | Asset or Caselossy | Fully supported | |
| Marketing Campaign | Campaign1:1 | Fully supported | |
| Activities (Calls, Meetings, Tasks) | Task and Event1:1 | Fully supported | |
| Actions (notes, comments) | Note1:1 | Fully supported | |
| Tag | Custom field (multi-select picklist)lossy | Fully supported | |
| Users | User1:1 | Fully supported | |
| Custom Fields (module builder) | Custom fields1:1 | Fully supported | |
| Attachments | ContentDocument (Chatter Files)1: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.
X2CRM gotchas
Rate limiting is gated behind Platinum Edition
Workflow automation (X2Flow) does not export as portable data
API requires Content-Type: application/json on all write requests
Data validation errors return HTTP 422 and may halt batch imports
Self-hosted attachment storage may require manual file extraction
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
Discovery and deployment assessment
We audit the source X2CRM instance across deployment type (SaaS vs self-hosted), tier (Starter/Business/Platinum), module count, custom field inventory, active X2Flow workflows, and attachment volume. For self-hosted instances, we coordinate with the customer's IT team to confirm the REST API endpoint, authentication method, and attachment storage backend accessibility. We produce a written migration scope listing every object to migrate, every custom field requiring mapping, every X2Flow workflow to document, and a rate-limit configuration note for Platinum-tier instances.
Schema design and Salesforce destination setup
We design the destination schema in Salesforce. This includes creating custom objects for X2CRM custom modules (with __c API names matched to the source module names), custom fields on standard objects for X2CRM custom fields, Salesforce Record Types and Sales Processes for Deal migration, and custom picklist fields for Tag migration. Schema is deployed via metadata API or change set into a Salesforce Sandbox first for validation. We coordinate with the customer's Salesforce admin to confirm validation rules that may need temporary relaxation during the load window.
Sandbox migration and reconciliation
We run a full migration into a Salesforce Sandbox (Full Copy or Partial Copy) using representative data volume from production. The customer's RevOps or admin lead reconciles record counts for every object (Contacts in, Leads in, Accounts in, Opportunities in, Activities in), spot-checks 25-50 records against the X2CRM source, and validates tag application and attachment presence. Sign-off on the Sandbox run authorizes the production migration. Any mapping corrections and data quality flags are resolved here, not in production.
Owner reconciliation and User provisioning
We extract every distinct X2CRM User referenced as an owner on Contacts, Accounts, Deals, and Activities and match by email against the destination Salesforce org's User table. Any X2CRM user without a matching Salesforce User is flagged in a reconciliation queue. The customer's Salesforce admin provisions missing Users (active for current users, inactive for departed users with historical assignments). Migration cannot proceed past this step because OwnerId references are required on standard objects.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from X2CRM Accounts), Contacts (with AccountId resolved, split applied for Lead vs Contact), Leads, Opportunities (with AccountId, OwnerId, and RecordTypeId resolved), Products and Pricebook entries, Service or Asset records, Campaign records, Activities (Tasks and Events via Bulk API 2.0 with parent-record lookup resolution), Notes, Tags (applied via custom field after record insert), Custom Objects (last, because they often have lookups to standard objects), and Attachments. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, delta sync, and Workflow Reconstruction handoff
We freeze writes to X2CRM during cutover, run a final delta migration of any records modified during the migration window, then enable Salesforce as the system of record. We deliver the Workflow Reconstruction Document listing every X2Flow rule with its trigger, conditions, and actions mapped to an equivalent Salesforce Flow type. We support a one-week hypercare window where we resolve reconciliation issues raised by the customer's sales team. We do not rebuild X2Flow workflows as Salesforce Flow inside the migration scope; that is a separate engagement or an internal admin task. Reports, dashboards, forms, and landing pages are similarly excluded from migration scope and delivered as a written inventory for manual rebuild.
Platform deep dives
X2CRM
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 X2CRM 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
X2CRM: Not publicly documented. X2CRM is an open-source / self-hosted CRM, so practical throughput is bounded by the customer's PHP/MySQL deployment rather than a vendor-imposed limit. We benchmark export queries against the customer's hosted instance before the cutover sync..
Data volume sensitivity
X2CRM 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 X2CRM to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your X2CRM 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 X2CRM
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.