CRM migration
Field-level mapping, validation, and rollback between Voopty Inc. and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
Voopty Inc.
Source
Salesforce Sales Cloud
Destination
Compatibility
10 of 14
objects map 1:1 between Voopty Inc. and Salesforce Sales Cloud.
Complexity
BStandard
Timeline
6-10 weeks
Overview
Moving from Voopty Inc. to Salesforce is a platform-type migration, not a record copy. Voopty is an education ERP built for language schools and tutoring centers; Salesforce is an enterprise CRM with a standard Account-Contact-Opportunity data model. The migration requires mapping Voopty's student, client, teacher, course, session, attendance, and subscription entities into Salesforce's native objects and custom objects. The primary technical constraint is that Voopty has no documented public API, so we coordinate CSV exports directly with Voopty support, validate all records, and remap them into Salesforce's typed schema. We do not migrate Voopty workflows, automations, or Telegram/email campaigns; we deliver a written inventory of these for the customer's admin to rebuild in Salesforce Flow.
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 Voopty Inc. 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.
Voopty Inc.
Student
Salesforce Sales Cloud
Contact
1:1Voopty Student records map to Salesforce Contact with the Student record type. Voopty's contact fields (name, email, phone, address) map to standard Contact fields. We add custom fields student_id__c (Voopty's internal ID), enrollment_date__c, grade_level__c (picklist), and program_type__c (group class, individual, subscription). Parent or guardian contacts from Voopty's client records attach via the Parent__c lookup relationship we pre-create.
Voopty Inc.
Client
Salesforce Sales Cloud
Contact (separate record type)
1:1Voopty Client records (parents or adult learners who book services) map to Salesforce Contact with a Client record type, distinct from the Student record type. Active status from Voopty is computed behaviorally (one lesson per month); we preserve this in a custom field voopty_active_threshold__c and recommend the customer's admin set an explicit IsActive__c flag in Salesforce based on their business rules.
Voopty Inc.
Teacher / Staff
Salesforce Sales Cloud
Contact + User (if provisioned)
1:1Voopty Teacher and Staff records map to Salesforce Contact with the Teacher record type and a custom field teacher_role__c carrying the Voopty role (instructor, administrator, receptionist). If the teacher accesses Salesforce, we provision a matching User record and link via User_Contact__c lookup. Role-based permissions from Voopty map to Salesforce Permission Sets (e.g., Teacher_Access, Admin_Access) that the customer's admin assigns post-migration.
Voopty Inc.
Course
Salesforce Sales Cloud
Custom Object: Course__c
1:1Voopty Course records map to a Salesforce custom object Course__c. Fields include course_name__c, course_type__c (group, individual, hybrid), description__c, duration_minutes__c, and status__c (active, inactive). Course__c Lookup relationships to Account (the school or organization) and Contact (the assigned teacher) are resolved at migration time.
Voopty Inc.
Scheduled Session (static)
Salesforce Sales Cloud
Event + Custom Object: Session__c
1:1Voopty static recurring schedules (fixed weekly classes) map to Salesforce Event records for calendar visibility and a custom Session__c object for data integrity. The Event carries StartDateTime, EndDateTime, Subject (course name), and Location. Session__c stores the Voopty session_id__c, recurrence_pattern__c, session_type__c, and capacity__c. Dynamic per-session bookings map to Session__c with Event records created for confirmed bookings only.
Voopty Inc.
Scheduled Session (dynamic)
Salesforce Sales Cloud
Custom Object: Session__c
1:1Voopty dynamic scheduling (per-session, non-recurring) maps to Salesforce custom object Session__c without Event records unless explicitly booked. We preserve session_date__c, start_time__c, end_time__c, status__c (scheduled, completed, cancelled), and linked Course__c and teacher Contact lookups. Cancellation reason migrates to cancellation_reason__c.
Voopty Inc.
Attendance Record
Salesforce Sales Cloud
Custom Object: Attendance__c
1:1Voopty attendance tracking per session per student maps to a custom object Attendance__c with Lookup fields to Session__c and Contact (student). The attendance_status__c picklist maps from Voopty values (present, absent, late, excused) to Salesforce equivalents. Timestamp fields (arrival_time__c, departure_time__c) migrate as datetime fields. Historical attendance records are bulk-loaded via Salesforce Bulk API 2.0 in batches of 10,000.
Voopty Inc.
Subscription Plan
Salesforce Sales Cloud
Custom Object: Subscription__c or Opportunity
lossyVoopty subscription plans tied to students or clients require a scoping decision: if the school operates on a recurring revenue model (monthly tuition, course bundles), Subscription__c custom object is recommended with fields plan_name__c, billing_cycle__c, start_date__c, end_date__c, and status__c. If subscriptions represent one-time course enrollments with payment plans, Opportunity with custom fields is appropriate. The customer chooses during discovery; we document both options with pros and cons.
Voopty Inc.
Payment Transaction
Salesforce Sales Cloud
Custom Object: Payment__c
1:1Voopty payment records from WayForPay, LiqPay, and Stripe integrations map to a custom object Payment__c with fields amount__c, currency__c, payment_date__c, payment_provider__c, transaction_id__c (external reference), status__c, and Lookup to Contact (student or client payer) and Subscription__c or Opportunity. Payment provider metadata (processor, gateway response) is stored in payment_metadata__c as a long-text field for audit.
Voopty Inc.
Account (School / Organization)
Salesforce Sales Cloud
Account
1:1Voopty's organization-level entity maps to Salesforce Account. For single-location schools, Voopty's primary business account becomes a single Account record. For multi-location organizations, we create a parent Account (the school brand) and child Accounts (each location) with Account Hierarchy preserved via ParentId. Account custom fields include organization_type__c (language school, tutoring center, fitness studio, etc.) and timezone__c.
Voopty Inc.
WayForPay / LiqPay Configuration
Salesforce Sales Cloud
Custom Object: Payment_Config__c
lossyVoopty payment processor configurations (WayForPay and LiqPay credentials, webhook settings, payout currency) have no Salesforce native equivalent. We create a custom object Payment_Config__c to store processor_name__c, merchant_id__c, currency__c, and active__c so the customer's admin can configure Salesforce Payments or a third-party payment app post-migration. This is informational, not functional, within the migration scope.
Voopty Inc.
Telegram / Email Campaign (communication)
Salesforce Sales Cloud
No direct mapping
lossyVoopty's Telegram and email campaign integration for parent and student communication has no Salesforce standard object equivalent. Salesforce uses Marketing Cloud for email campaigns and Service Cloud for messaging integrations. We flag the Voopty campaign configuration in the migration handoff document with the recommended replacement approach (Marketing Cloud Email Studio for newsletters, Service Cloud Flow for parent notifications, or an AppExchange messaging app). This is a separate implementation scope.
Voopty Inc.
Role-Based Permission
Salesforce Sales Cloud
Permission Set
lossyVoopty staff accounts with role-based permissions for teachers and administrators map to Salesforce Permission Sets. We extract each distinct Voopty role and create a corresponding Permission Set in Salesforce (Teacher_Access, Admin_Access, Billing_View, etc.). Access levels (read, write, admin) translate to Salesforce field-level security settings on the custom education objects. User-to-Permission-Set assignments are documented for the customer's admin to assign post-migration.
Voopty Inc.
Booking (online reservation)
Salesforce Sales Cloud
Custom Object: Booking__c
1:1Voopty's online booking feature (for class-based businesses accepting student reservations) maps to a custom object Booking__c with fields booking_date__c, status__c, booked_by__c (Contact lookup), session__c (Session__c lookup), and notes__c. Confirmed bookings create Event records for calendar visibility; pending bookings remain as Booking__c only until confirmed.
| Voopty Inc. | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Student | Contact1:1 | Fully supported | |
| Client | Contact (separate record type)1:1 | Fully supported | |
| Teacher / Staff | Contact + User (if provisioned)1:1 | Fully supported | |
| Course | Custom Object: Course__c1:1 | Fully supported | |
| Scheduled Session (static) | Event + Custom Object: Session__c1:1 | Fully supported | |
| Scheduled Session (dynamic) | Custom Object: Session__c1:1 | Fully supported | |
| Attendance Record | Custom Object: Attendance__c1:1 | Fully supported | |
| Subscription Plan | Custom Object: Subscription__c or Opportunitylossy | Fully supported | |
| Payment Transaction | Custom Object: Payment__c1:1 | Fully supported | |
| Account (School / Organization) | Account1:1 | Fully supported | |
| WayForPay / LiqPay Configuration | Custom Object: Payment_Config__clossy | Fully supported | |
| Telegram / Email Campaign (communication) | No direct mappinglossy | Fully supported | |
| Role-Based Permission | Permission Setlossy | Fully supported | |
| Booking (online reservation) | Custom Object: Booking__c1: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.
Voopty Inc. gotchas
No documented public API for data export
Active client definition affects subscription mapping
Static scheduling exports require format conversion
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
Export coordination and data extraction
We initiate coordination with Voopty support to request CSV exports of all entity types: Students, Clients, Teachers/Staff, Courses, Scheduled Sessions, Attendance Records, Subscriptions, and Payment Transactions. We validate the export completeness by cross-referencing record counts against Voopty UI totals. Any export limitations (e.g., date range filters, missing fields) are flagged and resolved with Voopty before proceeding. This step typically takes two to four weeks due to the no-API constraint and requires explicit customer authorization for data release.
Schema design in Salesforce Sandbox
We design the destination schema in a Salesforce Sandbox (Full Copy or Developer Pro). This includes provisioning custom objects Course__c, Session__c, Attendance__c, Subscription__c, Payment__c, and Booking__c with all custom fields, picklists, and lookup relationships. We create Contact record types (Student, Client, Teacher) and configure Page Layouts per record type. Account hierarchy is designed for multi-location organizations. Permission Sets are created to mirror Voopty role-based access levels. Schema is deployed via metadata API into Sandbox for customer validation before any data loads.
Data validation and cleansing in staging
We load exported CSV data into a staging environment, run duplicate detection (matching by email, phone, and Voopty ID), and flag records with missing required fields or referential integrity issues (e.g., attendance record referencing a non-existent student). We resolve dedupe candidates per the customer's preference (keep newest, keep oldest, merge). We cleanse data quality issues (inconsistent date formats, invalid phone numbers) before mapping. The customer reviews the cleansing report and approves the mapping rules before Sandbox migration begins.
Sandbox migration and reconciliation
We run a full migration into Salesforce Sandbox using production-like data volume. The customer's operations lead reconciles record counts (Students in vs Contacts out, Sessions in vs Events/Session__c out, Attendance records loaded vs expected), spot-checks twenty to thirty random records against the Voopty source data, and reviews the custom object relationships (e.g., Attendance__c correctly linked to Session__c and Contact). The customer signs off the schema and mapping before production migration begins. Any mapping corrections happen here, not in production.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from Voopty organization), Contacts (Teachers first, then Clients, then Students with parent lookups resolved), Course__c (courses without dependencies), Session__c (sessions with Course__c and teacher Contact lookups), Attendance__c (attendance with Session__c and student Contact lookups via Bulk API 2.0), Subscription__c or Opportunity, Payment__c, and Booking__c. Each phase emits a row-count reconciliation report before the next phase begins. Owner resolution by email match handles any User provisioning gaps.
Cutover, validation, and rebuild handoff
We freeze writes in Voopty 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 a written inventory of every Voopty workflow, automation, Telegram campaign, and email sequence requiring rebuild in Salesforce Flow, Marketing Cloud, or an AppExchange messaging app. We support a one-week hypercare window for reconciliation issues. We do not rebuild automations or configure Salesforce Payments inside the migration scope; those are separate engagements.
Platform deep dives
Voopty Inc.
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 Voopty Inc. 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
Voopty Inc.: Not publicly documented. We confirm available export channels with Voopty support before scoping a migration..
Data volume sensitivity
Voopty Inc. 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 Voopty Inc. to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your Voopty Inc. 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 Voopty Inc.
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.