CRM migration
Field-level mapping, validation, and rollback between Ringy (formerly iSales) and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Ringy (formerly iSales)
Source
Odoo CRM
Destination
Compatibility
9 of 12
objects map 1:1 between Ringy (formerly iSales) and Odoo CRM.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from Ringy (formerly iSales) to Odoo CRM is a migration from a communications-first sales CRM with a flat-rate pricing model to an open-source ERP suite where CRM is one module among many. Ringy has no documented public API, so all data extraction relies on the UI-based CSV export for Leads, which also surfaces associated Contacts, Companies, and Deals. We preserve pipeline and stage names as metadata during extraction and remap them to Odoo CRM stage sequences. We audit the auto-block keyword list to identify records that may have been silently filtered from exports before migration scoping begins. Drip campaign logic, automation sequences, and built-in VOIP call logs cannot migrate; we deliver a written inventory of these for the customer admin to rebuild in Odoo Studio or via custom Python modules.
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 Ringy (formerly iSales) 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.
Ringy (formerly iSales)
Lead
Odoo CRM
Lead
1:1Ringy Leads are the primary record object and the only object with a documented CSV export path. The UI Generate CSV function supports filtering and an Include all custom fields checkbox. We extract all Lead fields including name, phone, email, address, status, source, and any custom properties. Ringy Lead status values map to Odoo CRM stage names or a dedicated state field. We preserve the original Lead ID in a custom Char field for audit traceability. Any auto-blocked records identified during scoping are flagged separately and imported into a dedicated Odoo Lead queue for manual review rather than silently discarded.
Ringy (formerly iSales)
Company
Odoo CRM
Contact (is_company=True)
1:1Company records in Ringy are not exported via a separate path; they are extracted from Lead CSV rows where a company name field is populated. We normalize these into Odoo CRM Contact records with is_company=True and parent_id left null. The company name becomes the Contact name field, and any company-level address data is mapped to the contact address fields. If Ringy has a separate Companies section with dedicated fields, we request a filtered export of that subset and map it to Odoo Partner records. Ringy custom fields on companies are preserved as Odoo custom Char or selection fields on the Partner model.
Ringy (formerly iSales)
Contact
Odoo CRM
Contact (is_company=False)
1:1Ringy Contact records are exported via the same Lead CSV export workflow, since Ringy conflates Leads and Contacts in a single record model. We extract contact-level fields (name, phone, email, custom properties) and map them to Odoo CRM Contact with is_company=False. Email addresses serve as the dedupe key during import. Any associated parent company is resolved by matching the Ringy company name against the previously migrated Contact (is_company=True) records and linked via parent_id. Custom fields on contacts migrate as Odoo custom fields on the res.partner model.
Ringy (formerly iSales)
Deal
Odoo CRM
CRM Opportunity
1:1Deals in Ringy are associated with Leads and included in CSV exports via filtering. Pipeline names and stage definitions are preserved as metadata during extraction. We map each Ringy pipeline to an Odoo CRM pipeline with corresponding stage sequences, configuring Odoo stages to match Ringy stage names and ordering before migration begins. Deal amount, close date, owner, and associated Lead reference migrate directly. Closed-won and closed-lost statuses from Ringy map to Odoo CRM Won and Lost stage values. Any Ringy custom fields on Deals migrate as Odoo custom fields on crm.lead.
Ringy (formerly iSales)
Activity
Odoo CRM
Mail Thread Message / Note
1:1Call, email, and SMS activity history embedded in Ringy Lead records migrates as Odoo CRM Mail Thread messages attached to the corresponding Lead or Opportunity. Activity timestamps, types (call, email, sms), disposition data, and notes transfer to mail.message records with message_type set accordingly. Call duration and disposition migrate to custom fields on the message record. Activity ordering is preserved by setting create_date to the original Ringy timestamp. Note: Call recordings and full SMS thread content are not accessible via any documented export path and are flagged as non-migratable in the inventory document.
Ringy (formerly iSales)
Custom Properties
Odoo CRM
Custom Fields (ir.model.fields)
lossyCustom fields on Ringy Leads must be explicitly included during CSV export via the Include all custom fields checkbox. We verify this option is selected during extraction scoping. Each Ringy custom field is analyzed by data type (text, number, date, picklist) and mapped to the equivalent Odoo CRM field type (Char, Float, Date, Selection). Picklist values from Ringy become Selection field options in Odoo. We pre-create all custom fields in Odoo via Settings before any data import begins. Any Ringy custom fields that cannot be mapped (e.g., unsupported data types) are documented and migrated as Char fields with original values preserved for later reclassification.
Ringy (formerly iSales)
Tag
Odoo CRM
Tag
1:1Tags applied to Ringy records are extracted from Lead CSV rows where tag values appear in a delimited column. Tags are mapped to Odoo CRM Tags (crm.tag), which are a standard Odoo CRM feature. Multiple comma-separated Ringy tags on a single record become multiple Tag records linked via crm.lead.tag.rel. We preserve the full original tag taxonomy during migration so that the customer's admin can reorganize tagging logic in Odoo post-migration. If Ringy uses a taxonomy or hierarchical tag structure, we document it in the migration inventory for manual rebuild in Odoo.
Ringy (formerly iSales)
Owner
Odoo CRM
User
1:1Ringy owners referenced on Leads, Companies, and Deals are extracted by email from the CSV export. We resolve Ringy owners by email match against the destination Odoo CRM User records. Any Ringy owner without a matching Odoo User is held in a reconciliation queue for the customer admin to provision before record import resumes. Owner resolution must complete before Deal and Lead migration begins because Odoo CRM Opportunity requires an assigned user. Inactive Odoo users can be provisioned with no login access to preserve historical assignment without granting active licenses.
Ringy (formerly iSales)
Lead Status
Odoo CRM
Stage
lossyRingy Lead status values (new, contacted, qualified, lost, converted) map to Odoo CRM stage sequences. We configure Odoo stages to match Ringy status labels and ordering before migration. Each stage probability percentage from Ringy is applied to the corresponding Odoo stage. Stage configuration is deployed via Odoo data import before any record migration begins. If the customer uses Ringy status values that do not map directly to Odoo stage concepts, we propose a mapping during scoping and document the rationale.
Ringy (formerly iSales)
Pipeline
Odoo CRM
CRM Pipeline
lossyRingy deal pipeline names and stage sequences are preserved as metadata during CSV extraction. We create corresponding Odoo CRM pipelines with matching stage sequences before migration begins. Each Ringy pipeline maps to a separate Odoo CRM pipeline view in the Kanban interface. Pipeline configuration is deployed via Odoo Settings before any Opportunity records are imported. If the customer has a single Ringy pipeline, we create one Odoo pipeline; multiple Ringy pipelines each become separate Odoo pipelines, which is a native Odoo CRM feature.
Ringy (formerly iSales)
Drip Campaign
Odoo CRM
Studio Automation / Custom Module
1:1Drip campaigns and automated follow-up sequences in Ringy are stored as platform-native automation objects with no documented export API. Campaign structure, sequence logic, timing rules, and branching conditions cannot be extracted programmatically. We document the visible campaign structure including campaign names, associated stages, sequence templates, and keyword triggers as reference metadata in the migration inventory. The customer admin uses this document to rebuild equivalent automation logic in Odoo Studio using Odoo CRM's planned actions and server actions, or engages an Odoo partner for custom Python module development.
Ringy (formerly iSales)
Call Log
Odoo CRM
None
1:1Call history, disposition data, and recording URLs stored in Ringy's built-in VOIP softphone are not accessible via any documented export mechanism or API. The CSV export for Leads surfaces call activity as timestamped history entries but does not include recording URLs or full disposition metadata. We extract any call data that appears in the Lead activity log and migrate it as mail.message records, but recording files and detailed call metadata are non-migratable. We document the call log gap in the migration inventory so the customer understands what is not transferred before migration begins.
| Ringy (formerly iSales) | Odoo CRM | Compatibility | |
|---|---|---|---|
| Lead | Lead1:1 | Fully supported | |
| Company | Contact (is_company=True)1:1 | Fully supported | |
| Contact | Contact (is_company=False)1:1 | Fully supported | |
| Deal | CRM Opportunity1:1 | Fully supported | |
| Activity | Mail Thread Message / Note1:1 | Fully supported | |
| Custom Properties | Custom Fields (ir.model.fields)lossy | Mapping required | |
| Tag | Tag1:1 | Fully supported | |
| Owner | User1:1 | Fully supported | |
| Lead Status | Stagelossy | Fully supported | |
| Pipeline | CRM Pipelinelossy | Fully supported | |
| Drip Campaign | Studio Automation / Custom Module1:1 | Fully supported | |
| Call Log | None1: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.
Ringy (formerly iSales) gotchas
Usage-based billing for calling and texting is not obvious
No public API — all data extraction is CSV-only via the UI
Auto-block keyword feature silently filters records from exports
Drip campaign and automation logic cannot be exported
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
Discovery and scoping
We audit Ringy's CSV export configuration, verify the Include all custom fields checkbox is available and selected, and review the auto-block keyword list to identify any filtered records. We assess Odoo CRM module availability (Community vs Enterprise), data volume by object type, custom field count, pipeline and stage structure, and owner roster. The discovery output is a written migration scope document including record counts by object, a preliminary field mapping, a list of any auto-blocked records requiring manual review, and a decision checklist for the customer to confirm Odoo CRM edition and module scope before migration begins.
Field mapping and custom field creation
We build the complete field mapping from Ringy CSV column headers to Odoo CRM field names, analyzing each Ringy field by data type and matching it to the appropriate Odoo field type. Custom Ringy fields are pre-created in Odoo CRM via the Settings interface before any record import. Stage mapping documents the relationship between each Ringy Lead status value and its corresponding Odoo CRM stage, including probability percentages. Pipeline mapping creates the matching Odoo CRM pipeline and stage sequence in Settings before any Opportunity records are imported.
Data quality audit and staging export
We run a staging export from Ringy in a dedicated session, reviewing the CSV output for duplicates (records with matching email addresses), incomplete fields, inconsistent formatting (phone number formats, date formats), and orphaned company records without contact data. We flag data quality issues and propose a cleansing plan to the customer before the production export. Large exports are split by date range or filtered by status to stay within manageable CSV file sizes. The staging export serves as the basis for the sandbox migration in the next step.
Sandbox migration and reconciliation
We run a full migration into an Odoo CRM test environment using production-like data volume from the staging export. The customer reconciles record counts (Leads in, Contacts in, Companies in, Opportunities in), spot-checks 25-50 random records against the Ringy source, and reviews the Odoo CRM pipeline configuration and Kanban view. Any field mapping corrections, missing custom fields, or stage configuration adjustments happen in the test environment before the production migration begins. The customer signs off the sandbox migration before we proceed to production.
Production migration in dependency order
We run production migration in record-dependency order: Companies (Contacts with is_company=True) first, then Contacts with parent_id resolved, then Leads, then Opportunities with user_id and team_id resolved, then activity history as mail.message records, then Tags via tag assignment records. Each phase emits a row-count reconciliation report before the next phase begins. Owner references are resolved by email match against the Odoo CRM User table, with unresolved owners held in a queue for the customer admin to provision before Opportunity import. Auto-blocked records identified during scoping are imported into a dedicated Odoo Lead queue for manual review.
Cutover, validation, and automation rebuild handoff
We freeze Ringy access during cutover, run a final delta migration of any records modified during the migration window, then enable Odoo CRM as the system of record. We deliver the drip campaign inventory document listing all identified Ringy campaigns with names, stages, and templates, plus the auto-block keyword list and SMS thread gap documentation. We support a one-week hypercare window where we resolve reconciliation issues raised by the customer's sales team. We do not rebuild Ringy drip campaigns as Odoo Studio automations inside the migration scope; that work is handled by the customer admin or an Odoo partner.
Platform deep dives
Ringy (formerly iSales)
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 4 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Ringy (formerly iSales) and Odoo CRM.
Object compatibility
4 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
Ringy (formerly iSales): Not publicly documented.
Data volume sensitivity
Ringy (formerly iSales) 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 Ringy (formerly iSales) to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Ringy (formerly iSales) 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 Ringy (formerly iSales)
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.