CRM migration
Field-level mapping, validation, and rollback between solve 360 and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
solve 360
Source
Odoo CRM
Destination
Compatibility
6 of 12
objects map 1:1 between solve 360 and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Solve 360 to Odoo CRM is a model transformation, not a simple record copy. Solve 360 uses a single unified record where Contacts, Companies, Tasks, and Support Requests are views of the same entity with relationship linking handled at the platform level. Odoo CRM uses a standard res.partner-based model where Contacts (people) and Companies (contacts with company_type=company) are separate records linked by a parent relationship. We break the Solve 360 relationship graph at migration time, create Company records first, then link Contact records to their parent Company via partner_id on the res.partner model. Tasks map to Odoo's project.task object, Follow-ups to crm.phonecall or CRM activities, and Support Requests to crm.helpdesk tickets or CRM leads depending on the customer's use case. Solve 360's category Tags migrate as Odoo tags; custom fields migrate as custom res.partner, crm.lead, or project.task fields as appropriate. Solve 360 Workflow automations export as configuration JSON but cannot be replayed in Odoo; we deliver a written automation inventory for the customer's admin to rebuild in Odoo Studio or via Python modules. Odoo's community-driven ecosystem and per-app pricing model attract teams leaving Solve 360 for a platform with broader ERP depth, a larger user base, and more frequent release cycles.
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 solve 360 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.
solve 360
Contact
Odoo CRM
res.partner (Contact)
1:1Solve 360 Contacts map to Odoo res.partner records with partner_type=contact. We extract name, email, phone, mobile, street, city, state, zip, country, and lifecycle properties. Solve 360's relationship linking to a Company record becomes the parent_id field on res.partner. Any user-defined custom fields on Contact migrate as custom res.partner fields of the corresponding type (char, float, date, selection). The migration user must have Odoo admin rights to create custom fields via Settings > Technical > Custom Fields.
solve 360
Company
Odoo CRM
res.partner (Company)
1:1Solve 360 Companies map to Odoo res.partner records with company_type=company. The company domain becomes the Website field and is used as a dedupe key during import. Company records are created before Contact records to satisfy the parent_id foreign key. Custom fields on Companies migrate as custom res.partner fields. Address fields (street, city, state, zip, country) migrate directly to Odoo's address format using the public API address fields.
solve 360
Support Requests
Odoo CRM
crm.helpdesk.ticket or crm.lead
lossySolve 360 Support Requests do not have a direct Odoo equivalent without the Helpdesk app. If the customer has the Odoo Helpdesk app installed, Support Requests map to crm.helpdesk.ticket with subject, description, priority, and status migrated. If Helpdesk is not installed, we map to crm.lead with the lead source set to 'Support Request Migration' and the original request description stored in the description field. The customer selects the strategy during scoping based on their Odoo edition and whether they plan to use Helpdesk post-migration.
solve 360
Tasks
Odoo CRM
project.task
1:1Solve 360 Tasks map to Odoo project.task. The task name becomes project.task name, status maps to Odoo stage_id (New, In Progress, Done, Canceled), priority maps to priority (0-4, where Solve 360 high=4, normal=3, low=2), and the assignee maps to user_id via email resolution against Odoo Users. Due dates, time tracking (hours logged), and billable flags migrate as custom fields or standard Odoo fields depending on whether the Project app is installed. If Project is not installed, Tasks migrate to CRM activities instead.
solve 360
Follow-ups
Odoo CRM
crm.phonecall or mail.activity
1:1Solve 360 Follow-ups are time-stamped activity records tied to a Contact or Company. If Odoo VoIP or CRM phonecall app is installed, they map to crm.phonecall with subject, date, duration, and notes. Otherwise, they map to mail.activity with activity_type_id set to the nearest Odoo standard type (call, meeting, email). The related partner_id is resolved from the Contact or Company mapping. Follow-ups without a linked Contact or Company are flagged in the reconciliation report for the customer to assign.
solve 360
Tags/Labels
Odoo CRM
crm.tag or project.tags
lossySolve 360 category tags are exported as a tag list per record and re-applied as Odoo native tags. Odoo CRM tags live on crm.lead and are stored in crm.tag. Project tags live on project.task. We map tags by object: Contact/Company tags become crm.tag records; Task tags become project.tags. Solve 360's tag-triggered form field behavior (where selecting a tag reveals additional fields) has no Odoo native equivalent and requires a custom Python module or Odoo Studio configuration to approximate.
solve 360
Users/Owners
Odoo CRM
res.users
1:1Solve 360 Users are both system actors and assignment targets. We extract the user list and map owner_id references to res.users via email match. Any Solve 360 Owner without a matching Odoo User is held in a reconciliation queue; the customer provisions the Odoo User before record import resumes. Active/inactive status maps from Solve 360 to the Odoo active flag.
solve 360
Custom Fields
Odoo CRM
Custom res.partner, crm.lead, or project.task fields
lossySolve 360 supports user-defined custom fields on Contacts, Companies, Tasks, Follow-ups, and Support Requests with types including text, number, date, and selection. We export field definitions (name, type, selection options) and create matching custom fields in Odoo via Settings > Technical > Custom Fields before data import. Selection fields map to Odoo selection fields with matching key-value pairs. Date fields map to Odoo date fields. Number fields map to Odoo float or integer depending on the field content.
solve 360
Pipeline Stages
Odoo CRM
crm.stage
lossySolve 360 pipeline stages map to crm.stage records within the customer's Odoo Sales pipeline. Stage names, sequence order, and probability percentages migrate to name, sequence, and probability on crm.stage. The customer configures the pipeline (sales team assignment, team stages) in Odoo before migration if they require multiple pipelines; otherwise all deals migrate into the default Sales pipeline.
solve 360
Attachments
Odoo CRM
ir.attachment
1:1Attachments on Contacts, Companies, Tasks, and Support Requests are downloaded as files and re-uploaded to Odoo via the ir.attachment API. Each attachment is linked to its parent record (res.partner, project.task, crm.helpdesk.ticket) via res_model and res_id. File metadata (name, mimetype, create_date) is preserved. Attachments exceeding 25 MB are flagged for the customer to store separately if Odoo file storage limits are a concern.
solve 360
Workflow Automations
Odoo CRM
No direct migration
lossySolve 360 Workflow definitions encode logic specific to its automation engine (task sequences, intelligent scheduling, assignee notifications). We export all active workflow definitions as structured JSON including trigger conditions, step sequences, delays, and action types. This JSON is delivered as a migration artifact. Workflows cannot be replayed in Odoo because Odoo Automated Actions and Studio workflows use a different trigger and action model. The customer's Odoo admin rebuilds workflows using Odoo Studio or server actions; we provide the JSON as a reference specification.
solve 360
Custom Record Type (third record type)
Odoo CRM
crm.lead or custom project model
lossySolve 360 allows a third custom record type (Work Orders, Cases, Sites, Properties, Projects) with its own fields and tags. Odoo has no native equivalent without custom module development. We map this record type to crm.lead with a custom type field (x_solve_type) to preserve the original record type designation, or to project.project if the custom type is project-oriented. The customer selects the target during scoping. Custom fields specific to the third record type migrate as custom fields on the target model.
| solve 360 | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner (Contact)1:1 | Fully supported | |
| Company | res.partner (Company)1:1 | Fully supported | |
| Support Requests | crm.helpdesk.ticket or crm.leadlossy | Fully supported | |
| Tasks | project.task1:1 | Fully supported | |
| Follow-ups | crm.phonecall or mail.activity1:1 | Fully supported | |
| Tags/Labels | crm.tag or project.tagslossy | Fully supported | |
| Users/Owners | res.users1:1 | Mapping required | |
| Custom Fields | Custom res.partner, crm.lead, or project.task fieldslossy | Mapping required | |
| Pipeline Stages | crm.stagelossy | Mapping required | |
| Attachments | ir.attachment1:1 | Mapping required | |
| Workflow Automations | No direct migrationlossy | Mapping required | |
| Custom Record Type (third record type) | crm.lead or custom project modellossy | 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.
solve 360 gotchas
Minimum 4-user billing floor applies to the CRM plan
No self-serve bulk export; API access is assisted
Two separate products: Solve CRM vs. Solve Client Manager
Workflow automations are not portable between platforms
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 credential procurement
We audit the source Solve 360 portal across product variant (CRM vs Client Manager), user count, record volumes (Contacts, Companies, Tasks, Follow-ups, Support Requests), custom field definitions, pipeline stages, and active category tags. We also confirm whether a custom third record type is in use and whether the customer uses Solve Client Manager, Solve CRM, or the bundle. We request API credentials from Solve's client engineers during this phase because access is assisted rather than self-serve. The discovery output is a written migration scope, object inventory, and a note flagging any customer on Client Manager with storage usage above Odoo's target plan limit.
Dialect selection and custom field schema creation
We select the Odoo migration strategy for Support Requests (crm.helpdesk.ticket vs crm.lead) and for the third custom record type (crm.lead with type discriminator vs custom Python model). We create custom fields in Odoo via Settings > Technical > Custom Fields for all user-defined Solve 360 fields, matching field types and selection option values. We configure crm.tag entries for all Solve 360 category tags and crm.stage entries for all pipeline stages with sequence and probability. CRM team members and pipeline assignments are configured in Odoo before any data import begins.
Parent record creation and relationship mapping
We extract all Solve 360 Companies and create res.partner records with company_type=company first, using the domain as the dedupe key. We then extract Contacts, linking each to its parent Company via parent_id on res.partner using the company relationship data from Solve 360's relationship linking. Any Contacts without a linked Company are created as standalone contacts. Owner assignments are resolved by matching Solve 360 owner email to Odoo res.users login. Owners without a match enter the reconciliation queue for the customer's admin to provision.
Task, Follow-up, and Support Request migration
We migrate Tasks to project.task (or CRM activities if the Project app is not installed) with status, priority, due date, user_id, and time tracking preserved. Follow-ups migrate as crm.phonecall or mail.activity records linked to the Contact or Company via partner_id resolution. Support Requests migrate using the customer-selected strategy (helpdesk ticket or crm.lead) with status, description, priority, and conversation history preserved as message records or ticket descriptions. All three object types resolve parent_id and user_id via the lookup tables created in earlier steps.
Attachment migration and tag re-association
We download all file attachments from Solve 360 (Contacts, Companies, Tasks, Support Requests), re-upload them to Odoo via ir.attachment with res_model and res_id pointing to the correct parent record, and preserve create_date and filename metadata. After attachment re-association, we apply the exported category tag list to each record, creating crm.tag entries for CRM objects and project.tags for task objects. We run a reconciliation report comparing record counts by object and tag count per object against the source export.
Cutover, validation, and automation handoff
We freeze writes in Solve 360 during cutover, run a final delta migration of any records modified during the migration window, and enable Odoo CRM as the system of record. We deliver the Workflow JSON inventory document to the customer's admin with a mapping table identifying the Odoo Studio or server action equivalent for each Solve 360 workflow step. We support a five-business-day hypercare window to resolve data quality issues raised by the customer's team. Workflow rebuild, Odoo custom module development for the third record type, and training are outside the standard migration scope and are quoted separately.
Platform deep dives
solve 360
Source
Strengths
Weaknesses
Odoo CRM
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 solve 360 and Odoo CRM.
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
solve 360: Not publicly documented.
Data volume sensitivity
solve 360 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 solve 360 to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your solve 360 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 solve 360
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.