CRM migration
Field-level mapping, validation, and rollback between Empire SUITE and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Empire SUITE
Source
Odoo CRM
Destination
Compatibility
15 of 15
objects map 1:1 between Empire SUITE and Odoo CRM.
Complexity
BStandard
Timeline
3–5 business days
Overview
Empire Suite provides project accounting and time-tracking alongside basic CRM functions, storing contacts, companies, projects, and deal records with a focus on project-based revenue recognition. Odoo CRM models these entities as res.partner records (for both contacts and companies), crm.lead opportunities with configurable stages, and project.project records with task hierarchies. The migration carries all standard records — contacts, companies, deals, projects, time entries, notes, and attachments — via Odoo's XML-RPC API, using the external ID field to preserve cross-record relationships. Empire Suite workflows, custom calculation rules, and project-billing logic do not transfer; FlitStack delivers a workflow audit export that your Odoo administrator uses to rebuild automation in Odoo's Studio or server actions. Because Odoo stores companies as res.partner records rather than a separate Company object, each Empire Suite company lands as a partner with type='contact', and contact-to-company links are reconstructed via the partner_id relation on activity and opportunity records. Projects map to project.project with task breakdown, and time entries become crm.lead activities or project.task records depending on whether they are billable.
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 Empire SUITE 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.
Empire SUITE
Contact
Odoo CRM
res.partner
1:1Empire Suite contacts map to Odoo res.partner records with type='contact'. The primary company association is resolved via the partner_id relation after the company partner record is created, ensuring the parent link is in place before the contact lands. Names, emails, phone numbers, street addresses, city, state, and country fields map directly field-for-field, preserving original data without transformation.
Empire SUITE
Company
Odoo CRM
res.partner
1:1Empire Suite companies map to Odoo res.partner records with type='company'. Odoo differentiates companies from contacts using the is_company flag rather than a separate model. Parent‑company hierarchies present in Empire Suite are translated to the parent_id field on the Odoo partner, preserving multi‑level corporate structures and allowing related contacts to attach to the correct parent company.
Empire SUITE
Deal / Opportunity
Odoo CRM
crm.lead
1:1Empire Suite deals become Odoo crm.lead records with type set to 'opportunity'. Stage mapping follows a value‑by‑value translation against Odoo's crm.stage pick‑list for each sales team, ensuring the named stages and their sequence order are reproduced exactly. The probability field is re‑applied using the stage‑level default unless custom probability values were defined in Empire Suite.
Empire SUITE
Pipeline
Odoo CRM
crm.team + crm.stage
1:1Empire Suite pipelines map to Odoo sales teams (crm.team). Each pipeline's stages become crm.stage records scoped to that team via the team_id reference, preserving the original stage names, sequence order, and any on‑change behavior defined in Empire Suite. This ensures deals land in the correct kanban view with the right column layout when migrated.
Empire SUITE
Project
Odoo CRM
project.project
1:1Empire Suite projects are migrated to Odoo project.project records. Fields such as project name, description, start and end dates, the associated customer (partner_id), and the project manager (user_id) are transferred directly. The project status or stage in Empire Suite maps to the Odoo stage_id pick‑list, allowing the original progress states to be represented in the new system.
Empire SUITE
Task / Sub-project
Odoo CRM
project.task
1:1Empire Suite task or sub‑project records become Odoo project.task entries linked to their parent project.project via the project_id field. The task name, planned hours, current stage, and assigned user are mapped field‑for‑field, while parent‑task relationships are preserved using the parent_id reference, ensuring the original work breakdown hierarchy is retained in Odoo.
Empire SUITE
Time Entry
Odoo CRM
account.analytic.line
1:1Empire Suite time entries become Odoo account.analytic.line records linked to the project.project and project.task. The employee (user_id), date, duration/hours, and billable flag are mapped. Billable time entries connect to sale.order.line via the so_line field when Odoo's Timesheets app is active.
Empire SUITE
Note
Odoo CRM
mail.message
1:1Empire Suite notes migrate as Odoo mail.message records with message_type='comment' and no subtype, giving them the same visibility in the Odoo chatter thread as activity logs. Notes are attached to the parent res.partner, crm.lead, or project.task by model and res_id.
Empire SUITE
Attachment / File
Odoo CRM
ir.attachment
1:1Empire Suite file attachments are re-uploaded to Odoo's ir.attachment model, linked to the corresponding res_model and res_id on the parent record. Inline images in notes are downloaded, re-hosted in Odoo's filestore, and the URL is replaced in the note body.
Empire SUITE
User / Owner
Odoo CRM
res.users
1:1Empire Suite owner IDs are resolved by matching the email address against Odoo's res.users table. Before migration runs, any owners without a matching Odoo user are flagged in the migration report; you can either invite them to Odoo, map them to a fallback user, or hold their records for manual reassignment after go‑live.
Empire SUITE
Custom Object (Entity Type)
Odoo CRM
res.partner or custom model
1:1Empire Suite custom entities map to Odoo res.partner if the entity represents a person or organization. If the custom entity is transactional (e.g., a deliverables tracker), FlitStack creates a dedicated Odoo model and generates the corresponding Python class and XML view structure in the migration plan.
Empire SUITE
Custom Field (Contact)
Odoo CRM
ir.model.fields (res.partner)
1:1Each Empire Suite custom contact property becomes an Odoo ir.model.fields record on res.partner. Field type is inferred from the source data type: text values become char or text, dates become date, numeric pick-lists become selection. The custom field name is preserved in the field label and stored as a x_ prefixed db_column.
Empire SUITE
Custom Field (Deal / Project)
Odoo CRM
ir.model.fields (crm.lead / project.project)
1:1Deal and project custom fields map to Odoo ir.model.fields on crm.lead and project.project respectively. Value-mapping is applied where the custom field uses a pick-list: each distinct Empire Suite pick-list value gets a corresponding Odoo selection option created in the same order.
Empire SUITE
Workflow / Automation Rule
Odoo CRM
No equivalent — rebuild required
1:1Empire Suite workflow rules, approval chains, and automated notifications do not have a direct Odoo equivalent. FlitStack documents every active workflow rule with its trigger condition and action sequence so your Odoo administrator can rebuild it using Odoo's Studio automation builder or Python server actions.
Empire SUITE
Report / Dashboard
Odoo CRM
No equivalent — rebuild required
1:1Empire Suite reports and dashboards are not migrated. Underlying data (deals, projects, time entries) migrates completely, so Odoo's native reporting and custom Spreadsheet reports can reconstruct the metrics. FlitStack provides a data dictionary of the migrated tables for use in Odoo reporting setup.
| Empire SUITE | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner1:1 | Fully supported | |
| Deal / Opportunity | crm.lead1:1 | Fully supported | |
| Pipeline | crm.team + crm.stage1:1 | Fully supported | |
| Project | project.project1:1 | Fully supported | |
| Task / Sub-project | project.task1:1 | Fully supported | |
| Time Entry | account.analytic.line1:1 | Fully supported | |
| Note | mail.message1:1 | Fully supported | |
| Attachment / File | ir.attachment1:1 | Fully supported | |
| User / Owner | res.users1:1 | Fully supported | |
| Custom Object (Entity Type) | res.partner or custom model1:1 | Fully supported | |
| Custom Field (Contact) | ir.model.fields (res.partner)1:1 | Fully supported | |
| Custom Field (Deal / Project) | ir.model.fields (crm.lead / project.project)1:1 | Fully supported | |
| Workflow / Automation Rule | No equivalent — rebuild required1:1 | Fully supported | |
| Report / Dashboard | No equivalent — rebuild required1: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.
Empire SUITE gotchas
Custom Field-based Security Permissions vary by deployment
Empire TIME module may have isolated data stores
No public API documentation found in research
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
Extract Empire Suite data via API and profile schema
FlitStack connects to Empire Suite using the credentials you provide and pulls a full export of all standard objects — contacts, companies, deals, projects, tasks, time entries, notes, and attachments. We profile the export to count record volumes per object, identify custom field names and their pick-list values, detect duplicate records, and flag contacts without email addresses or companies without names. The profiling report goes to you for approval before any field-mapping work begins.
Create Odoo custom fields and configure crm.team structure
Before data moves, FlitStack generates a step-by-step Odoo setup checklist: create each Empire Suite custom field as an ir.model.fields record on the correct model (res.partner, crm.lead, project.project), add selection options for pick-list fields matching the Empire Suite values, create Odoo crm.team records corresponding to each Empire Suite pipeline, and configure crm.stage records with the correct sequence and probability values per team. We deliver this as a runnable checklist; you or your Odoo admin executes it before the migration run.
Run sample migration and generate field-level diff
A representative slice of 200–500 records — spanning contacts, companies, deals, projects, tasks, and time entries — migrates first. FlitStack produces a field-level diff comparing source values to destination values for every mapped field. You review the diff to verify company-contact resolution, pipeline-to-team mapping, custom field values, and owner email matching. Any mapping errors are corrected before the full run proceeds.
Execute full migration with ordered record sequencing
The full migration runs in dependency order: companies (res.partner, is_company=True) first, then contacts with parent_id resolution, then projects, then tasks, then crm.lead opportunities with stage and team mapping, then analytic line time entries, then attachments and notes. Foreign key constraints are respected — Odoo requires partner_id on crm.lead before it can commit the record. All records receive the x_empire_*_id custom field value so source traceability is maintained in Odoo.
Delta-pickup window and post-migration audit
After the full migration commits, a 24–48 hour delta-pickup window captures any records created or modified in Empire Suite during the cutover window. FlitStack generates a migration audit log listing every record created, updated, or skipped, with the reason for any skip (e.g., unmatched owner, missing required field). A reconciliation report compares record counts per object between source and destination so you can verify completeness before switching your team to Odoo.
Platform deep dives
Empire SUITE
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 Empire SUITE 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
Empire SUITE: Not publicly documented..
Data volume sensitivity
Empire SUITE 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 Empire SUITE to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Empire SUITE 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 Empire SUITE
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.