CRM migration
Field-level mapping, validation, and rollback between Verenia and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Verenia
Source
Odoo CRM
Destination
Compatibility
9 of 12
objects map 1:1 between Verenia and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Verenia to Odoo CRM is a CPQ-to-CRM migration constrained by the fact that Verenia CPQ is no longer a live platform. All migration work is based on whatever export artifacts the customer retained before the 2025 shutdown. Verenia stored Quotes, Orders, Product Configurations, and guided-selling rules that encode bundle structures, compatibility constraints, and pricing tiers. Odoo CRM does not have a native CPQ module as part of its core Sales app; CPQ functionality is available as a separate Odoo app (Odoo CPQ) or requires third-party add-ons. We extract Verenia's Quote and Order records as structured data, map Contact and Company records to Odoo res.partner (used in both roles), decompose Product Configurations into Odoo Product Variants, and deliver a written inventory of every guided-selling rule, pricing tier, and compatibility constraint that requires manual rebuild in Odoo. We do not migrate Verenia Workflows, Automation rules, or NetSuite integration settings because Verenia is shut down and no API access exists to retrieve them dynamically.
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 Verenia 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.
Verenia
Contact
Odoo CRM
res.partner (as contact)
1:1Verenia Contact records (name, email, phone, company association) map to Odoo res.partner with is_company=False. We use email as the primary dedupe key during import. The verenia_owner_id field maps to Odoo create_uid and write_uid, with a custom field verenia_owner_ref__id preserved for cross-reference. Custom contact properties from Verenia migrate as custom res.partner fields created during schema setup.
Verenia
Company/Account
Odoo CRM
res.partner (as company)
1:1Verenia Company records map to Odoo res.partner with is_company=True. A corresponding contact res.partner record is created for the primary contact associated with each company, with parent_id pointing to the company partner. Company-to-contact relationships are preserved through the parent_id hierarchy in Odoo. Industry and address fields map to standard Odoo res.partner fields.
Verenia
Quote
Odoo CRM
crm.lead (quotation stage)
1:1Verenia Quotes map to Odoo crm.lead records with type='opportunity' and stage_id set to the proposal/quotation stage. Quote line items (product, quantity, unit price, discount) migrate to crm.lead.line_ids if using the CRM native line model, or to a custom quotation_lines model we create in Odoo. Quote status (draft, sent, accepted, lost) maps to crm.lead stage and probability. The original Verenia Quote number is stored in a custom field verenia_quote_ref__c for audit and cross-reference.
Verenia
Order
Odoo CRM
sale.order
1:1Verenia Orders map to Odoo sale.order records. Order status (pending, confirmed, fulfilled, cancelled) maps to sale.order state. The customer partner is resolved via the res.partner email dedupe key computed during the Contact/Company migration phase. Order line items map to sale.order.line records with product_id, product_uom_qty, price_unit, and discount preserved.
Verenia
Product Configuration
Odoo CRM
product.product (variants) + ir_attachment (rule documentation)
1:manyVerenia Product Configurations encode guided-selling rules, bundle structures, and compatibility constraints that do not have a 1:1 mapping in Odoo. We decompose each configuration into its constituent product variants (one Odoo product.product record per variant combination) and capture the rule logic as structured metadata stored in an ir_attachment linked to a custom verenia_config_rule__c model. The customer receives a configuration rule inventory document enumerating each rule, its trigger conditions, its constraints, and the recommended Odoo CPQ module or manual rebuild approach. This is a documentation-and-rebuild handoff, not an automated rule migration.
Verenia
Product
Odoo CRM
product.product
1:1Verenia Product catalog items map to Odoo product.product records. Product name, SKU (mapped to default_code), list_price, standard_price, and product type (service vs. stockable) migrate directly. Bundle products from Verenia map to Odoo product.product with a type=kits configuration using Odoo's bom_line structure if the customer licenses the Manufacturing app, or as a product template with a descriptive bundle_components field if Manufacturing is not in scope.
Verenia
Attachment (Quote PDF, Order Confirmation, Configuration Screenshot)
Odoo CRM
ir_attachment
1:1Verenia export archives containing Quote PDFs, Order confirmation documents, and configuration screenshots are extracted, normalized (file naming conflicts resolved by prefixing with verenia_quote_id or verenia_order_id), and loaded into Odoo ir_attachment linked to the corresponding crm.lead or sale.order record via res_model and res_id. File types (PDF, PNG, JPEG) are preserved. Attachments without a resolvable parent record are loaded to a general verenia_attachments container for manual classification.
Verenia
User
Odoo CRM
res.users
1:1Verenia User records are mapped to Odoo res.users by email match. Owner assignment on Quotes, Orders, and Contacts is remapped to the corresponding Odoo user. Any Verenia user without a matching Odoo user (because the customer has not yet provisioned all Odoo licenses) is logged to a reconciliation queue, and migration of dependent records is held until the customer provisions the missing users. Inactive Verenia users map to Odoo res.users with active=False.
Verenia
Quote Line Item
Odoo CRM
sale.order.line
1:1Each line item on a Verenia Quote maps to a corresponding sale.order.line record on the linked sale.order. Product reference resolves via SKU (default_code) lookup in the product.product table. Quantity, unit price, discount percentage, and tax are preserved. Bundle line items from Verenia map to individual sale.order.line records with a custom bundle_parent_line_id linking them to the parent bundle line.
Verenia
Order Line Item
Odoo CRM
sale.order.line
1:1Order line items from Verenia migrate to Odoo sale.order.line records in the same manner as Quote line items, using SKU-based product resolution and preserving pricing, quantity, and tax data. Line item sequence (display order on the original Verenia order) is preserved via the sequence field on sale.order.line.
Verenia
Pricing Tier
Odoo CRM
product.pricelist.item
lossyVerenia pricing tiers (volume-based discounts, customer-specific pricing) are extracted as a structured pricing rule inventory and mapped to Odoo product.pricelist records with price computation rules (min_quantity, fixed_price, or percentage discount). We create one pricelist per Verenia pricing tier and assign it to the relevant customer res.partner records. The customer must validate pricing tier applicability in Odoo because Verenia's guided-pricing logic (conditional discounts based on product combinations) may require manual configuration of Odoo pricelist rules or a CPQ add-on.
Verenia
Bundle Structure
Odoo CRM
product.template (kits) + mrp.bom
lossyVerenia bundle structures (configurable products with required or optional sub-components) are mapped to Odoo product.product variants linked via product.template attributes. If the customer licenses Odoo Manufacturing (mrp module), we use mrp.bom records to model the bill of materials for each bundle. If Manufacturing is not in scope, bundle structures are preserved as product.template attribute configurations with a custom bundle_structure__c JSON field documenting the component hierarchy. This is a schema mapping that enables manual guided-selling rebuild in Odoo.
| Verenia | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner (as contact)1:1 | Fully supported | |
| Company/Account | res.partner (as company)1:1 | Fully supported | |
| Quote | crm.lead (quotation stage)1:1 | Fully supported | |
| Order | sale.order1:1 | Fully supported | |
| Product Configuration | product.product (variants) + ir_attachment (rule documentation)1:many | Fully supported | |
| Product | product.product1:1 | Fully supported | |
| Attachment (Quote PDF, Order Confirmation, Configuration Screenshot) | ir_attachment1:1 | Fully supported | |
| User | res.users1:1 | Fully supported | |
| Quote Line Item | sale.order.line1:1 | Fully supported | |
| Order Line Item | sale.order.line1:1 | Fully supported | |
| Pricing Tier | product.pricelist.itemlossy | Fully supported | |
| Bundle Structure | product.template (kits) + mrp.bomlossy | 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.
Verenia gotchas
Verenia CPQ is officially shut down as of 2025
No active API endpoints for live migration
Product configurations do not map 1:1 to other CPQ systems
Quote and order numbering sequences are not preserved by default
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
Export artifact inventory and discovery
We begin by auditing every available export artifact the customer retained from Verenia: CSV exports of Contacts, Companies, Quotes, Orders, and Products; integration log files from the NetSuite sync; archived attachment folders; and any browser-cached reports. We confirm which objects have recoverable data and which records require re-entry. If the customer did not retain exports before the 2025 shutdown, we work with them to identify alternative recovery sources (email attachments with Quote PDFs, ERP integration logs, backup tapes). We deliver a written artifact inventory documenting what exists, record counts per object, and any known gaps before scoping begins.
Odoo environment provisioning and schema design
We provision the target Odoo environment (Odoo Online database, Odoo.sh, or on-premise Odoo Enterprise/Community) and design the schema to receive Verenia data. This includes creating custom fields on res.partner for Verenia cross-reference IDs, creating product.pricelist records for each Verenia pricing tier, and configuring the crm.lead stage pipeline to include a quotation/proposal stage corresponding to Verenia Quote status. If Odoo CPQ is in scope, we install and configure the module before migrating Product Configuration data. Schema is deployed into a development or staging Odoo database first for validation against a sample record set.
Contact and Company migration with partner hierarchy
We migrate Verenia Companies first as res.partner records with is_company=True. We then migrate Verenia Contacts as res.partner records with is_company=False, resolving the parent_id reference to the corresponding company partner. Email serves as the dedupe key across both objects. Owner assignment is held pending User provisioning. Custom contact and company properties from Verenia migrate as custom fields on res.partner. A partner reconciliation report is generated showing match rates, duplicates, and orphaned records for the customer's review before proceeding to Quote and Order migration.
Quote and Order migration with document reference preservation
Verenia Quotes migrate as crm.lead records in the proposal stage. Order records migrate as sale.order records linked to the customer partner resolved in step 3. Quote line items and Order line items migrate as crm.lead.line or sale.order.line records with product reference resolved via SKU lookup. The original Verenia document number is stored in custom fields for cross-reference. Attachment files (Quote PDFs, Order confirmations) are extracted from archives, normalized by file naming, and linked to the corresponding Odoo record via ir_attachment.
Product and Configuration decomposition
Verenia Products migrate to product.product records with pricing and SKU data. Product Configurations (bundles, guided-selling rules, compatibility constraints) are decomposed into Odoo product variants and documented as configuration rule records. Bundle structures map to Odoo product.template with attribute configurations or to mrp.bom if the Manufacturing app is licensed. Each guided-selling rule is captured in a structured rule inventory document that the customer's Odoo administrator uses to rebuild the logic in Odoo CPQ or manually. We do not migrate rules as executable code because Odoo does not have a native equivalent to Verenia's guided-selling engine in its core CRM app.
User provisioning and owner remapping
We extract every distinct Verenia user referenced as an owner on Quotes, Orders, or Contacts and match by email against the destination Odoo database's res.users table. Users without a matching Odoo account go to a reconciliation queue. The customer provisions any missing Odoo users before migration of dependent records resumes. Owner assignment on crm.lead and sale.order records is updated to point to the corresponding Odoo user ID. Inactive Verenia users map to Odoo users with active=False to preserve the historical assignment record.
Cutover, validation, and configuration rebuild handoff
We freeze write access to any remaining Verenia export artifacts, run a final delta scan for any records modified during the migration window, and deliver the complete migrated dataset to Odoo. We run a reconciliation report comparing Verenia record counts (from the artifact inventory) against Odoo record counts for each object. The customer reviews a random sample of migrated records against the source artifacts and signs off before declaring the migration complete. We deliver the guided-selling rule inventory document and the NetSuite integration settings reconstruction guide (for customers migrating to Odoo ERP) to the customer's Odoo administrator. We do not rebuild Verenia Workflows or NetSuite integration settings as these were platform-level settings with no exported artifacts.
Platform deep dives
Verenia
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Verenia and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Verenia and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Verenia and Odoo CRM.
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
Verenia: Not applicable.
Data volume sensitivity
Verenia 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 Verenia to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Verenia 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 Verenia
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.