CRM migration
Field-level mapping, validation, and rollback between Voopty Inc. and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Voopty Inc.
Source
Odoo CRM
Destination
Compatibility
6 of 12
objects map 1:1 between Voopty Inc. and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Voopty Inc. to Odoo CRM is a cross-domain migration that requires translating an education-management data model into a CRM and ERP framework. Voopty organizes data around Students, Clients, Courses, and Subscriptions; Odoo CRM uses the res.partner model for both individual and organizational contacts, crm.lead for pipeline records, and product.product for billable offerings. We resolve this schema gap by mapping Voopty Students and Clients to Odoo Partners (with separate Partner records for parents and organizations where applicable), Courses to Products or crm.lead Tags, and Subscription plans to Sale Orders with recurring lines. Attendance records and session history migrate as Notes or custom fields against the Partner record since Odoo CRM lacks a native attendance object. Payment records from WayForPay and LiqPay require value-mapping to Odoo's account.move accounting entries. Workflows, automations, and Telegram or email campaign configurations do not migrate; we deliver a written inventory for the customer's admin to rebuild in Odoo Studio or via a certified Odoo 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 Voopty Inc. object lands in Odoo CRM, 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
Odoo CRM
res.partner
1:1Voopty Student records map to Odoo res.partner with a Partner Type set to Individual. The student's name, email, and phone migrate directly. Course enrollments and attendance history are preserved as Notes attached to the Partner record or as custom fields in a dedicated education extension module the customer's admin installs post-migration. The Voopty active-client threshold (one lesson per month) does not transfer; the customer's Odoo admin sets activity flags based on CRM engagement patterns.
Voopty Inc.
Client
Odoo CRM
res.partner (parent or organization)
1:1Voopty Client records (parents, guardians, or adult learners who book services) map to Odoo res.partner. Adult learners who also enroll as students receive separate Partner records; parents or guardians are created as Individual Partners and linked to their associated Student Partners via the Odoo Contact multiselection field or a custom related field. Client-active status flag migrates as a boolean custom field partner_is_active_client__c since Odoo has no native activity-threshold concept.
Voopty Inc.
Teacher / Staff
Odoo CRM
res.users
1:1Voopty Staff accounts map to Odoo res.users so that the original teachers and administrators can log in to Odoo post-migration. Voopty role-based permissions (teacher vs administrator) translate to Odoo group membership (Sales / Administrator / HR / Project User). The customer's Odoo admin provisions the res.users records before migration and we match by email address. Inactive Voopty staff map to Portal users in Odoo if the customer wants read-only access for external teachers.
Voopty Inc.
Course
Odoo CRM
product.product
1:1Voopty Course records map to Odoo product.product with the product type set to Service. Course name becomes the product name; course description migrates to the product description field. Group class vs individual lesson configurations become product attributes or are mapped to separate product variants. If the customer uses Odoo Subscription, the course maps to a subscription template product that recurs on the student's subscription record.
Voopty Inc.
Scheduled Session
Odoo CRM
calendar.event
1:manyVoopty static fixed schedules and dynamic scheduling configurations map to Odoo calendar.event records with recurrence rules preserved where Odoo's recurrence model supports them. Each session generates a calendar.event linked to the instructor's res.users calendar and to the course's product.product. Student attendance is tracked by linking calendar.event to the relevant res.partner records (student Partners). Dynamic scheduling rules that exceed Odoo calendar recurrence capabilities are documented as custom Odoo Studio configurations for the customer's admin to finalize.
Voopty Inc.
Attendance Record
Odoo CRM
Note or calendar.event attendee
lossyVoopty attendance records per session per student have no native Odoo CRM equivalent. We migrate attendance as Notes attached to the calendar.event (session) record, containing the student name, attendance status (present, absent, late), and timestamp. Alternatively, if the customer installs the Odoo Education module from the Odoo App Store, attendance records map to the education.attendance model. We flag this choice during scoping.
Voopty Inc.
Subscription
Odoo CRM
sale.order or sale.subscription
1:1Voopty Subscription plans tied to students or clients map to Odoo sale.order records (for one-time or fixed-term billing) or sale.subscription records (for recurring billing if the customer activates the Subscription app). Subscription period, pricing, and student enrollment are mapped to order lines referencing the course product. The active-client threshold from Voopty does not transfer; subscription status in Odoo reflects the customer's own billing logic.
Voopty Inc.
Payment
Odoo CRM
account.move (Customer Invoice/Payment)
lossyVoopty payment records from WayForPay, LiqPay, and Stripe integrations map to Odoo account.move entries in the account module. Transaction IDs from the payment provider migrate to the account.payment.ref field. Payment amounts and dates transfer directly; the customer identifies which Odoo payment journal corresponds to each Voopty payment processor during scoping. We do not re-process payments; we record historical payment data as reconciled invoices or posted payments in Odoo accounting.
Voopty Inc.
Telegram / Email Campaign
Odoo CRM
mail.mass_mailing (documented, not migrated)
lossyVoopty Telegram and email campaign configurations do not migrate as code. We extract the campaign names, contact segments, and message content into a written inventory document that the customer's admin uses to rebuild campaigns in Odoo Email Marketing or a third-party email tool of their choice. Campaign contact lists (Voopty students and clients) are already present in Odoo res.partner and can be re-segmented using Odoo's contact filters.
Voopty Inc.
Static Schedule Definition
Odoo CRM
calendar.recurrence
1:1Voopty static scheduling exports require format conversion before Odoo import. We extract the recurring session definition (day of week, start time, end time, instructor, course) and map it to Odoo calendar.recurrence with the rrule fields populated per iCal RFC 5545. The recurrence links to the course product and instructor user so that Odoo generates calendar.event instances automatically. Any Voopty static schedule without a clear recurrence pattern is handled as individual calendar.event records.
Voopty Inc.
WayForPay / LiqPay Transaction Record
Odoo CRM
account.payment
lossyPayment provider references (WayForPay transaction IDs, LiqPay payment IDs) do not map to standard Odoo fields because neither processor has a native Odoo module in the standard install. We store the provider name and transaction ID in a custom field payment_provider_ref__c on account.payment records, and the customer can install a third-party Odoo payment module (available on the Odoo App Store) post-migration if they want automatic reconciliation.
Voopty Inc.
Custom Voopty Properties
Odoo CRM
ir.model.fields (custom)
lossyVoopty custom properties on Students, Clients, or Courses that have no Odoo standard field equivalent are pre-created as custom fields on the corresponding Odoo model (res.partner, product.product) before migration. We create the custom field schema via Odoo's Settings > Technical > Custom Fields interface or via a data migration script. All values transfer as their appropriate Odoo field type (char, text, integer, selection, many2one).
| Voopty Inc. | Odoo CRM | Compatibility | |
|---|---|---|---|
| Student | res.partner1:1 | Fully supported | |
| Client | res.partner (parent or organization)1:1 | Fully supported | |
| Teacher / Staff | res.users1:1 | Fully supported | |
| Course | product.product1:1 | Fully supported | |
| Scheduled Session | calendar.event1:many | Fully supported | |
| Attendance Record | Note or calendar.event attendeelossy | Fully supported | |
| Subscription | sale.order or sale.subscription1:1 | Fully supported | |
| Payment | account.move (Customer Invoice/Payment)lossy | Fully supported | |
| Telegram / Email Campaign | mail.mass_mailing (documented, not migrated)lossy | Fully supported | |
| Static Schedule Definition | calendar.recurrence1:1 | Fully supported | |
| WayForPay / LiqPay Transaction Record | account.paymentlossy | Fully supported | |
| Custom Voopty Properties | ir.model.fields (custom)lossy | 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
Odoo CRM gotchas
Odoo.sh version gating blocks assisted migrations from trial
Enterprise modules fail to install on Community after database restore
Custom module view inheritance breaks between Odoo major versions
Custom fields risk losing their application context on Community
API access for Community is gated behind the Custom Plan
Pair-specific challenges
Migration approach
Data access request and source audit
We submit a formal data access request to Voopty support and simultaneously audit the platform for record counts across Students, Clients, Teachers, Courses, Scheduled Sessions, Attendance, Subscriptions, and Payment records. We document the current active-client threshold, subscription tier structure, and any custom properties. This step establishes the migration volume baseline and identifies any data gaps that Voopty's UI export cannot cover, requiring manual CSV extraction or support-assisted pulls.
Education-to-CRM schema design in Odoo
We design the destination schema in a sandbox Odoo instance. This includes creating custom fields on res.partner (student vs client distinction, Voopty IDs, activity flags), product.product (course type, session count, instructor), and calendar.event (session attendance status). We define whether Courses map to Products or crm.lead Tags based on the customer's billing model. We install any required Odoo apps (Sale Subscription, Calendar, Contacts) and configure them before data import begins. The customer validates the schema in sandbox before production deployment.
CSV extraction, cleaning, and transformation
We extract Voopty data as CSV from the platform UI or via support-assisted export. We clean the records: standardizing phone number formats, resolving duplicate Student and Client records by email or name fuzzy match, and mapping Voopty field names to Odoo API field names. Any records with missing required fields (no email, no name) are flagged in a cleaning report for the customer's admin to complete before import. This phase typically takes one to two weeks for Voopty exports because of the lack of API access.
Sandbox migration and reconciliation
We run a full migration into an Odoo sandbox using production-like data volume. The customer's admin reviews migrated Partner records, checks course-product assignments, verifies subscription order lines, and spot-checks attendance Notes against the original Voopty attendance log. We resolve any mapping corrections and re-run validation. The customer signs off the sandbox migration before production begins. Any attendance module requirements (Odoo Education) are confirmed here.
Production migration in dependency order
We run production migration in dependency order: res.users (teacher and staff accounts, matched by email), res.partner (Student and Client records), product.product (Courses), calendar.recurrence and calendar.event (Scheduled Sessions), sale.order or sale.subscription (Subscriptions), account.move (Payments with provider references), and Notes (Attendance history). Each phase emits a row-count reconciliation report. Active-client flags and custom Voopty properties migrate in the same phase as their parent records.
Cutover, validation, and automation rebuild handoff
We freeze Voopty writes during cutover and run a final delta migration of records modified during the migration window. We enable Odoo as the system of record and disable Voopty access for the migration team. We deliver the written Telegram and email campaign inventory, the automation list, and the Odoo Studio workflow rebuild recommendations to the customer's admin. We support a one-week hypercare window for reconciliation issues. We do not rebuild Voopty automations as Odoo Studio flows inside the migration scope.
Platform deep dives
Voopty Inc.
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Voopty Inc. and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Voopty Inc. and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Voopty Inc. and Odoo CRM.
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 Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Voopty Inc. to Odoo CRM 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 Odoo CRM
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.