CRM migration
Field-level mapping, validation, and rollback between Service Toolz and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Service Toolz
Source
Odoo CRM
Destination
Compatibility
14 of 15
objects map 1:1 between Service Toolz and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Service Toolz is a field-service management platform built around work orders, technician scheduling, and quote generation — its data model treats contacts and companies as secondary to the service-ticket workflow. Odoo CRM uses a unified res.partner model for contacts and companies, sale.order for quotations, and crm.lead for pipeline opportunities, with project.task handling service tracking when the Project module is installed. We extract Service Toolz contacts, companies, work orders, quotes, and custom properties via the platform's export API, then map each record into the corresponding Odoo model using XML-RPC write operations. Work orders that represent billable service events route to project.task with original create dates and assigned technician data preserved. Quotes become sale.order records with line items mapped to product.product entries. Custom fields in Service Toolz — including user-defined work order properties and quote terms — translate to Odoo ir.model.data custom fields or notes fields depending on their data type. We surface workflows, automations, and scheduler configurations for manual rebuild in Odoo Studio since those are not transferable between platforms. Owner resolution happens via email match against Odoo res.users. A delta-pickup window captures any records modified in Service Toolz during the cutover period.
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 Service Toolz 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.
Service Toolz
Contact / Customer
Odoo CRM
res.partner
1:1Service Toolz contacts map directly to Odoo res.partner records. The partner's company_type field is set to 'contact'. Email, phone, and address fields transfer as-is. Service Toolz does not separate leads from customers, so all contacts land as customer-type partners in Odoo — leads requiring nurture are flagged via a custom stage field.
Service Toolz
Company / Business
Odoo CRM
res.partner (company_type='company')
1:1Service Toolz company records map to Odoo res.partner with company_type='company'. Parent-child company hierarchies in Service Toolz map to the parent_id field on res.partner. Multi-address companies: primary address becomes the partner's record; additional locations map to res.partner address records linked by parent_id.
Service Toolz
Work Order
Odoo CRM
project.task
1:1Service Toolz work orders are the core object in the source model and map to Odoo project.task when the Project module is installed. Each work order becomes a task with the original create date preserved as create_date. Technician assignment maps to user_ids on the task. Work order status (New/In Progress/Complete) maps to Odoo stage_id via value mapping defined per pipeline.
Service Toolz
Work Order Line Item
Odoo CRM
sale.order.line / project.task.type
many:1Line items on Service Toolz work orders — parts, labor, travel — merge into sale.order.line if the work order generated a billable quote, or into project.task description if it represents internal service work. Parts with product codes map to product.product by SKU match; unknown SKUs create placeholder product records flagged for review.
Service Toolz
Quote / Estimate
Odoo CRM
sale.order
1:1Service Toolz quotes become Odoo sale.order records in draft state. Quote number maps to name. Line items map to sale.order.line with product_id resolution. Quote expiration dates become validity_date on the order. Accepted quotes in Service Toolz trigger confirmation workflow — confirmed quotes map to sale.order with state='sale'.
Service Toolz
Product / Service Item
Odoo CRM
product.product
1:1Service Toolz products and services with pricing map to Odoo product.product. Unit price from Service Toolz maps to list_price. Products marked as 'service' type in Service Toolz set product_type='service' in Odoo. Bundle or package products map as is — Odoo's product pack module handles multi-item bundles if present.
Service Toolz
Work Order Status
Odoo CRM
project.task.stage
1:1Service Toolz status values (New, Scheduled, In Progress, On Hold, Complete, Cancelled) map to Odoo project.task stage records. We create stages matching the source status names in the target project's stage sequence. Stage transition timestamps from Service Toolz audit logs become stage_id change dates on the task record.
Service Toolz
User / Technician
Odoo CRM
res.users
1:1Service Toolz technicians and admin users resolve by email match against Odoo res.users. Unmatched users are flagged before migration — your Odoo admin creates the user record first or assigns records to a fallback user. Technicians assigned to work orders become user_ids on project.task. System-generated notes about technicians not yet migrated are preserved as message notes on the task.
Service Toolz
Attachment / File
Odoo CRM
ir.attachment
1:1Service Toolz file attachments on work orders and quotes re-upload to Odoo ir.attachment records linked to the corresponding res.partner, project.task, or sale.order. File size limits apply per Odoo's request configuration. Inline images in Service Toolz notes download and rehost as binary attachments in Odoo's filestore.
Service Toolz
Custom Work Order Property
Odoo CRM
ir.model.data custom field
1:1Service Toolz custom properties on work orders — user-defined fields like 'priority_level', 'service_category', or 'contract_id' — create new fields on project.task via Odoo Studio or direct model inheritance. Field type is inferred from source value format (text→char, number→integer, yes/no→boolean). Custom fields are created in the target Odoo database before migration runs.
Service Toolz
Scheduler / Calendar Event
Odoo CRM
calendar.event
1:1Service Toolz scheduled appointments map to Odoo calendar.event records linked to the assigned technician's res.users and the related project.task. Event start/end times preserve original scheduled values. If Odoo is running the Appointments module, events can be rendered as public booking slots — confirmed appointments map with state='open'.
Service Toolz
Invoice / Payment Record
Odoo CRM
account.move
1:1Service Toolz invoice records and payment status map to Odoo account.move (invoices) and account.payment. Invoice total maps to amount_total; payment records map to account.payment with matching partner_id. If Service Toolz invoices reference a sale.order, we link the account.move to that sale.order via the invoice_lines relationship.
Service Toolz
Workflow / Automation
Odoo CRM
Not migrated — manual rebuild required
1:1Service Toolz workflows and automation rules do not migrate. These include quote approval chains, work order routing rules, notification triggers, and field-update automations. We export workflow definitions as JSON blueprints for reference. Rebuild in Odoo uses Automate Action (ir.actions.server) and Studio workflow stages.
Service Toolz
Report / Dashboard
Odoo CRM
Not migrated — manual rebuild required
1:1Service Toolz custom reports and dashboards do not transfer. The underlying data (work orders, quotes, invoices) migrates, but the report layouts, calculated fields, and visualization configurations must be rebuilt in Odoo using the Reporting module, custom queries, or a BI connector.
Service Toolz
Integration / Connection
Odoo CRM
Not migrated — must be reconfigured
1:1Third-party integrations from Service Toolz — including QuickBooks Online sync, Twilio SMS, and Google Calendar links — do not migrate. We document each active integration with endpoint details and authentication method. Reconfiguration uses Odoo's Integration Apps or external API connectors with the same credentials.
| Service Toolz | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact / Customer | res.partner1:1 | Fully supported | |
| Company / Business | res.partner (company_type='company')1:1 | Fully supported | |
| Work Order | project.task1:1 | Fully supported | |
| Work Order Line Item | sale.order.line / project.task.typemany:1 | Fully supported | |
| Quote / Estimate | sale.order1:1 | Fully supported | |
| Product / Service Item | product.product1:1 | Fully supported | |
| Work Order Status | project.task.stage1:1 | Fully supported | |
| User / Technician | res.users1:1 | Fully supported | |
| Attachment / File | ir.attachment1:1 | Fully supported | |
| Custom Work Order Property | ir.model.data custom field1:1 | Fully supported | |
| Scheduler / Calendar Event | calendar.event1:1 | Fully supported | |
| Invoice / Payment Record | account.move1:1 | Fully supported | |
| Workflow / Automation | Not migrated — manual rebuild required1:1 | Fully supported | |
| Report / Dashboard | Not migrated — manual rebuild required1:1 | Fully supported | |
| Integration / Connection | Not migrated — must be reconfigured1: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.
Service Toolz gotchas
No public API means migration relies on report exports
Quote-to-Work Order ID linkage requires manual mapping
Inventory quantities are point-in-time and may drift
Add-on modules gate feature data
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
Audit Service Toolz data model and configure Odoo target schema
Before moving any data, we export a full snapshot of Service Toolz — contacts, companies, work orders, quotes, products, and custom properties — and profile it for duplicates, missing required fields, and cross-object reference gaps. Simultaneously, we activate the Odoo CRM and Project modules on the target instance, create the crm.stage records matching source work order statuses, and set up any custom fields identified in the Service Toolz custom property list. If the Custom plan is not active, we flag API access limitations and recommend plan upgrade or CSV-based import fallback with adjusted scope.
Resolve cross-object references and match owners by email
Service Toolz does not expose internal record IDs in exports, so we construct a resolution map using email (for contacts), company name (for organizations), and created timestamps. Contacts with matching emails in Odoo res.partner are updated; new contacts are created. Work order assignments resolve technician emails to res.users.id — unmatched technicians are flagged for admin action (create user or reassign). We build the cross-reference index before bulk migration so each write operation knows its target partner_id and user_ids.
Run a sample migration with field-level diff on 100–500 records
A representative slice migrates first — spanning contacts, companies, work orders, and quotes. We generate a field-level diff between the Service Toolz source snapshot and the Odoo destination records, verifying that status→stage mapping, owner resolution, and custom field population match expectations. The sample run surfaces duplicate contacts, missing stages, and product SKU gaps before the full run commits. We share the diff report with your admin for sign-off.
Execute full migration with delta-pickup window
The full dataset migrates in dependency order: companies → contacts → products → work orders → quotes → attachments. Each batch writes to Odoo via XML-RPC, with transaction rollback on error to prevent partial record creation. A delta-pickup window (typically 24–48 hours) runs concurrently with the cutover — any records created or modified in Service Toolz during the migration are captured and synced to Odoo before go-live. Audit log records every operation; one-click rollback reverts the entire dataset if reconciliation fails.
Reconcile, export workflow definitions, and hand off rebuild documentation
Post-migration, we run a reconciliation report comparing record counts, totals (quote amounts, work order counts), and partner linkage ratios against the Service Toolz source snapshot. Discrepancies above 1% trigger investigation and targeted re-migration of affected record sets. We deliver a JSON export of Service Toolz workflow definitions and integration endpoint configurations for your Odoo admin to reference during manual rebuild of automations, approval chains, and third-party connections.
Platform deep dives
Service Toolz
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 Service Toolz 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
Service Toolz: Not publicly documented.
Data volume sensitivity
Service Toolz 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 Service Toolz to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Service Toolz 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 Service Toolz
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.