CRM migration
Field-level mapping, validation, and rollback between TOTUS Marketing and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
TOTUS Marketing
Source
Odoo CRM
Destination
Compatibility
11 of 13
objects map 1:1 between TOTUS Marketing and Odoo CRM.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from TOTUS Marketing to Odoo CRM is a migration from a proprietary, undocumented data model to one of the most flexible open-source ERP-CRM platforms available. TOTUS Marketing does not publish its object schema, API surface, or data model publicly, which means every migration begins with direct API exploration and export tooling to surface the actual record types, fields, and relationships in the customer's instance. Odoo CRM accepts data through its XMLRPC API with a rate limit of approximately one request per second, requiring batch chunking for large datasets. We resolve dependencies in load order (Companies before Contacts, Contacts before Deals, Teams before pipeline assignment), flag any proprietary TOTUS objects we discover during discovery, and preserve historical timestamps on all migrated records. Workflows, automations, and any custom logic inside TOTUS do not migrate as code; we deliver a written inventory of every automation requiring Odoo Workflow or Studio-based rebuild.
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 TOTUS Marketing 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.
TOTUS Marketing
Contact
Odoo CRM
res.partner
1:1TOTUS Contact records map to Odoo res.partner. The TOTUS contact type (customer, vendor, employee) maps to Odoo's partner_type (customer, contact, invoice_address, delivery_address). Email, phone, address, and custom properties discovered during API exploration map to res.partner fields or ir.model.fields custom fields. We resolve the partner as customer=1 during import so that Odoo's CRM module recognizes the record for pipeline assignment.
TOTUS Marketing
Company / Account
Odoo CRM
res.partner (company_type = company)
1:1TOTUS Company records map to Odoo res.partner with company_type = 'company'. The TOTUS domain name becomes the Website field. Child Contact records from TOTUS are created as res.partner with parent_id referencing the Company partner. The company partner is created before any child contacts so that the parent_id constraint is satisfied at insert time.
TOTUS Marketing
Deal / Opportunity
Odoo CRM
crm.lead
1:1TOTUS Deal records map to Odoo crm.lead with type = 'opportunity'. The TOTUS deal stage maps to an Odoo crm.stage value that we create in the destination pipeline (crm.team) before migration. Deal value and currency map to expected_revenue and currency_id. If TOTUS exposes a probability percentage, we set probability on the Odoo record directly; otherwise we derive it from the stage mapping.
TOTUS Marketing
Pipeline
Odoo CRM
crm.team + crm.stage
lossyTOTUS pipeline assignments map to Odoo crm.team records (one per TOTUS pipeline) and crm.stage records within each team (one per TOTUS stage). We pre-create the team-stage hierarchy in Odoo before any crm.lead records are loaded so that stage_id references are satisfied on insert. Stage sequence and fold-to-kanban flags migrate from TOTUS stage properties.
TOTUS Marketing
Engagement: Email
Odoo CRM
mail.message + mail.activity
1:1TOTUS email engagements map to Odoo mail.message records with message_type = 'email', linked to the res.partner or crm.lead record via res_id and model. Email body, subject, and sender map to body, subject, and author_id. If TOTUS records include email engagement metrics (opens, clicks), these migrate to mail.message tracking fields or custom fields on the message record.
TOTUS Marketing
Engagement: Call
Odoo CRM
mail.activity (activity_type_id = call)
1:1TOTUS call engagements map to Odoo mail.activity with activity_type_id = 'call' (a standard Odoo activity type). Call duration, disposition, and outcome from TOTUS map to custom activity fields or the activity note field. Activity date and deadline map from TOTUS's engagement timestamp and any follow-up date.
TOTUS Marketing
Engagement: Meeting
Odoo CRM
calendar.event
1:1TOTUS meeting engagements map to Odoo calendar.event records with start_datetime, stop_datetime, and location preserved. Attendee records map to calendar.attendee entries linked to the event. If TOTUS records include meeting notes or outcomes, these migrate as mail.message records linked to the event record via res_id and model.
TOTUS Marketing
Engagement: Task
Odoo CRM
mail.activity (activity_type_id = upload_document or other)
1:1TOTUS task engagements map to Odoo mail.activity with the appropriate activity_type_id resolved during mapping design. Task title becomes activity summary, task due date becomes the activity deadline, and task status maps to Odoo's activity state (done, canceled, open). Owner resolution matches the TOTUS assigned user to an Odoo res.users record by email.
TOTUS Marketing
Engagement: Note
Odoo CRM
note.note or mail.message
1:1TOTUS notes (engagement type NOTE) migrate to Odoo note.note records linked via a many2one relationship to the parent res.partner or crm.lead. Rich text formatting from TOTUS note body migrates to Odoo's HTML note.body field. If the note includes attachments, the attachment files migrate as ir.attachment records linked to the note record.
TOTUS Marketing
Custom Field (TOTUS)
Odoo CRM
ir.model.fields (custom)
lossyAny custom property discovered on a TOTUS Contact, Company, or Deal record that does not map to a standard Odoo field is created as a custom ir.model.fields entry on the destination model (res.partner or crm.lead) before migration begins. Field type mapping: TOTUS text to char or text, TOTUS number to float or integer, TOTUS date to date, TOTUS dropdown to selection, TOTUS checkbox to boolean. Custom fields are created with store=True so they are searchable and filterable in Odoo views.
TOTUS Marketing
Owner / User
Odoo CRM
res.users
1:1TOTUS Owner records map to Odoo res.users by email lookup. Any TOTUS Owner without a matching res.users record in the destination Odoo instance is held in a reconciliation queue and flagged to the customer for user provisioning before record migration resumes. Inactive Odoo users are matched if the email matches, regardless of active status.
TOTUS Marketing
Tag / Label
Odoo CRM
crm.tag or res.partner.category
1:1TOTUS tags associated with Contact, Company, or Deal records map to Odoo crm.tag records (for CRM records) or res.partner.category records (for partner-level tags). Tag assignments migrate as crm.tag.rel or res.partner.category rel records linking the tag to the parent record. Duplicate tag names are deduplicated at migration time.
TOTUS Marketing
Document / Attachment
Odoo CRM
ir.attachment
1:1Documents and files attached to TOTUS Contact, Company, or Deal records migrate as ir.attachment records in Odoo, linked via res_model and res_id to the corresponding res.partner or crm.lead record. File name, mimetype, and file content are preserved. If the TOTUS instance stores attachments in an external storage service, we download and re-upload to Odoo's configured attachment store (database or file system).
| TOTUS Marketing | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Company / Account | res.partner (company_type = company)1:1 | Fully supported | |
| Deal / Opportunity | crm.lead1:1 | Fully supported | |
| Pipeline | crm.team + crm.stagelossy | Fully supported | |
| Engagement: Email | mail.message + mail.activity1:1 | Fully supported | |
| Engagement: Call | mail.activity (activity_type_id = call)1:1 | Fully supported | |
| Engagement: Meeting | calendar.event1:1 | Fully supported | |
| Engagement: Task | mail.activity (activity_type_id = upload_document or other)1:1 | Fully supported | |
| Engagement: Note | note.note or mail.message1:1 | Fully supported | |
| Custom Field (TOTUS) | ir.model.fields (custom)lossy | Fully supported | |
| Owner / User | res.users1:1 | Fully supported | |
| Tag / Label | crm.tag or res.partner.category1:1 | Fully supported | |
| Document / Attachment | ir.attachment1: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.
TOTUS Marketing gotchas
Catalog website points to wrong product
Distributed marketing template hierarchy is the complex piece
API access exists but is not deeply documented publicly
Limited public review base for benchmarking
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
TOTUS API exploration and schema discovery
We begin every TOTUS Marketing migration with direct API exploration of the customer's instance. We authenticate against the TOTUS API using the customer's credentials, enumerate all accessible object types, retrieve field definitions for each object, and capture relationship metadata (foreign keys, lookup references). Any proprietary or undocumented objects are flagged in a discovery report delivered to the customer before migration design begins. This phase typically runs one to two weeks and produces the source schema map that drives all subsequent mapping decisions.
Odoo schema design and pipeline configuration
We design the destination Odoo CRM schema based on the TOTUS discovery output. This includes creating crm.team records (one per TOTUS pipeline), crm.stage records within each team (one per TOTUS stage), custom ir.model.fields on res.partner and crm.lead for any TOTUS custom properties, and any custom Odoo models if the TOTUS instance contains object types not representable in standard CRM models. Odoo Studio is used for field creation and view layout. The schema is deployed to the destination Odoo instance (Staging or Sandbox) and validated before data migration begins.
Data quality audit and cleansing
We export all TOTUS records and run a data quality audit covering duplicate detection (by email, company name), blank mandatory field detection (name, email, phone), address format standardization, and date validity checks. We produce a data quality report listing all records that require manual resolution. The customer addresses critical issues (duplicate merges, invalid emails) before the migration load begins. We do not silently drop records with data quality issues; we flag them and halt the relevant object import until the customer provides resolution instructions.
Owner and user reconciliation
We extract every distinct Owner referenced on TOTUS Contact, Company, Deal, and Engagement records and match by email against the destination Odoo instance's res.users table. Owners without a matching Odoo User go to a reconciliation queue, and the customer provisions the missing users (active or inactive as appropriate) before we resume. Migration cannot proceed past the data load phase because Owner references are required on most Odoo CRM records.
Staged data migration in dependency order
We run migration in Odoo dependency order: res.partner company records first (from TOTUS Company), res.partner contact records second (from TOTUS Contact with parent_id resolved to the company partner), crm.tag records third, crm.team and crm.stage records fourth, crm.lead opportunity records fifth (with team_id and stage_id resolved), mail.activity and calendar.event records sixth (with res_users owner resolved), mail.message records seventh, ir.attachment records last. Each phase emits a row-count reconciliation report before the next phase begins. We use XMLRPC Model.create() batch calls to stay within the 1 req/s Odoo API rate limit while maximizing throughput per call.
Cutover, final validation, and automation handoff
We freeze writes to TOTUS during cutover, run a delta migration of any records created or modified during the migration window, then enable Odoo CRM as the system of record. We deliver the TOTUS automation inventory document describing every discovered workflow, rule, and automation with its recommended Odoo Studio equivalent. We support a one-week hypercare window for reconciliation issues raised by the customer's team. Workflow and automation rebuilds are a separate engagement handled by the customer's Odoo admin or a certified Odoo partner.
Platform deep dives
TOTUS Marketing
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 1 of 8 objects need a manual workaround.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across TOTUS Marketing and Odoo CRM.
Object compatibility
1 of 8 objects need a manual workaround.
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
TOTUS Marketing: Not publicly documented — typical SaaS limits assumed and confirmed during scoping..
Data volume sensitivity
TOTUS Marketing 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 TOTUS Marketing to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your TOTUS Marketing 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 TOTUS Marketing
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.