CRM migration
Field-level mapping, validation, and rollback between Altcraft and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Altcraft
Source
Odoo CRM
Destination
Compatibility
11 of 15
objects map 1:1 between Altcraft and Odoo CRM.
Complexity
BStandard
Timeline
4-8 weeks
Overview
Altcraft is a profile-centric CDP and marketing automation platform built around unified customer Profiles, behavioral event histories, and visual Scenario builders. Odoo CRM is a sales-focused CRM embedded in an open-source ERP stack, using Contacts, Leads, and Opportunities as its primary objects. The two platforms share surface-level feature names—segments, campaigns, email templates—but their underlying data models differ significantly. We migrate Profiles to Odoo Contacts and Companies, preserve behavioral event timestamps as custom fields, document Altcraft Scenario logic for rebuild in Odoo Automated Actions, and transfer message templates and campaign metadata without attempting to port Scenario code. Control Group assignments and loyalty program structures migrate as structured data tied to the Contact record.
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 Altcraft 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.
Altcraft
Profile (Customer Profile)
Odoo CRM
Contact + Company (Partner)
1:manyAltcraft Profiles are unified records combining contact identity, behavioral event history, channel subscriptions, device metadata, and all custom fields into a single object. We split this into Odoo Partner records: personal identity data (name, email, phone, address) becomes Contact (and its parent Company/Partner record). Behavioral event history, channel subscriptions, and device context migrate as custom fields on the Contact and as a structured JSON blob in a dedicated ir.attachment linked to the Contact for audit trail. Custom Profile fields map to Odoo custom fields on res.partner with appropriate type conversion (string, date, integer, selection). We preserve the original Altcraft Profile ID as an external_id field for reconciliation.
Altcraft
Company (within Profile)
Odoo CRM
Partner (Company type)
1:1Altcraft's embedded company data within Profiles maps to Odoo res.partner records of type company. The company name, domain, industry, employee count, and revenue range from Altcraft's company fields become their Odoo equivalents. If a single Contact belongs to multiple companies in Altcraft, we create a primary Company Partner and link secondary affiliations as Contact tags or as dedicated Partner relationships.
Altcraft
Segment (Static & Dynamic)
Odoo CRM
Group + Tag
lossyStatic segments in Altcraft are straightforward list transfers to Odoo res.partner groups. Dynamic segments based on real-time behavioral criteria require reimplementation in Odoo: we export the full segment definition (filter criteria, time windows, SQL joins, behavioral thresholds) as a structured description document and recommend the Odoo Automated Action equivalent using domain filters on res.partner. Static segments that reference Profile lists migrate as Odoo Groups with members assigned directly. The customer admin rebuilds dynamic segment logic post-migration using Odoo's domain filter builder.
Altcraft
Campaign
Odoo CRM
CRM Campaign
1:1Altcraft Campaign records (send history, open and click analytics, channel assignment) migrate to Odoo CRM Campaign with campaign name, description, start and end dates, and target partner sets. Performance metrics (opens, clicks, unsubscribes) transfer as structured fields. Channel assignment (Email, SMS, Push) maps to Odoo's mailing.channel configuration. Campaign Master and A/B test results from Altcraft Cloud Pro tier are preserved as campaign-level custom fields in Odoo.
Altcraft
Automation Scenario
Odoo CRM
Automated Action (documented, not migrated)
1:1Altcraft Scenarios are visual workflow builders with conditional branches, loop constructs, time delays, and API webhook calls that have no portable export format. We do not migrate Scenarios as executable code. We export a structured Scenario inventory document listing every Scenario's name, trigger event, condition tree, action sequence, and referenced Profile and Segment IDs, with a written recommendation for Odoo Automated Action equivalents using ir.actions.server and ir.cron configurations. The customer's Odoo admin or implementation partner rebuilds the logic in Odoo's Actions menu post-migration.
Altcraft
Message Template
Odoo CRM
Email Template (mail.template)
1:1Altcraft message templates export in standard formats (HTML, plain text) with merge field placeholders. A/B test variants are preserved as separate template records. We map Altcraft merge fields to Odoo's Jinja2-style {{object.field}} syntax in mail.template records, and convert channel-specific templates (SMS, Push) to Odoo Mass Mailing templates scoped to the appropriate mailing.channel. Template assets (images, logos) transfer as Odoo ir.attachment records linked to the template.
Altcraft
Product
Odoo CRM
Product Template (product.template)
1:1Altcraft product catalog records map to Odoo product.template with name, default_code (SKU), list_price, standard_price, and product type (service vs consumable vs stockable). Product images migrate as ir.attachment records linked to the product.template. Variant attributes from Altcraft (size, color) map to Odoo attribute lines on the template. If Altcraft products include e-commerce pricing rules tied to customer segments, those rules are documented for rebuild in Odoo pricelists.
Altcraft
Order (linked to Profile)
Odoo CRM
Sale Order (sale.order)
1:1Altcraft order history linked to Profiles migrates to Odoo sale.order records with order reference, date, partner (from Profile), order lines (from Altcraft order items), and sale status. Order total and tax calculations transfer from Altcraft. If the destination Odoo instance includes the Inventory or Accounting modules, we link the sale.order to the appropriate picking and invoice records during migration. Historical orders are set to sale.done state to prevent accidental workflow triggers.
Altcraft
Control Group
Odoo CRM
Partner Tag + Campaign Member Status
lossyAltcraft Control Groups are campaign holdout groups assigned to specific Profile IDs for comparative analytics. We preserve Control Group membership as a res.partner.category tag (e.g., 'Control Group: Q1 Email Test') and set the corresponding CRM Campaign Member status to 'Excluded' for those Contacts. We preserve the original Control Group assignment in a custom field on the partner record so comparative analytics can be re-established post-migration in Odoo's reporting tools.
Altcraft
Loyalty Program
Odoo CRM
Loyalty Program (loyalty.program)
1:1Altcraft loyalty tiers, points balances, and promo code pools tied to Profiles migrate to Odoo loyalty.program records and associated loyalty.card records per partner. Tier thresholds map to Odoo's loyalty level definitions. Promo code rules map to Odoo coupon and promotion rules. If the destination Odoo instance does not include the Loyalty app, we deliver loyalty data as structured CSV with clear column headers for the customer's admin to configure the Loyalty program post-migration.
Altcraft
Custom Profile Field
Odoo CRM
Custom Field on res.partner
1:1Altcraft user-defined fields on the Profile object export as structured columns in the profile CSV. We create matching custom fields on Odoo res.partner using ir.model.fields with the appropriate ttype (char, text, date, datetime, integer, float, selection, many2one). Relational fields (many2one to other objects) require pre-creation of the destination object schema before field migration. We flag any Altcraft field types that cannot be directly represented in Odoo (e.g., JSON blobs) and recommend storing these as ir.attachment binary records with a descriptive filename.
Altcraft
Form Definition + Survey
Odoo CRM
Survey (survey.survey)
1:1Altcraft Form definitions and NPS survey question structures export cleanly from the UI. We migrate form schema (question types, required flags, branching logic) to Odoo survey records using the survey module. Responses already embedded in Profile records migrate as standard Profile data to Contact custom fields. Standalone response logs transfer as survey.user_input records linked to the responding partner. Survey URLs and embed codes do not migrate and must be recreated in Odoo.
Altcraft
Communication Channel
Odoo CRM
Mailing Channel (mailing.channel)
lossyAltcraft channel configurations (Email sender IDs, SMS provider credentials, approved sender addresses, Web Push credentials, Messenger tokens) must be re-established in Odoo's Mailing Channel settings. We export the channel names, types, and metadata from Altcraft and deliver a configuration guide mapping each channel to its Odoo mailing.channel equivalent. API credentials do not transfer for security reasons and must be re-entered by the customer's admin in Odoo Settings.
Altcraft
Engagement: Email
Odoo CRM
Mail Message (mail.message)
1:1Altcraft email engagement records (send timestamp, open timestamp, click timestamp, unsubscribe action) migrate to Odoo mail.message records linked to the parent res.partner record. Email body content is stored as mail.message body HTML. Engagement metrics (opens, clicks) migrate as custom fields on mail.message for reporting. Thread-level email conversations in Altcraft map to Odoo's mail.thread model with message_ids preserved for conversation continuity.
Altcraft
Engagement: Call
Odoo CRM
CRM Lead/Phonecall Log
1:1Altcraft call engagement records (call duration, disposition, recording URL) migrate to Odoo CRM Lead log records or to crm.phonecall model if the CRM phonecalls module is installed. We preserve call duration, timestamp, and disposition as structured fields on the log entry. Recording URLs are stored as ir.attachment records linked to the partner. Call assignments migrate by resolving Altcraft owner ID to the Odoo user responsible for the contact.
| Altcraft | Odoo CRM | Compatibility | |
|---|---|---|---|
| Profile (Customer Profile) | Contact + Company (Partner)1:many | Fully supported | |
| Company (within Profile) | Partner (Company type)1:1 | Fully supported | |
| Segment (Static & Dynamic) | Group + Taglossy | Fully supported | |
| Campaign | CRM Campaign1:1 | Fully supported | |
| Automation Scenario | Automated Action (documented, not migrated)1:1 | Fully supported | |
| Message Template | Email Template (mail.template)1:1 | Fully supported | |
| Product | Product Template (product.template)1:1 | Fully supported | |
| Order (linked to Profile) | Sale Order (sale.order)1:1 | Fully supported | |
| Control Group | Partner Tag + Campaign Member Statuslossy | Fully supported | |
| Loyalty Program | Loyalty Program (loyalty.program)1:1 | Fully supported | |
| Custom Profile Field | Custom Field on res.partner1:1 | Fully supported | |
| Form Definition + Survey | Survey (survey.survey)1:1 | Fully supported | |
| Communication Channel | Mailing Channel (mailing.channel)lossy | Fully supported | |
| Engagement: Email | Mail Message (mail.message)1:1 | Fully supported | |
| Engagement: Call | CRM Lead/Phonecall Log1: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.
Altcraft gotchas
Profile-count pricing means database size drives the bill
Automation Scenarios do not export as portable logic
API developer guide returns HTTP 301, blocking programmatic discovery
Private Cloud and on-premise use separate support contracts
Control Group assignment is Profile-ID dependent
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 data audit
We audit the source Altcraft portal across tier (Cloud/Cloud Pro/Private Cloud/On-premise), total Profile count, custom field definitions, active Segment count and logic type (static vs dynamic), Campaign history volume, Automation Scenario inventory, Loyalty program structure, and Communication Channel configurations. We pair this with Odoo edition selection: Community (free) covers CRM-only migrations; Odoo.sh Enterprise is required if the customer needs Odoo Apps (Loyalty, Survey, VoIP), multi-database Odoo instances, or SLA-backed support. The discovery output is a written migration scope document and an Odoo edition recommendation.
Schema design in Odoo
We design the destination schema in Odoo. This includes creating custom fields on res.partner (profile_id__c, behavioral_event_log__c, channel_preferences__c, loyalty_tier__c, loyalty_points__c), provisioning Product templates from Altcraft product records, configuring CRM Pipeline stages to match Altcraft campaign structure, setting up mailing.channels for each communication channel type, and designing the Group/Tag taxonomy to represent Altcraft segments. Schema is deployed into an Odoo.sh staging database or Sandbox for validation before any data moves.
Staging migration and reconciliation
We run a full migration into the Odoo staging environment using production-like data volume. The customer's RevOps or admin lead reconciles record counts (Partners in, Contacts in, Campaigns in, Product templates in), spot-checks 25-50 random Contact records against the Altcraft source Profile data, and validates custom field values, loyalty balances, and segment memberships. Any mapping corrections happen in staging before production migration begins. Dynamic segment logic is documented for manual rebuild in staging validation.
Segment logic documentation and Scenario inventory
We compile a written inventory of every Altcraft Segment (static and dynamic) with its name, criteria definition, member count, and recommended Odoo Group equivalent. We also compile a Scenario inventory for every Automation Scenario listing its trigger, condition tree, action sequence, and referenced Profile and Segment IDs with a written Odoo Automated Action rebuild recommendation. These documents are delivered to the customer's admin team before production cutover and are outside the scope of automated migration.
Production migration in dependency order
We run production migration in record-dependency order: Products and Price Lists first (reference data), then Partners (Contacts and Companies), Loyalty Programs and Loyalty Cards, Campaigns with performance metrics, Form and Survey definitions, Message Templates, Engagement history (email logs, call logs), and finally Control Group assignments as partner tags. Each phase emits a row-count reconciliation report before the next phase begins. We disable Odoo automated actions and workflow triggers during import to prevent unintended record updates.
Cutover, validation, and handoff
We freeze Altcraft writes during cutover, run a final delta migration of any records modified during the migration window, then enable Odoo as the system of record. We deliver the Segment and Scenario inventory documents to the customer's admin team with a rebuild guide for Odoo Automated Actions. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild Altcraft Scenarios as Odoo Automated Actions inside the migration scope; that is a separate implementation engagement or an internal admin task.
Platform deep dives
Altcraft
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Altcraft and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Altcraft and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Altcraft 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
Altcraft: Configurable via API_MAX_REQUESTS_COUNT — exceeding returns HTTP 429. Specific numeric limits are not published in the developer guide and must be confirmed per deployment..
Data volume sensitivity
Altcraft exposes a bulk API — large-volume migrations stream efficiently.
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 Altcraft to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Altcraft 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 Altcraft
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.