CRM migration
Field-level mapping, validation, and rollback between Profi and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
Profi
Source
Salesforce Sales Cloud
Destination
Compatibility
10 of 11
objects map 1:1 between Profi and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
48–72 hours
Overview
Profi stores clients, sessions, courses, and billing as a flat object graph — one contact record, one session record, one course record, with no native CRM pipeline or account hierarchy. Salesforce Sales Cloud uses a relational model: Account-Contact-Opportunity with foreign-key lookups, record types, and a field-level security model. The migration translates Profi's client profiles to Contacts with AccountId lookups, session history to Events preserving original coach assignments and timestamps, and course data to custom Course__c objects (or Products if you use Salesforce CPQ for renewals). FlitStack sequences the migration so foreign keys resolve correctly: Users first (for owner resolution), then Accounts, then Contacts, then Activities, then custom objects. We handle data extraction via Profi's API and load via Salesforce Bulk API 2.0. Automations, drip-content rules, and email sequences do not migrate — we export definitions for your Salesforce admin to rebuild in Flow. Post-migration, the admin uses those definitions as a blueprint for recreating automation logic in Flow or Process Builder.
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 Profi 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.
Profi
Client
Salesforce Sales Cloud
Contact
1:1Profi clients map 1:1 to Salesforce Contacts. The challenge is that Salesforce requires an AccountId lookup on every Contact — Profi's clients may not have an associated company. We create Account records for each client or link them to a specified Account based on your rules before the migration runs.
Profi
Coach / Staff
Salesforce Sales Cloud
User
1:1Profi coach and staff accounts map to Salesforce Users. Role and profile assignment follows your specification — coaches typically get Sales rep or custom profile. Unmatched users are flagged before migration so you can invite them to Salesforce first or assign a fallback owner.
Profi
Session
Salesforce Sales Cloud
Event
1:1Profi sessions migrate as Salesforce Events. The original session title becomes Subject, coach assignment becomes OwnerId (via email match), start/end times preserve as StartDateTime and EndDateTime. Notes and descriptions carry over as Event Description. Multi-client sessions require a decision point covered in the gotchas section.
Profi
Course
Salesforce Sales Cloud
Custom Object (Course__c) or Product
1:1Profi courses have no direct Salesforce equivalent. We migrate course metadata (title, description, enrollment count, status) to a custom Course__c object. If you use Salesforce CPQ for subscription renewals, courses map to the standard Product object with custom fields for enrollment data instead.
Profi
Enrollment
Salesforce Sales Cloud
Custom Junction Object (Course_Enrollment__c)
many:1Profi enrollment records link a client to a course with status and enrollment date. These merge into a custom Course_Enrollment__c junction object with lookup fields to Contact and Course__c (or Product). This preserves the many-to-many relationship that Profi handles natively.
Profi
Billing / Invoice
Salesforce Sales Cloud
Custom Object (Invoice__c) or Opportunity
1:1Profi billing records (amount, date, status, associated client) map to a custom Invoice__c object with Contact and AccountId lookups. If amounts represent course purchases tied to renewal tracking, they map to Opportunities instead. Full accounting records should be reviewed post-migration as Salesforce is not a bookkeeping tool.
Profi
Note
Salesforce Sales Cloud
Note
1:1Profi notes on clients, sessions, or courses migrate as Salesforce Notes (modern Notes object, not legacy Note). The note title, body, and associated record link (Contact, Event) carry over. Owner resolves by email match to Salesforce User. Files attached to the note re-upload as Salesforce Files linked to the parent record.
Profi
Attachment / File
Salesforce Sales Cloud
ContentDocument / Salesforce Files
1:1Files attached to Profi records (session recordings, course materials, client documents) re-upload to Salesforce Files. Files are linked to the parent record (Contact, Event, Course__c). Salesforce file size limits (25MB default per file) apply — large video files may need alternative storage with a link stored on the Salesforce record.
Profi
Custom Field
Salesforce Sales Cloud
Custom Field (__c)
1:1Every Profi custom field requires a corresponding Salesforce custom field created before migration. We generate a field creation checklist specifying the field name, Salesforce API name (__c suffix), data type, and picklist values. Your Salesforce admin creates these fields in Setup — this is a manual step that gates the migration start date.
Profi
Coach-Client Relationship
Salesforce Sales Cloud
Custom Junction Object or Assignment Rule
1:1Profi stores coach-client associations natively. In Salesforce, Users and Contacts have no native many-to-many relationship. We create a custom Coach_Assignment__c junction object linking User (coach) to Contact (client), with fields for assignment date and relationship type. Your admin chooses whether to recreate all assignments or apply a default.
Profi
Owner / User Resolution
Salesforce Sales Cloud
OwnerId
1:1Profi assigns records by user email. We match Profi user emails against Salesforce User emails to resolve OwnerId on Events and Contacts. Unmatched owners are flagged before migration with two options: invite the user to Salesforce first or assign to a fallback user. No record lands without an owner.
| Profi | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Client | Contact1:1 | Fully supported | |
| Coach / Staff | User1:1 | Fully supported | |
| Session | Event1:1 | Fully supported | |
| Course | Custom Object (Course__c) or Product1:1 | Fully supported | |
| Enrollment | Custom Junction Object (Course_Enrollment__c)many:1 | Fully supported | |
| Billing / Invoice | Custom Object (Invoice__c) or Opportunity1:1 | Fully supported | |
| Note | Note1:1 | Fully supported | |
| Attachment / File | ContentDocument / Salesforce Files1:1 | Fully supported | |
| Custom Field | Custom Field (__c)1:1 | Fully supported | |
| Coach-Client Relationship | Custom Junction Object or Assignment Rule1:1 | Fully supported | |
| Owner / User Resolution | OwnerId1: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.
Profi gotchas
No public API for bulk data export
Package-to-session linkage breaks in export
Video recordings stored outside standard export
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
Schema audit and Salesforce preparation
FlitStack connects to Profi via API to extract the complete object inventory — clients, coaches, sessions, courses, custom fields, and relationships. We simultaneously review your target Salesforce org to identify missing custom objects, custom fields (with __c suffix), and required lookups (AccountId on Contact, OwnerId on Event, WhoId on Event). We deliver a schema preparation checklist specifying what your Salesforce admin must create before data lands, including picklist values for any pick-list type fields.
Resolve owners and create account records
Profi stores coach and staff assignments by user ID and email. We match these emails against Salesforce Users to resolve OwnerId lookups, flagging any unmatched owners for invitation or fallback assignment. For clients without a primary organization in Profi, we create Account records using your specified rule — either one default 'Individual' Account per client or a single shared Account. This step establishes the foreign key foundation for all Contact and Event records.
Migrate core objects in dependency order
Data moves in a sequence that respects Salesforce foreign key requirements: Users → Accounts → Contacts → Courses (custom objects or Products) → Enrollments (junction objects) → Sessions (as Events) → Notes → Attachments. Custom Profi fields map to Salesforce custom fields using the checklist from Step 1. The bulk operation uses Salesforce Bulk API 2.0 to handle large record volumes efficiently. Each object migration generates a validation report comparing source record counts, migrated counts, and error counts.
Run sample migration with field-level diff
A representative sample — typically 50–200 records per object type — migrates first. FlitStack generates a field-level diff showing source field values alongside destination field values, highlighting transformation issues, truncation, or mapping gaps. You verify that client-contact relationships resolve correctly, session timestamps align, course enrollment counts match, owner resolution works as expected, and multi-client session splitting is acceptable. Sample approval gates the full migration run.
Full migration with delta-pickup and rollback
The full migration runs against your production Salesforce org. A delta-pickup window (24–48 hours) captures any records created or modified in Profi during the migration run so Salesforce reflects the final state at go-live. Audit logs capture every insert, update, and error per object. If reconciliation fails, one-click rollback reverts the org to its pre-migration state. Post-migration, we deliver a reconciliation report showing record counts, field-level error details, and the owner resolution summary.
Platform deep dives
Profi
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 Profi 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
Profi: Not publicly documented.
Data volume sensitivity
Profi 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 Profi to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your Profi 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 Profi
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.