CRM migration
Field-level mapping, validation, and rollback between Amwork and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Amwork
Source
Odoo CRM
Destination
Compatibility
10 of 14
objects map 1:1 between Amwork and Odoo CRM.
Complexity
CModerate
Timeline
4-7 weeks
Overview
Moving from Amwork to Odoo CRM is a structural migration across two different data architectures. Amwork organizes CRM records inside a workspace-builder model where Projects contain Tasks, and time entries log against tasks rather than contacts or companies. Odoo CRM uses a modular ERP approach where Leads convert to Opportunities and Contacts attach to Companies (Accounts) with separate pipeline Kanban views. We map Amwork's Deals-in-pipelines model to Odoo's crm.lead and crm.lead2opportunity partner wizard, resolve the workspace-to-module mapping, create Odoo custom fields to absorb Amwork custom field values, and preserve time entries as Odoo timesheet records linked to the associated project. Amwork automation rules, BPMN workflows, and telephony configurations do not migrate; we deliver a written inventory for the customer's Odoo admin to rebuild using Odoo Studio or a certified partner. The migration runs through Odoo's XML-RPC API with batch chunking, parent-record lookup resolution, and validation-rule bypass coordination with the customer's admin.
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 Amwork 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.
Amwork
Contact
Odoo CRM
Contact (res.partner)
1:1Amwork Contacts map to Odoo res.partner records with partner_type set to 'contact'. We map Amwork's contact name, email, phone, address, and lifecycle stage fields to Odoo's standard res.partner fields, with lifecycle stage preserved as a custom Char or Selection field on the partner record. Owner assignment from Amwork maps to Odoo User via email match. If Amwork contacts are linked to a company, we resolve the Amwork Company record to an Odoo res.partner with partner_type 'company' and set the contact's commercial_partner_id to the company partner.
Amwork
Company
Odoo CRM
Company (res.partner with partner_type = 'company')
1:1Amwork Companies map to Odoo res.partner records with partner_type = 'company'. We map company name, domain, industry, and address fields. The company domain from Amwork becomes the Website field on the Odoo partner record. Company records are created before any linked Contacts to satisfy the commercial_partner_id lookup at Contact insert time. Multi-workspace Amwork accounts may map to multiple Odoo company records under separate Odoo company records in a multi-company Odoo configuration.
Amwork
Deal
Odoo CRM
Opportunity (crm.lead)
1:1Amwork Deals map to Odoo crm.lead records. The Amwork deal stage name maps to an Odoo Stage value within the CRM pipeline Kanban. We pre-create Odoo CRM stages matching Amwork stage names before import so that deal values and stage assignments land cleanly. Deal amount, close date, probability, and owner assignment migrate to crm.lead fields: planned_revenue, date_deadline, probability, and user_id respectively. Amwork Deals that are not yet qualified map as crm.lead records awaiting conversion; Deals that represent active opportunities map as Opportunities in Odoo's pipeline view.
Amwork
Lead
Odoo CRM
Lead (crm.lead with type = 'lead')
1:1Amwork Leads in the separate Leads section map to Odoo crm.lead records with type = 'lead'. Amwork lead status maps to Odoo Stage within the Leads Kanban. We preserve the Amwork lead score as a custom Float field on the Odoo crm.lead. Leads that should convert to Opportunities during migration are flagged in the scoping phase; Odoo's crm_lead2opportunity_partner wizard is used post-migration for leads that convert after cutover.
Amwork
Pipeline (Sales Pipeline)
Odoo CRM
CRM Team + Pipeline Kanban
lossyAmwork Sales Pipelines with customizable stages map to Odoo CRM Teams. Each Amwork pipeline becomes a separate Odoo CRM Team with its own stage sequence. We configure the stage names and probabilities in Odoo CRM's pipeline settings before importing deals, ensuring that deal stage assignments match the Odoo stage ID rather than a stage name string. This prevents orphaned stage assignments if Odoo's stage names change post-migration.
Amwork
Project
Odoo CRM
Project (project.project)
1:1Amwork Projects map to Odoo project.project records. We map project name, description, status, and dates. Project member assignments from Amwork map to Odoo project.member records linked to the corresponding Odoo User. Project templates in Amwork map to Odoo project templates if the Odoo Project app is installed. If Odoo Project is not present in the destination instance, we flag the requirement to the customer during scoping and deliver project records as tagged crm.lead notes.
Amwork
Task
Odoo CRM
Task (project.task)
1:1Amwork Tasks inside Projects map to Odoo project.task records. We map task name, description, assignee, due date, priority, and checklist sub-items (as Odoo subtasks or embedded checklists). Parent-child task hierarchy is preserved via Odoo's parent_id field on project.task. Task-stage mapping (e.g., To Do, In Progress, Done) is created as Odoo project stage values. Tasks linked to a deal or contact in Amwork are cross-referenced in Odoo using a custom Many2one field to crm.lead or res.partner.
Amwork
Time Entry
Odoo CRM
Timesheet Entry (account.analytic.line)
1:1Amwork time entries log against Tasks and Projects. We map them to Odoo account.analytic.line (timesheet entries) with the task_id and project_id lookups resolved at migration time. The Amwork time entry duration, date, description, and billable flag map to unit_amount, date, name, and analytic_line_tag respectively. Note that Odoo timesheet entries require an Employee record as the user reference; we resolve the Amwork task owner to an Odoo Employee via email match and create a minimal Employee record if one does not exist. Time entries that were attached to contacts in the source without a project are preserved as read-only notes on the linked Contact.
Amwork
Custom Field (contact-level)
Odoo CRM
Custom Field (res.partner)
lossyAmwork custom contact fields require pre-creation of Odoo custom fields on res.partner before migration. We read the Amwork custom field definitions (type: text, number, date, choice), create matching Odoo ir.model.fields records with the correct ttype (char, float, date, selection), and map the custom field values during the Contact import phase. Multi-choice Amwork fields map to Odoo selection fields with explicit key-value pairs.
Amwork
Custom Field (task-level)
Odoo CRM
Custom Field (project.task)
lossyAmwork custom task fields (activated at the project level) map to Odoo custom fields on project.task. We pre-create the Odoo field definitions using Odoo's ir.model.fields API before task migration, mapping Amwork field types to the nearest Odoo ttype. This mirrors the Amwork project-level activation model. If the Odoo Studio app is available, we use Studio for field creation; otherwise we use direct ORM calls.
Amwork
User / Owner
Odoo CRM
User (res.users)
1:1Amwork Users referenced on Deals, Contacts, Companies, Tasks, and Projects map to Odoo res.users records. We resolve by email match against the destination Odoo instance's user list. Any Amwork Owner without a matching Odoo User is held in a reconciliation queue; the customer's Odoo admin provisions the missing User before record migration resumes. Active and inactive status is preserved in a custom field on the Odoo user record.
Amwork
Workspace
Odoo CRM
Company (res.company) or Team (crm.team)
lossyAmwork Workspaces are the top-level organizational unit containing projects, users, and settings. For single-workspace Amwork accounts, we map the workspace to the primary Odoo res.company record. For multi-workspace accounts, we map each Amwork workspace to a separate res.company in Odoo's multi-company configuration, with crm.team records scoped per workspace. This is configured during the schema design phase before any record migration begins.
Amwork
Attachment
Odoo CRM
Attachment (ir.attachment)
1:1Amwork file attachments on tasks and deals migrate as Odoo ir.attachment records linked via res_model and res_id to the corresponding project.task or crm.lead record. Large attachment batches are chunked into batches of 100 files to stay within Odoo API throughput limits. Files exceeding Odoo's attachment size limit are preserved as hosted URLs in a custom URL field on the record, with the customer informed of the limit before migration.
Amwork
Automation Rule
Odoo CRM
Automation Rule (documentation inventory)
1:1Amwork BPMN automation rules and email follow-up sequences are configuration objects and do not migrate. We do not migrate automation rules as code because they are platform-specific and require re-authoring in Odoo. We deliver a written inventory of every active Amwork automation rule with its trigger conditions, actions, and recommended Odoo equivalent (Odoo Studio server action, automated action, or base.automation rule). The customer's Odoo admin or a certified Odoo partner rebuilds them post-migration.
| Amwork | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | Contact (res.partner)1:1 | Fully supported | |
| Company | Company (res.partner with partner_type = 'company')1:1 | Fully supported | |
| Deal | Opportunity (crm.lead)1:1 | Fully supported | |
| Lead | Lead (crm.lead with type = 'lead')1:1 | Fully supported | |
| Pipeline (Sales Pipeline) | CRM Team + Pipeline Kanbanlossy | Fully supported | |
| Project | Project (project.project)1:1 | Fully supported | |
| Task | Task (project.task)1:1 | Fully supported | |
| Time Entry | Timesheet Entry (account.analytic.line)1:1 | Fully supported | |
| Custom Field (contact-level) | Custom Field (res.partner)lossy | Fully supported | |
| Custom Field (task-level) | Custom Field (project.task)lossy | Fully supported | |
| User / Owner | User (res.users)1:1 | Fully supported | |
| Workspace | Company (res.company) or Team (crm.team)lossy | Fully supported | |
| Attachment | Attachment (ir.attachment)1:1 | Fully supported | |
| Automation Rule | Automation Rule (documentation inventory)1: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.
Amwork gotchas
Import requires exact CRM field structure match
Deal stage moves require menu selection, not drag-and-drop
Time entries attach to tasks, not directly to contacts
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 Amwork workspace audit
We audit the source Amwork account across workspaces, pipeline count, active deal stages, custom field definitions (object and type), task and project hierarchies, time entry volume, user list, and active automation rules. We confirm whether Amwork's built-in telephony configuration is in use (telephony data does not migrate to Odoo). We pair this with an Odoo instance review: installed apps, current CRM stage configuration, existing custom fields, and res.company structure. The discovery output is a written migration scope document with the workspace-to-company mapping, the custom field creation list, and the automation inventory checklist.
Odoo schema preparation and custom field creation
We pre-create all required Odoo records before any data migration: res.company records (for multi-workspace Amwork), CRM Teams per Amwork pipeline, CRM pipeline stages with correct names and probability percentages, custom fields on res.partner (for contact custom fields) and project.task (for task custom fields), and the Odoo Employee records needed for timesheet resolution. Schema creation runs in an Odoo Sandbox environment for validation. Any missing Odoo apps (Project, Timesheet) are identified and the customer procures them before production migration begins.
Owner and user reconciliation
We extract every distinct Amwork Owner referenced on Deals, Leads, Contacts, Companies, Tasks, and Projects and match by email against the destination Odoo res.users table. Any Amwork Owner without a matching Odoo User is added to a reconciliation queue with the owner name and email. The customer's Odoo admin provisions missing Users and sets them to active (or inactive if the Amwork user is deactivated). Owner reconciliation is a gate: we cannot import records with unresolved OwnerId references past this step.
Sandbox migration and reconciliation
We run a full migration into an Odoo Sandbox using production-like data volume. The migration sequence is: Companies (res.partner, type=company), Contacts (res.partner, type=contact with commercial_partner_id resolved), Leads (crm.lead, type=lead), Opportunities (crm.lead, type=opportunity), Projects (project.project), Tasks (project.task with parent_id hierarchy resolved), Timesheet entries (account.analytic.line with task_id and project_id resolved), and Attachments (ir.attachment with res_model and res_id resolved). The customer's Odoo admin reconciles record counts and spot-checks 25-50 records against the Amwork source. Any mapping corrections are made in the sandbox before production migration is scheduled.
Production migration in dependency order
We run the production migration using the validated sandbox mapping, with records imported in strict dependency order: company partners first, then contacts, then leads and opportunities, then projects, then tasks, then timesheet entries, then attachments. Each phase emits a row-count reconciliation report before the next phase begins. Validation rules are temporarily disabled for the migration user via Odoo ir.rule coordination with the customer's admin. Odoo XML-RPC API calls are batched in chunks of 100 records with exponential backoff on 429 rate-limit responses.
Cutover, delta sync, and automation handoff
We freeze Amwork writes during the cutover window, run a final delta migration for any records modified during the migration run, and enable Odoo as the system of record. We deliver the automation inventory document listing every Amwork BPMN rule with its trigger, conditions, actions, and Odoo Studio equivalent recommendation. We provide a one-week hypercare window to resolve any reconciliation issues raised by the customer's team. Workflow rebuilds, Odoo telephony configuration, and Odoo Studio training are outside standard migration scope and are scoped as separate engagements.
Platform deep dives
Amwork
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 3 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 Amwork and Odoo CRM.
Object compatibility
3 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
Amwork: Not publicly documented. We assume typical SaaS tenant limits and tune extraction concurrency against the customer's plan during scoping..
Data volume sensitivity
Amwork 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 Amwork to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Amwork 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 Amwork
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.