CRM migration
Field-level mapping, validation, and rollback between Sensei Cloud and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
Sensei Cloud
Source
Salesforce Sales Cloud
Destination
Compatibility
9 of 10
objects map 1:1 between Sensei Cloud and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
48–72 hours
Overview
Sensei Cloud stores dental practice data — patients, appointments, treatment plans, providers, insurance coverage records, and location information — in a schema optimized for clinical workflows. Salesforce Sales Cloud is a general CRM that stores Leads and Contacts in separate objects, uses Account records for organizations, and stores appointments as Tasks or Events. The fundamental challenge of this migration is translating a clinical data model into a sales-and-service data model without losing the patient record integrity that your practice depends on. FlitStack AI accesses Sensei Cloud through the Carestream Dental REST API to extract patient records, appointment histories, treatment plans, provider data, insurance information, and practice location records. We map each Sensei object to the closest Salesforce equivalent — patients to Contact, treatment plans to a custom Treatment_Plan__c object, appointments to Tasks — and flag any field that requires a custom Salesforce field or custom object before migration begins. Insurance coverage records have no direct Salesforce equivalent; we build a custom Insurance_Coverage__c object to preserve plan type, subscriber ID, group number, and coverage percentages. Imaging files in DICOM format cannot be stored in Salesforce Files natively and must be handled as an external reference or separate medical-image storage system. All workflows, automation rules, and clinical alerts in Sensei Cloud do not migrate; they must be rebuilt using Salesforce Flow or documented for your implementation team. A delta-pickup window captures any records modified in Sensei Cloud during the cutover so your Salesforce org reflects the final state at go-live.
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 Sensei Cloud 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.
Sensei Cloud
Patient
Salesforce Sales Cloud
Contact / Lead (split by status)
1:manyActive patient records in Sensei Cloud map to Salesforce Contact. If a patient record has no treatment history and a 'Lead' status flag, it routes to Salesforce Lead. The split rule is applied based on whether a patient has at least one completed treatment plan in Sensei — clinical activity determines the Salesforce object type. Unmatched person-type records without patient IDs are flagged in the pre-flight report before migration begins.
Sensei Cloud
Appointment
Salesforce Sales Cloud
Task
1:1Each Sensei appointment record becomes a Salesforce Task with Type='Appointment'. The appointment date and time migrate to Task.ActivityDate and Task.ActivityDatetime respectively. Provider assignment migrates as Task.OwnerId via email matching to a Salesforce user. Procedure codes (CDT codes) are preserved in a custom Procedure_Code__c text field on the Task. Appointment status maps to Task.Status (Open / Completed / Cancelled).
Sensei Cloud
Treatment Plan
Salesforce Sales Cloud
Custom Object: Treatment_Plan__c
1:1Sensei Cloud stores treatment plans as a structured clinical record — procedure code, tooth number, surface, estimated cost, and clinical notes. Salesforce has no native treatment-plan object. We create a custom Treatment_Plan__c object with lookup to Contact and fields for Procedure_Code__c (Text), Tooth_Number__c (Text), Surface__c (Text), Estimated_Cost__c (Currency), Clinical_Notes__c (Long Text Area), and Plan_Status__c (Picklist). Clinical notes longer than 32,768 characters are split across multiple Long Text Area fields.
Sensei Cloud
Provider / Dentist
Salesforce Sales Cloud
Contact
1:1Each provider (dentist, oral surgeon, hygienist) in Sensei Cloud migrates as a Salesforce Contact record. We map Provider_Specialty__c (a custom pick-list capturing dentist, oral surgeon, periodontist, endodontist, hygienist, orthodonist) and NPI__c (National Provider Identifier as a text field). Provider-to-Salesforce-user linking uses email match so the provider's Salesforce Contact and Salesforce User records are associated by email address. Unmatched provider emails are flagged before migration.
Sensei Cloud
Insurance Coverage
Salesforce Sales Cloud
Custom Object: Insurance_Coverage__c
1:1Dental insurance coverage records — plan type (PPO, HMO, Medicaid, Fee-for-Service), subscriber ID, group number, employer name, and coverage percentages per procedure category — have no Salesforce standard object equivalent. We create an Insurance_Coverage__c custom object with a lookup to Contact. Custom fields include Plan_Type__c (Picklist), Subscriber_ID__c (Text), Group_Number__c (Text), Employer__c (Text), Coverage_Percentage__c (Percent), and Max_Annual_Benefit__c (Currency). Coverage percentage logic per procedure type requires a custom formula field in Salesforce.
Sensei Cloud
Document / Attachment
Salesforce Sales Cloud
Salesforce Files
1:1Sensei Cloud file attachments (PDFs, JPEG images, Word documents) on patient records are downloaded and re-uploaded to Salesforce Files linked to the corresponding Contact record. Salesforce Files enforce a 25MB per-file size limit. Any file exceeding this limit is flagged in the pre-flight report with the patient record ID and file name so your team can split the file or store it externally. Inline images in clinical notes are extracted and re-hosted as Salesforce Files with a reference link in the Notes field.
Sensei Cloud
Recall / Hygiene Schedule
Salesforce Sales Cloud
Task
1:1Sensei Cloud recall records — next hygiene appointment date, recall type (6-month, annual, perio maintenance), and provider preference — migrate as Salesforce Tasks with a custom Recall_Type__c pick-list field. The Task.ActivityDate is set to the recall due date. A Salesforce Flow or formula field can then generate an outreach reminder based on this date. Original recall frequency (e.g., every 6 months) is preserved in a custom Original_Recall_Frequency__c text field for future Flow logic.
Sensei Cloud
Location / Practice Site
Salesforce Sales Cloud
Account
1:1Each physical practice location in Sensei Cloud becomes a Salesforce Account record representing the practice site. Address fields (street, city, state, zip, country) map directly to Account.BillingStreet, Account.BillingCity, Account.BillingState, Account.BillingPostalCode, and Account.BillingCountry. The practice site name maps to Account.Name. For multi-location DSOs, the parent Account relationship (ParentId) is used to model the DSO hierarchy if the source Sensei data includes a parent-organization identifier.
Sensei Cloud
Ledger Entry / Payment
Salesforce Sales Cloud
Task + Custom Field (audit reference)
1:1Sensei Cloud ledger entries and payment records do not map to a native Salesforce billing object — Salesforce Sales Cloud does not include a dental ledger. We create an audit record as a custom Task with Type='Ledger' and a Ledger_Reference__c custom text field holding the Sensei ledger entry ID, payment date, amount, and adjustment reason. Full financial reporting requires a separate billing system integration. The audit reference Task preserves the original payment history for compliance and reconciliation.
Sensei Cloud
Clinical Note
Salesforce Sales Cloud
Note (Salesforce Classic) / ContentNote (Lightning)
1:1Free-text clinical notes attached to patient records in Sensei Cloud migrate as Salesforce Notes (ContentNote in Lightning Experience). The Note.Title is set to 'Clinical Note — [Date]' and the Note.Body contains the full note text. Rich-text formatting is preserved where the source supports it. If a clinical note exceeds 32,000 characters, we split it into two Note records with a sequential suffix in the title to indicate continuation.
| Sensei Cloud | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Patient | Contact / Lead (split by status)1:many | Fully supported | |
| Appointment | Task1:1 | Fully supported | |
| Treatment Plan | Custom Object: Treatment_Plan__c1:1 | Fully supported | |
| Provider / Dentist | Contact1:1 | Fully supported | |
| Insurance Coverage | Custom Object: Insurance_Coverage__c1:1 | Fully supported | |
| Document / Attachment | Salesforce Files1:1 | Fully supported | |
| Recall / Hygiene Schedule | Task1:1 | Fully supported | |
| Location / Practice Site | Account1:1 | Fully supported | |
| Ledger Entry / Payment | Task + Custom Field (audit reference)1:1 | Fully supported | |
| Clinical Note | Note (Salesforce Classic) / ContentNote (Lightning)1: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.
Sensei Cloud gotchas
Legacy conversion leaves messy patient and chart duplicates
Chrome-only browser support affects migration workstation compatibility
Imaging data requires separate Carestream-format conversion pipeline
Billing ledger errors cannot be corrected post-creation
Provider assignments sometimes stored as text rather than foreign key
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
Pull Sensei Cloud data via the Carestream Dental REST API
FlitStack AI authenticates against the Sensei Cloud API using scoped read access to extract patient records, appointments, treatment plans, providers, insurance coverage, recall schedules, ledger entries, and document metadata. We pull all standard and custom fields visible in the Sensei schema. The data is staged in our secure migration workspace and a record-count summary is generated for your review before any Salesforce write operations begin. Any API rate-limit responses from Sensei Cloud are handled with exponential back-off and logged in the audit trail.
Map the dental data model to Salesforce objects and custom fields
We transform the Sensei data model into Salesforce's object structure: patients to Contact (or Lead), locations to Account, appointments to Task, treatment plans to the custom Treatment_Plan__c object, and insurance coverage to the custom Insurance_Coverage__c object. Custom fields are created in your Salesforce sandbox org first using the Metadata API — FlitStack delivers the custom field manifest (field label, API name, type, pick-list values) before any data is written. The mapping plan is reviewed with your Salesforce admin to confirm routing rules for the patient-to-Contact split.
Run a sample migration with field-level diff
A representative slice of 100–500 records — spanning patients across active/inactive statuses, appointments in multiple states, treatment plans, and insurance coverage records — is migrated to your Salesforce sandbox first. We generate a field-level diff report comparing every source field value against the destination Salesforce field value so you can verify routing rules, pick-list mappings, owner assignments, and custom object relationships before the full run commits. Discrepancies are resolved in the mapping plan and a corrected sample is re-run until the diff passes your acceptance criteria.
Execute the full migration with delta-pickup window
The full record set is migrated to your Salesforce production org. During the cutover window — typically 24–48 hours — your team continues working in Sensei Cloud. A delta-pickup captures any records created or modified in Sensei Cloud after the initial migration run. All operations are logged in the FlitStack audit trail (record count per object, API calls made, field values written, any errors or skipped records). If reconciliation reveals missing or mismatched records, one-click rollback reverses the Salesforce load so the migration can be re-run with corrected mapping logic.
Platform deep dives
Sensei Cloud
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 Sensei Cloud 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
Sensei Cloud: Not publicly documented.
Data volume sensitivity
Sensei Cloud 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 Sensei Cloud to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your Sensei Cloud 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 Sensei Cloud
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.