CRM migration
Field-level mapping, validation, and rollback between My Practice Now and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
My Practice Now
Source
Salesforce Sales Cloud
Destination
Compatibility
11 of 12
objects map 1:1 between My Practice Now and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
48–72 hours
Overview
My Practice Now stores client records, appointment calendars, invoicing data, notes, and custom fields in a unified practice-management model designed for small-to-mid-size service businesses. Salesforce Sales Cloud uses a relational CRM model built around Leads, Contacts, Accounts, Opportunities, Tasks, Events, and custom objects with a separate Quotes and Contracts stack. FlitStack AI extracts My Practice Now records via the platform's export API, transforms them into Salesforce sObjects with correct field-type handling, and loads them via Bulk API to preserve original create dates and owner assignments. The migration carries all standard client data, appointment history, billing records, and custom fields. Workflows, automation rules, and notification templates do not migrate and must be rebuilt in Salesforce Flow — we export definitions for your Salesforce admin's reference. The delta-pickup window captures any records modified during the cutover window so Salesforce reflects the final state at go-live. All timestamps, staff assignments, and client associations are preserved in Salesforce, ensuring a complete operational history from day one.
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 My Practice Now 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.
My Practice Now
Client
Salesforce Sales Cloud
Contact
1:1My Practice Now client records map 1:1 to Salesforce Contacts. The client name splits into FirstName and LastName where available; single-field names populate the LastName field with FirstName left blank. Primary location/address data migrates to Contact.MailingAddress. Unmatched clients receive a placeholder Account assignment.
My Practice Now
Client
Salesforce Sales Cloud
Account
1:1When a My Practice Now client represents a business entity (rather than an individual), the client name and business details migrate to a Salesforce Account first, then a Contact is created and linked via AccountId. This two-step routing happens automatically during the import sequence.
My Practice Now
Appointment
Salesforce Sales Cloud
Event
1:1My Practice Now appointments map to Salesforce Events with original start and end datetimes preserved on Event.StartDateTime and Event.EndDateTime. The appointment status (confirmed, cancelled, no-show) migrates as a custom picklist field (Appointment_Status__c) on the Event record. If the appointment includes a location or staff assignment, those values map to custom fields on the Event as well.
My Practice Now
Appointment
Salesforce Sales Cloud
Task
1:manyAppointments classified as tasks (follow-up items, reminders without a scheduled block) split to Salesforce Tasks with Task.ActivityDate set to the scheduled date and Task.Subject carrying the appointment title. The original appointment ID is preserved as Source_Appointment_ID__c. These Tasks also link to the Contact via WhoId to maintain the client relationship in Salesforce.
My Practice Now
Invoice
Salesforce Sales Cloud
Order
1:1My Practice Now invoices migrate as Salesforce Orders. Invoice line items map to OrderProducts with Product2 lookup where a matching product exists; otherwise items are created as text-line OrderProducts. Invoice payment status migrates to a custom field (Invoice_Status__c) on the Order record.
My Practice Now
Invoice Line Item
Salesforce Sales Cloud
OrderProduct
1:1Invoice line items migrate to OrderProducts with Quantity, UnitPrice, and Description preserved. Total invoice amount recalculates from the loaded OrderProducts in Salesforce — the original total is stored in Total_Invoice_Amount__c for reconciliation. If any line item references a product that does not yet exist in Salesforce, FlitStack creates a placeholder Product2 record so the OrderProduct can be linked without data loss.
My Practice Now
Staff / Practitioner
Salesforce Sales Cloud
User
1:1My Practice Now staff/practitioner records are matched to existing Salesforce users by email address. Unmatched practitioners are flagged before migration — teams either create Salesforce users first or assign records to a fallback owner. Practitioner specialty maps to a custom text field.
My Practice Now
Client Note
Salesforce Sales Cloud
Note
1:1Client notes migrate as Salesforce Notes attached to the corresponding Contact record. Note.Title carries the note date and category; Note.Body carries the full text. Original create timestamps are preserved in CreatedDate after migration. If a client has multiple notes, each migrates as a separate Note record linked to the same Contact, preserving chronological order.
My Practice Now
Custom Field (Client)
Salesforce Sales Cloud
Custom Field (__c) on Contact
1:1My Practice Now custom client fields are read from the export schema, then created as Salesforce custom fields on the Contact object (or Account if the field applies to a business entity). Field type is matched — text to Text, number to Number, date to Date, picklist to Picklist. Picklist values are exported and re-created in Salesforce.
My Practice Now
Custom Field (Appointment)
Salesforce Sales Cloud
Custom Field (__c) on Event
1:1Appointment-specific custom fields from My Practice Now (e.g., room, service type, cancellation reason) are created as Salesforce custom fields on the Event object before data loads. Each field's type is mapped from the source schema definition. These fields are added to the Event layout so users can view and edit them directly in the Salesforce UI after migration.
My Practice Now
Location / Branch
Salesforce Sales Cloud
Custom Field (__c) on Account or Contact
1:1Multi-location My Practice Now setups store location/branch as a property of client or staff records. Salesforce has no native location field — we create a Branch__c custom picklist or text field on Account (for business clients) or Contact (for individual clients) and populate it from the source location value.
My Practice Now
Payment Record
Salesforce Sales Cloud
Custom Field (__c) on Order
1:1My Practice Now payment transaction history (payment method, amount, date) has no direct Salesforce Sales Cloud equivalent because Sales Cloud lacks native billing. We preserve payment records as Order_Payment__c custom fields and attach a PDF summary note so finance teams have the full history on record.
| My Practice Now | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Client | Contact1:1 | Fully supported | |
| Client | Account1:1 | Fully supported | |
| Appointment | Event1:1 | Fully supported | |
| Appointment | Task1:many | Fully supported | |
| Invoice | Order1:1 | Fully supported | |
| Invoice Line Item | OrderProduct1:1 | Fully supported | |
| Staff / Practitioner | User1:1 | Fully supported | |
| Client Note | Note1:1 | Fully supported | |
| Custom Field (Client) | Custom Field (__c) on Contact1:1 | Fully supported | |
| Custom Field (Appointment) | Custom Field (__c) on Event1:1 | Fully supported | |
| Location / Branch | Custom Field (__c) on Account or Contact1:1 | Fully supported | |
| Payment Record | Custom Field (__c) on Order1: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.
My Practice Now gotchas
Research data is sparse and often misattributed
Thinkific export scope determines what we can migrate
Content files require separate media migration
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
Extract My Practice Now data schema and custom field definitions
FlitStack AI reads My Practice Now's export schema to inventory all standard and custom fields on client, appointment, invoice, and staff objects. We capture field types, pick-list values, and required-field constraints. This schema inventory drives the Salesforce custom field creation plan delivered before any data movement. We also assess export API pagination limits and estimate the number of API calls required to extract all records.
Deliver Salesforce custom field and object setup plan
Based on the schema inventory, FlitStack AI produces a Salesforce Setup plan: create Contact custom fields, Event custom fields, Order custom fields, and any custom objects required for My Practice Now custom properties. Pick-list value sets are defined with exact value matches from My Practice Now. This plan is delivered as a checklist so your Salesforce admin can pre-create the schema or grant FlitStack metadata API access to create fields programmatically. The schema must be in place before the sample migration runs.
Resolve practitioner-to-User mappings and assign fallback owners
My Practice Now staff and practitioner records are matched against existing Salesforce Users by email address. Unmatched practitioners are surfaced in a pre-flight report — teams either create Salesforce Users before the migration or designate a fallback owner for their records. Appointments and notes authored by unmatched practitioners receive a staging assignment pending User creation. Owner resolution must be complete before the sample migration validates appointment and note placement.
Run a sample migration with field-level diff
A representative slice (typically 200–500 records covering a cross-section of clients, appointments, invoices, and staff) migrates first. FlitStack generates a field-level diff between the My Practice Now source values and the Salesforce destination values for every mapped field. You verify that client names, appointment datetimes, invoice totals, and custom field values appear correctly in Salesforce before the full run commits. Custom field creation gaps and owner resolution failures surface here.
Execute full migration with delta-pickup and rollback capability
The full migration runs against Salesforce using Bulk API 2.0 for high-volume record loads. A delta-pickup window (typically 24–48 hours) captures any client records, appointments, or invoices created or modified in My Practice Now during the cutover. The audit log records every operation — record counts, field values, and error dispositions. One-click rollback is available if the field-level reconciliation reveals unexpected data quality issues. Once rollback passes and you approve, My Practice Now is placed in read-only mode and Salesforce becomes the system of record.
Platform deep dives
My Practice Now
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 My Practice Now 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
My Practice Now: Not publicly documented at the individual storefront level; Thinkific generally applies org-level rate limits.
Data volume sensitivity
My Practice Now 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 My Practice Now to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your My Practice Now 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 My Practice Now
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.