CRM migration
Field-level mapping, validation, and rollback between WORKetc and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
WORKetc
Source
Odoo CRM
Destination
Compatibility
10 of 12
objects map 1:1 between WORKetc and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from WORKetc to Odoo CRM is a structural migration across two very different architectures. WORKetc bundles CRM, Projects, and Billing in a single flat-rate subscription with a SOAP-first API that is tier-gated on lower plans. Odoo CRM is a modular open-source platform where each capability (CRM, Project, Invoicing, Helpdesk) is a separate app installed from the Odoo Apps store, all sharing a unified database. We export WORKetc data via SOAP endpoints with WSDL introspection where API access exists, falling back to CSV exports from the UI for Starter-tier accounts with no API module. The key migration challenge is the non-linear Project Types and Stages progress model in WORKetc, which we resolve by exporting stage weights and converting them to Odoo project task duration-based progress. Contractor portal users become Contact records with a custom Contractor flag rather than system Users. Workflows, automations, and web forms do not migrate; we deliver a written inventory of these for your admin to rebuild in Odoo.
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 WORKetc 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.
WORKetc
Contact
Odoo CRM
Contact
1:1WORKetc Contact records map directly to Odoo CRM Contact. Standard fields (name, email, phone, address) migrate as-is. The contact's lifecycle stage, owner assignment, and any custom field values transfer to equivalent Odoo custom fields. We resolve WORKetc owner references to Odoo User records by email match. Contractor portal users are mapped as Contact records with a custom field contractor_flag set to True rather than as internal User records.
WORKetc
Company
Odoo CRM
Company / Partner
1:1WORKetc Company records map to Odoo CRM Partner records with the company_type field set to company. Company → Contact parent-child relationships are preserved via the parent_id field on Contact. Company-level custom fields migrate to Partner custom fields in Odoo. Company status (active/inactive) maps to Odoo's active boolean.
WORKetc
Lead
Odoo CRM
Lead
1:1WORKetc Leads map to Odoo CRM Lead (crm.lead). The lead's status, source, and converted-flagged records migrate with the original conversion date preserved. Leads that were converted to Contacts in WORKetc retain the converted_contact_id and converted_company_id references. We export the full lead lifecycle including status transitions to preserve historical context in Odoo's lead history log.
WORKetc
Deal
Odoo CRM
Opportunity
1:1WORKetc Deals map to Odoo CRM Opportunity (crm.lead with type = opportunity). Deal stage maps to Odoo Stage, deal amount to Expected Revenue, and probability to the stage probability percentage. The deal-to-company association migrates to the Opportunity's partner_id and partner_name fields. Closed-won and closed-lost reasons from WORKetc custom fields map to Odoo's Lost Reason and Won Reason fields.
WORKetc
Project
Odoo CRM
Project
1:1WORKetc Projects map to Odoo Project. The key migration challenge is WORKetc's Project Types and Stages weighted progress model: each stage carries a custom percentage weight that does not map directly to Odoo's task-count or hours-based progress. We export the full stage configuration including weights and store the original weighted progress in a custom Odoo field original_weighted_progress__c. Odoo's native progress field is recalculated from task completion post-migration. Milestones map to Odoo Project Milestones.
WORKetc
Ticket
Odoo CRM
Ticket / Project Task
lossyWORKetc Support Tickets can map to Odoo Helpdesk Tickets (helpdesk.ticket) if the Helpdesk app is installed, or to Project Tasks if the customer prefers a project-centric support model. Ticket status, priority, and conversation threads migrate. Conversations migrate as message records on the Odoo ticket. We scope the destination app during discovery based on the customer's Odoo installation.
WORKetc
Invoice
Odoo CRM
Invoice
1:1WORKetc Invoice records migrate to Odoo Account Invoice. Invoice headers, line items, totals, and payment status transfer. However, payment transaction history and linked bank records are external financial data that require separate reconciliation and are noted as a gap in the migration scope. The customer should verify that Odoo's chart of accounts aligns with their billing taxonomy before invoice migration.
WORKetc
Custom Field
Odoo CRM
Custom Field
1:1WORKetc custom field definitions and values export across all objects. Field types (dropdown, text, date, numeric) are mapped to equivalent Odoo field types: selection fields for dropdowns, char/text for text, date/datetime for dates, float/integer for numeric. Multi-select custom fields in WORKetc map to Odoo char fields storing comma-separated values or to many2many tags depending on Odoo's module configuration. We flag any field type that requires a custom Odoo module to store equivalent data.
WORKetc
User
Odoo CRM
User
1:1WORKetc User records map to Odoo User by email match. We export the full user list including name, email, and role. Permission levels are not directly transferable because Odoo's access control model (ir.model.access) is role-based at the app and record level rather than tier-based like WORKetc. We map WORKetc admin users to Odoo internal users and read-only users to Odoo portal users where applicable.
WORKetc
Document / File
Odoo CRM
Attachment
1:1WORKetc file metadata and record-linked document URLs are exported as attachment references. Actual file binary export depends on Odoo's document storage capabilities (local filesystem, external storage, or an attached external storage app). We export file URLs and names; the customer's admin configures Odoo's document storage before the file migration phase. Files linked to projects and tickets migrate as Odoo attachments on the corresponding records.
WORKetc
Knowledge Base
Odoo CRM
Knowledge Article
1:1WORKetc Knowledge Base articles and category assignments export as article content and category references. Odoo Knowledge (document.page) is a separate app that may or may not be installed in the destination environment. If Odoo Knowledge is not present, we export articles as document records or as text attachments and flag this gap in the scope. Rich formatting and embedded media may require post-migration review for display consistency.
WORKetc
Web Form
Odoo CRM
Form Configuration
lossyWORKetc web form definitions and field mappings are exported as written specifications. The actual hosted form endpoints are WORKetc-specific and must be replaced with Odoo form endpoints (Odoo Website forms or a third-party form app) post-migration. We deliver a field-level mapping document so the customer's web developer can rebuild the forms with Odoo as the target.
| WORKetc | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | Contact1:1 | Fully supported | |
| Company | Company / Partner1:1 | Fully supported | |
| Lead | Lead1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Project | Project1:1 | Fully supported | |
| Ticket | Ticket / Project Tasklossy | Fully supported | |
| Invoice | Invoice1:1 | Fully supported | |
| Custom Field | Custom Field1:1 | Fully supported | |
| User | User1:1 | Fully supported | |
| Document / File | Attachment1:1 | Fully supported | |
| Knowledge Base | Knowledge Article1:1 | Mapping required | |
| Web Form | Form Configurationlossy | 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.
WORKetc gotchas
API access is tier-gated and uses legacy SOAP protocol
Project Types and Stages store weighted progress non-obviously
Contractor portal users are a separate identity class
Stale pricing data on aggregator sites
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 WORKetc tier verification
We audit the source WORKetc account across tier (Starter/Team/Foundations/Enterprise), active modules (CRM, Projects, Tickets, Invoicing, Knowledge Base), custom field count, user count including contractor portal users, pipeline count, and record volumes per object. We verify the current tier directly with worketc.com because multiple review aggregators show outdated pricing. This step confirms whether SOAP API access is available for programmatic export or whether we must rely on CSV exports from the UI.
Odoo environment setup and app installation
We verify which Odoo apps are installed in the destination database (CRM, Project, Helpdesk, Invoicing, Knowledge) and coordinate with the customer's Odoo administrator or hosting provider to install any missing apps before migration begins. We design the Odoo custom field schema to match WORKetc custom field definitions and types. If the customer uses Odoo multi-company, we confirm the company scope for each migrating record. Odoo configuration is validated in a staging environment before production migration.
Data export via SOAP or CSV with deduplication
We extract data from WORKetc using SOAP endpoints with WSDL introspection where API access exists on Team or Foundations tiers. For Starter-tier accounts, we use CSV exports from the WORKetc UI. We run deduplication before export — matching on email for Contacts and Company name for Accounts — and flag duplicates in a reconciliation report for the customer's admin to resolve. Project Types and Stages configuration is exported separately from project records to preserve the stage weight metadata.
Schema mapping and staging migration
We map WORKetc objects to their Odoo equivalents (Contact, Partner, Lead, Opportunity, Project, Task, Ticket, Invoice). Custom field types are matched to Odoo field types. We run a staging migration into the Odoo test database to validate record counts, relationship integrity (parent_id on Contacts to Partners, opportunity_id on Tasks), and attachment references. The customer's admin reviews the staging results and approves the mapping before production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: Partners (from WORKetc Companies), Contacts (with parent_id resolved to Partner), Leads, Opportunities (with partner_id and stage resolved), Projects (with stage weight metadata in custom fields), Tasks and Milestones, Tickets (to Helpdesk or Project Task depending on Odoo app scope), Invoices, and Attachments. Each phase emits a row-count reconciliation report. Owner resolution maps WORKetc owners to Odoo Users by email; any unmatched owners are held in a reconciliation queue for the admin to provision.
Cutover, validation, and workflow handoff
We freeze WORKetc writes during cutover, run a final delta migration of any records modified during the migration window, then set Odoo as the system of record. We validate record counts against the pre-migration audit, spot-check 25-50 records for field-level accuracy, and confirm attachment accessibility. We deliver the workflow and automation inventory document to the customer's admin team. We do not rebuild WORKetc workflows as Odoo automated actions inside the migration scope; that is a separate engagement or internal admin task.
Platform deep dives
WORKetc
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 WORKetc 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
WORKetc: Not publicly documented. WORKetc does not publish per-minute call limits or response headers indicating remaining quota. We confirm acceptable throughput with WORKetc support before running a full historical export..
Data volume sensitivity
WORKetc 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 WORKetc to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your WORKetc 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 WORKetc
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.