CRM migration

Migrate from Comet Suite to Odoo CRM

Field-level mapping, validation, and rollback between Comet Suite and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.

Comet Suite logo

Comet Suite

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

80%

8 of 10

objects map 1:1 between Comet Suite and Odoo CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Comet Suite and Odoo CRM take fundamentally different approaches to data architecture. Comet Suite stores business records in a multi-tenant cloud environment with REST API access and no required installation, while Odoo CRM runs as a modular Python/PostgreSQL application where every record belongs to a named model accessible via XML-RPC. The migration carries Comet Suite contacts, companies, activities, and custom fields into Odoo CRM's crm.lead, res.partner, and ir.attachment models. We surface Comet Suite's custom field definitions as Odoo custom columns on crm.lead so the source data is queryable post-migration. Activities (calls, emails, meetings) land as Odoo mail.message records attached to the relevant crm.lead. Odoo does not provide native workflow migration — Comet Suite automation rules must be exported as configuration JSON and rebuilt using Odoo's Studio automation builder or server actions. We use a staged load: contacts into res.partner first (since crm.lead requires a partner_id many2one), then leads with activity history, then attachments. A 24–48 hour delta window captures any records modified in Comet Suite during the cutover before we lock the source read access.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Comet Suite logo

Comet Suite

What's pushing teams away

  • Users report a steep learning curve for dispatchers and administrators — the interface does not follow common SaaS conventions and requires dedicated training time
  • The web UI opens every click in a new window, which creates a fragmented and frustrating navigation experience that experienced users cite as a consistent pain point
  • Limited native integrations with accounting software means finance teams still manually re-enter invoice data from Comet Suite into their ledgers
  • The platform lacks a well-documented public API, making automated data extraction and migration difficult without custom development
  • As the business scales beyond 50–100 technicians, the lack of advanced reporting and analytics forces teams to export CSVs for analysis in external BI tools

Choosing

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How Comet Suite objects map to Odoo CRM

Each row shows how a Comet 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.

Comet Suite

Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

Comet Suite contacts map to Odoo res.partner records with partner_type='contact'. Odoo requires a parent_id for commercial entities — contacts linked to companies in Comet Suite set partner_id to the corresponding res.partner company record. Partner records are loaded before crm.lead because Odoo's crm.lead model requires a partner_id many2one field on the lead form by default.

Comet Suite

Company

maps to

Odoo CRM

res.partner (Commercial Partner)

1:1
Fully supported

Comet Suite companies map to res.partner with partner_type='company'. The commercial_partner_id many2one self-references the company record. Parent-child hierarchies in Comet Suite (if parent_company_id exists) map to Odoo's parent_id field on res.partner. Multi-company Comet Suite setups with distinct legal entities require separate res.company records in Odoo if accounting data is also migrated.

Comet Suite

Contact + Company Association (N:N)

maps to

Odoo CRM

res.partner (child contact + parent_id)

many:1
Fully supported

Comet Suite supports N:N contact-to-company associations, but Odoo res.partner uses a hierarchical tree (one parent_id per contact). FlitStack AI migrates the primary company (most recently modified or by your specified rule) as the parent_id, and secondary company associations are preserved as a JSON-serialized list in a custom Char field (x_comet_secondary_companies) on the res.partner record for reference and manual re-association post-migration.

Comet Suite

Lead / Opportunity

maps to

Odoo CRM

crm.lead

1:1
Fully supported

Comet Suite leads and opportunities both map to Odoo crm.lead. The type field on crm.lead distinguishes 'lead' from 'opportunity' — we set type='opportunity' for records that have a monetary value or stage progression in Comet Suite. The pipeline stages in Comet Suite map to Odoo's crm.stage records, which are ordered by sequence within a team. Stage names are mapped value-by-value.

Comet Suite

Pipeline / Stage

maps to

Odoo CRM

crm.team + crm.stage

1:1
Fully supported

Odoo CRM's default configuration has one pipeline per database (via crm.team with stage_ids). If Comet Suite uses multiple named pipelines (e.g., Sales Pipeline, Support Pipeline), we map each to a separate crm.team with its own stage sequence. Odoo Enterprise allows multiple pipelines per team; Odoo Community uses one pipeline per team. Stage names map via value_mapping — custom stage names in Comet Suite become new crm.stage records created in the target Odoo database before the lead load.

Comet Suite

Activity (Call, Email, Meeting, Site Visit)

maps to

Odoo CRM

mail.message

1:1
Fully supported

Comet Suite activity records (calls, emails, meetings, site visits) map to Odoo mail.message records linked to the target crm.lead via res_model='crm.lead' and res_id=lead_id. The message_type field differentiates them: 'call' for phone logs, 'email' for email threads, 'meeting' for calendar events. Original timestamps and activity owners are preserved. Odoo requires the mail module to be installed for message tracking to function.

Comet Suite

Attachment / File

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

