CRM migration
Field-level mapping, validation, and rollback between Thunderbolt Pipeline and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Thunderbolt Pipeline
Source
Odoo CRM
Destination
Compatibility
13 of 14
objects map 1:1 between Thunderbolt Pipeline and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Thunderbolt Pipeline is a construction-focused bid management and CRM platform that combines workforce planning, bid tracking, and customer relationship tools in a single subscription. Teams typically outgrow Thunderbolt Pipeline when they need deeper ERP integration, multi-currency accounting, inventory management, or the ability to connect CRM records directly to projects and purchase orders. Odoo CRM — part of the Odoo business suite — models leads as crm.lead records and companies as res.partner records, with opportunities moving through configurable pipeline stages. FlitStack AI extracts Thunderbolt Pipeline contacts, companies, bid records, notes, and activities via the platform's export capabilities, then maps them into Odoo CRM using XML-RPC imports. We preserve bid amounts, stage history, and owner assignments as custom fields where native Odoo fields don't exist. Automations, bid templates, and workforce schedules do not migrate — those require Odoo workflow rebuild and can be exported from Thunderbolt Pipeline as reference documents. The migration runs against Odoo's XML-RPC API with a test-pass-full-run sequence and a 24–48 hour delta window for in-flight records.
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 Thunderbolt Pipeline 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.
Thunderbolt Pipeline
Contact
Odoo CRM
res.partner
1:1Thunderbolt Pipeline contacts map to Odoo res.partner records. Email, phone, address, and job title fields transfer directly. Role type flags (General Contractor, Subcontractor, Supplier) migrate as partner category tags in Odoo for downstream segmentation. Contacts without a company link in Thunderbolt create standalone partner records.
Thunderbolt Pipeline
Company
Odoo CRM
res.partner (company_type)
1:1Thunderbolt Pipeline company records map to company-type res.partner in Odoo. Company name becomes partner name, website maps to the website field, and address fields transfer directly. Employee count and annual revenue have no native Odoo equivalent and migrate as custom fields if that data exists in Thunderbolt. Parent-company hierarchies in Thunderbolt map to the parent_id field on res.partner.
Thunderbolt Pipeline
Contact + Company link
Odoo CRM
res.partner + Contact
many:1Thunderbolt Pipeline allows contacts to be associated with multiple companies (N:N relationship). Odoo res.partner stores a single parent_id for the primary company link. We migrate the most recently modified company as the primary link and surface secondary company associations as notes on the partner record for manual rebuild in Odoo's Contact module if needed.
Thunderbolt Pipeline
Bid
Odoo CRM
crm.lead
1:1Thunderbolt Pipeline bid records become Odoo CRM leads. Bid amount maps to planned_revenue, bid stage maps to crm.stage, and bid owner resolves to crm.lead.user_id by email. Bid records without a primary contact link to the company partner record. Attachments re-upload as Odoo ir.attachment records linked to the crm.lead.
Thunderbolt Pipeline
Bid Stage
Odoo CRM
crm.stage
1:1Thunderbolt Pipeline bid stages (Bidding, Under Review, Awarded, Lost, etc.) map to Odoo CRM stage records. Odoo stages must be pre-created with exact name matches before the migration runs, otherwise leads import with no stage or fail validation. Each Thunderbolt stage requires a corresponding Odoo stage ID in the value-mapping table.
Thunderbolt Pipeline
Bid Owner
Odoo CRM
crm.lead.user_id
1:1Thunderbolt Pipeline bid owner resolved to Odoo res.users by email match. If the owner email does not correspond to an active Odoo user, the record is flagged and assigned to a fallback user or team lead. Owner resolution happens before bid records are imported to prevent orphaned leads without a responsible user.
Thunderbolt Pipeline
Attachment / File
Odoo CRM
ir.attachment
1:1Thunderbolt Pipeline file attachments on bid records re-upload as Odoo ir.attachment records linked to the corresponding crm.lead. Files download from Thunderbolt, re-upload to Odoo, and attach via the ir.attachment model. File size limits from Odoo apply (default 25MB per file for file storage; larger files require adjustments to Odoo file storage configuration).
Thunderbolt Pipeline
Note
Odoo CRM
mail.message
1:1Thunderbolt Pipeline notes on bid records become Odoo mail.message records on the crm.lead. Original timestamps and note authors are preserved in the mail.message fields create_date and create_uid. Notes import as plain text; rich-text formatting may simplify during import but the content and timing are preserved.
Thunderbolt Pipeline
Project
Odoo CRM
project.project
1:1Thunderbolt Pipeline project records map to Odoo project.project. Project name, address, start date, and end date transfer directly. Contract value maps to the Odoo accounting module if Project plus Accounting are activated; otherwise stored as a custom Decimal field for reference. Projects without the Odoo Project module active import as crm.lead records with a project reference flag.
Thunderbolt Pipeline
Custom Field: Trade Category
Odoo CRM
res.partner.category_id
1:1Thunderbolt Pipeline's Trade Category field (Electrical, Plumbing, HVAC, General, etc.) maps to Odoo partner categories. Partner categories must be pre-created in Odoo CRM before import with exact name matches. If a category name in Thunderbolt has no matching Odoo category, the record imports as uncategorized and is flagged for review.
Thunderbolt Pipeline
Custom Field: License Number
Odoo CRM
res.partner (custom Char field)
1:1License numbers or contractor certification IDs migrate as custom Char fields on res.partner. Requires Odoo developer mode to create the field or a custom module. The field name in Odoo follows the x_studio prefix convention (e.g., x_license_number). The custom field must be created before migration begins or the data is skipped during import.
Thunderbolt Pipeline
Custom Field: Bonding Limit
Odoo CRM
res.partner (custom Decimal field)
1:1Bonding limits migrate as custom Decimal fields on res.partner (for contractor info) or on crm.lead (for bid-level bonding requirements). The placement depends on whether the bonding info is a contractor attribute or a bid-specific requirement. Odoo developer mode or a custom module is required to create the field before migration runs.
Thunderbolt Pipeline
Lead Source
Odoo CRM
utm.source + utm.medium (if Marketing active) or custom Char field
1:1Thunderbolt Pipeline lead source tracking (Website Inquiry, Referral, Trade Show, Bid Invite) has no native Odoo equivalent unless the Odoo Marketing module is activated. Without Marketing, source data migrates as a custom Char field on crm.lead for reporting reference. If Marketing is active, UTM source and medium tags are created and linked to the lead.
Thunderbolt Pipeline
Workforce Assignment
Odoo CRM
crm.lead (custom field or note)
1:1Thunderbolt Pipeline's workforce assignment feature (assigning workers or crews to bids) has no Odoo CRM equivalent. Assignments migrate as a custom Many2many field linking crm.lead to res.users, or as a text note on the crm.lead for manual entry. If the Odoo Project module is active, worker assignments can be tracked via project.task records linked to the opportunity.
| Thunderbolt Pipeline | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner (company_type)1:1 | Fully supported | |
| Contact + Company link | res.partner + Contactmany:1 | Fully supported | |
| Bid | crm.lead1:1 | Fully supported | |
| Bid Stage | crm.stage1:1 | Fully supported | |
| Bid Owner | crm.lead.user_id1:1 | Fully supported | |
| Attachment / File | ir.attachment1:1 | Fully supported | |
| Note | mail.message1:1 | Fully supported | |
| Project | project.project1:1 | Fully supported | |
| Custom Field: Trade Category | res.partner.category_id1:1 | Fully supported | |
| Custom Field: License Number | res.partner (custom Char field)1:1 | Fully supported | |
| Custom Field: Bonding Limit | res.partner (custom Decimal field)1:1 | Fully supported | |
| Lead Source | utm.source + utm.medium (if Marketing active) or custom Char field1:1 | Fully supported | |
| Workforce Assignment | crm.lead (custom field or note)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.
Thunderbolt Pipeline gotchas
No public API forces manual or custom-export migration approach
Real-time data dependency complicates cutover timing
Update notification ambiguity can mask recent data changes
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
Set up Odoo CRM schema before migration
Before any data moves, FlitStack delivers an Odoo setup plan covering: crm.stage pipeline stage creation matching Thunderbolt bid stages, partner category setup for trade types (Electrical, HVAC, Plumbing, etc.), custom field creation for license numbers, bonding limits, and insurance expiry dates, and confirmation of XML-RPC API access on Odoo Online. If the Odoo Project module is needed for project records, that module activation is included in the plan. Your Odoo administrator (or our team) creates the schema so the destination is ready before validation runs.
Resolve owners and match users by email
Thunderbolt Pipeline user accounts are matched to Odoo res.users by email address. FlitStack generates an owner-resolution report before migration: matched users are assigned to their records automatically, and unmatched owners are flagged with the option to assign them to a fallback user or invite them to Odoo first. No bid record lands in Odoo without a responsible user assigned. This step also validates that the Odoo users exist with the correct access rights to view and edit crm.lead records.
Sequence the import: partners first, leads second, activities last
Odoo's foreign-key constraints require a specific import order: company-type res.partner records before contact-type res.partner records (for parent_id links), then crm.lead records (for partner_id and user_id links), then attachments and activities. Thunderbolt Pipeline bid records with a primary contact link require the contact's res.partner record to exist first. FlitStack generates a sequenced import plan that resolves all foreign-key dependencies before any batch commits to Odoo, preventing orphaned records and validation errors.
Run a sample migration with field-level diff
A representative slice — typically 100–500 records covering contacts, companies, bids, and a sample of attachments and notes — migrates first. FlitStack generates a field-level diff comparing source values to destination values, so you can verify bid amount mapping to planned_revenue, stage mapping to crm.stage IDs, owner resolution, and custom field population before the full run commits. You approve the sample diff before FlitStack proceeds to the full migration. Any mapping adjustments identified during the sample phase are applied to the full run.
Execute full migration with delta-pickup window
The full migration runs against Odoo via XML-RPC. A delta-pickup window — typically 24–48 hours after the initial run completes — captures any Thunderbolt Pipeline bids modified or created during the cutover period. FlitStack maintains a scoped read connection to Thunderbolt Pipeline during this window. An audit log records every imported record with its source Thunderbolt ID for reconciliation. One-click rollback is available if the reconciliation check reveals unexpected gaps. After delta pickup, the Thunderbolt read connection is closed and the Odoo instance becomes the live CRM.
Platform deep dives
Thunderbolt Pipeline
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 Thunderbolt Pipeline 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
Thunderbolt Pipeline: Not publicly documented.
Data volume sensitivity
Thunderbolt Pipeline 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 Thunderbolt Pipeline to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Thunderbolt Pipeline 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 Thunderbolt Pipeline
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.