Comet Suite file attachments (documents, images, receipts) are downloaded from cloud storage and re-uploaded to Odoo ir.attachment records. The attachment is linked via res_model='crm.lead' and res_id pointing to the migrated lead record. File names and original URLs are preserved in the display_name and url fields of ir.attachment. Odoo's default filestore size limits apply — large files may require filestore configuration adjustment.

Comet Suite

Custom Fields (Comet Suite entity-specific fields)

maps to

Odoo CRM

ir.model.fields (x_comet_*)

1:1
Fully supported

Comet Suite custom fields on any entity become Odoo custom columns via Settings > Technical > Models — FlitStack creates ir.model.fields entries for each custom property using the x_comet_ prefix convention. Field type mapping: text fields become char/text, date fields become date, numeric fields become float or integer depending on Comet Suite type. Custom field values are loaded after the column schema is registered so the data lands without type errors. This is the primary scope driver for migrations with extensive Comet Suite property configurations.

Comet Suite

User / Owner

maps to

Odoo CRM

res.users

1:1
Fully supported

Comet Suite owner_id references are resolved by email match against Odoo res.users records. FlitStack generates a pre-flight user map showing matched users, unmatched owners (flagged with fallback assignment to admin), and any Comet Suite users who do not yet have an Odoo account. You create Odoo users for unmatched owners before the migration runs — no record lands without an owner assignment.

Comet Suite

Ticket / Case

maps to

Odoo CRM

crm.lead (type='lead') or helpdesk.ticket

1:many
Fully supported

If Comet Suite includes ticket or case records, they route to crm.lead with type='lead' in Odoo CRM's default configuration. If your Odoo installation includes the helpdesk module, tickets migrate to helpdesk.ticket with a link back to the originating crm.lead via x_comet_ticket_id for traceability. We surface this routing decision in the pre-migration mapping plan so your admin can choose the target based on your Odoo app stack.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

Comet Suite logo

Comet Suite gotchas

High

No documented public API for automated export

High

Attachments are not included in standard exports

Medium

Feature phone and flip phone data requires separate extraction

Medium

Custom Work Order fields vary by customer configuration

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • Odoo requires partner_id on crm.lead by default, breaking leads without a company

    Odoo CRM's default crm.lead model sets partner_id as a required many2one field. Comet Suite leads without an associated company will fail to insert without a fallback partner. FlitStack AI creates a default 'Unknown Partner' res.partner record and assigns it to all Comet Suite leads without a company association. After migration, your admin can re-associate leads with the correct partner records by email match. This is handled automatically, but you should review unassociated leads in Odoo post-migration to correct ownership before activating sales workflows.

  • Custom fields require schema registration before data load in Odoo

    Comet Suite custom fields cannot be inserted as data columns until Odoo's ir.model.fields registry is updated with the field definition. FlitStack AI creates custom field definitions via the Odoo interface or XML data files before the migration run begins — if this step runs against a production Odoo database during business hours, it triggers a schema cache invalidation that may temporarily log out active users. We schedule custom field registration during off-peak hours. Additionally, Odoo Community requires access to Settings to create custom fields; Odoo Enterprise allows it from the Studio interface. This is always disclosed before migration begins.

  • N:N contact-to-company associations collapse to a single parent_id

    Comet Suite supports multiple company assignments per contact (a contact working across several client companies). Odoo res.partner uses a single parent_id for the commercial entity, which cannot represent N:N relationships natively. FlitStack AI migrates the primary company as parent_id and serializes additional company IDs as a JSON array in x_comet_secondary_companies. This preserves data but requires manual re-association in Odoo if your sales process depends on seeing all client relationships on a single contact record. The x_comet_secondary_companies field is readable and can be used in Odoo reports to identify records needing re-association.

  • Odoo mail.message requires the mail module; base installation may omit it

    Comet Suite activities (calls, emails, meetings) migrate to Odoo mail.message records, but Odoo's minimal CRM install may omit the mail module from the initial apps list. If the mail module is not installed, the migration creates mail.message records in a stub table that will not display in the Odoo UI. FlitStack AI checks the installed apps before the migration run and alerts you if the mail module needs to be activated. Installing mail after the migration does not retroactively surface messages that were loaded without a valid res_model registry — a supplemental re-link step is required in that case.

  • File attachment size limits differ between Comet Suite and Odoo filestore

    Comet Suite cloud storage supports file uploads up to the plan limit (typically 25–100 MB per file). Odoo's default filestore configuration has a 25 MB per-file threshold; files exceeding this size cause an ir.attachment write failure during the migration run. FlitStack AI checks file sizes before downloading from Comet Suite and flags any attachment over the Odoo limit. You choose whether to split the file, link to the original Comet Suite URL as an external reference (stored in x_comet_source_url), or adjust Odoo's filestore configuration. This decision is documented in the pre-migration scope review.

Migration approach

Six steps for a successful Comet Suite to Odoo CRM data migration

  1. Audit Comet Suite schema and Odoo target configuration

    FlitStack AI extracts the Comet Suite entity list, custom field definitions, and API schema via REST endpoints. We simultaneously inspect your target Odoo database for installed apps, existing crm.stage records, res.partner structure, and custom field registry. The output is a pre-migration mapping plan: which Comet Suite objects map to which Odoo models, which custom fields require creation, and which records need Odoo user or partner pre-creation. This step runs before any data moves and typically takes 1–2 business days depending on the complexity of your Comet Suite configuration.

  2. Pre-create Odoo dependencies and resolve user ownership

    Before any record load, FlitStack AI creates Odoo crm.stage entries for each Comet Suite pipeline stage, creates ir.model.fields for every Comet Suite custom property, and resolves Comet Suite owner IDs against Odoo res.users by email match. Any owner without a matching Odoo user is flagged in a user-resolution report. You create the missing Odoo users or designate a fallback owner before the migration run. Custom field definitions are registered in a staging Odoo environment if available, or applied during an off-peak maintenance window on production.

  3. Load res.partner records (companies first, then contacts)

    The migration sequence follows Odoo's foreign-key dependencies: companies load first as commercial res.partner records, then contacts with their parent_id linking to the correct company partner. The N:N contact-company associations are collapsed to primary parent_id plus x_comet_secondary_companies JSON for post-migration reference. Timestamps, owner IDs, and custom field values are loaded alongside the core fields. This step is the most record-intensive — FlitStack AI uses batched XML-RPC writes with transaction commits every 1,000 records to avoid Odoo's request timeout limits.

  4. Load crm.lead and mail.message records

    With res.partner records in place, Comet Suite leads and opportunities migrate to crm.lead with type set per record characteristics. Stage mapping applies from the pre-created crm.stage registry. Activity records (calls, emails, meetings) load as mail.message records linked to the migrated crm.lead. The res_model field on each mail.message is set to 'crm.lead' so messages appear in the Odoo lead chatter. Original activity timestamps and owners are preserved in mail.message.date and author_id. This step also handles the default 'Unknown Partner' assignment for leads without a company association.

  5. Migrate attachments and run sample diff

    Comet Suite file attachments are downloaded, checked against Odoo's size limits, and re-uploaded to ir.attachment linked to the migrated crm.lead or res.partner. Files over the limit are flagged for manual review. A sample migration of 100–500 records (spanning companies, contacts, leads, and activities) runs first and produces a field-level diff comparing source values against the Odoo database. You review the diff to confirm stage mapping, owner resolution, and custom field values before FlitStack AI commits the full migration run.

  6. Delta pickup, audit log, and rollback readiness

    The full migration run executes against Odoo. During and after the run, a 24–48 hour delta-pickup window monitors Comet Suite for any records created or modified during cutover. New or changed records are migrated incrementally. FlitStack AI generates an audit log covering every insert, update, and skip operation. If reconciliation reveals data quality issues, one-click rollback reverts the Odoo database to its pre-migration state. After rollback, the delta window re-opens so no in-flight records are lost. The migration is considered complete once the audit log is clean and your team has confirmed lead and contact counts match between platforms.

Platform deep dives

Context on both ends of the pair

Comet Suite logo

Comet Suite

Source

Strengths

  • Real-time GPS tracking of field technicians and vehicles across multiple simultaneous locations
  • Dual-mode mobile app supporting both modern smartphones and legacy feature/flip phones
  • Integrated attendance tracking tied directly to dispatch and scheduling
  • Custom fields on Work Orders allow industry-specific data capture without platform changes
  • Centralized administration portal for managing users, devices, and permissions across an organization

Weaknesses

  • No publicly documented API means all data exports require screen-scraping or manual CSV downloads
  • UI paradigm of opening every action in a new window frustrates power users and slows down high-volume dispatchers
  • Limited native integrations with accounting, ERP, and CRM platforms — most connections require middleware or custom development
  • Analytics and reporting capabilities lag behind competitors, with no built-in BI or trend visualization
  • Attachment and document migration is not supported via any documented export path
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

Complexity grading

How hard is this migration?

Standard CRM migration. All 8 core objects map 1:1 between Comet Suite and Odoo CRM.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Comet Suite and Odoo CRM.

  • Object compatibility

    A

    All 8 core objects map 1:1 between Comet Suite and Odoo CRM.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Comet Suite: Not applicable — no public API.

  • Data volume sensitivity

    B

    Comet Suite doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Comet Suite to Odoo CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Comet Suite to Odoo CRM data migrations

Answers to the questions buyers ask most during Comet Suite to Odoo CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Comet Suite to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most Comet Suite to Odoo CRM migrations complete within 48–72 hours of clock time for under 50,000 total records. Larger datasets with 200,000+ records or extensive custom field configurations extend to 5–10 business days. The pre-migration mapping phase — where we audit Comet Suite entities, create Odoo custom fields, and resolve user ownership — typically adds 1–2 business days and runs in parallel with your team's Odoo configuration. The longest single step is usually the crm.lead load with activity history, because mail.message records must link to valid res_model IDs that already exist in the database.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Comet Suite.
Land in Odoo CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day