CRM migration
Field-level mapping, validation, and rollback between Ziggu and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Ziggu
Source
Odoo CRM
Destination
Compatibility
10 of 12
objects map 1:1 between Ziggu and Odoo CRM.
Complexity
BStandard
Timeline
3–5 days
Overview
Ziggu and Odoo CRM solve different problems: Ziggu is a project-centric client portal built for property developers, where the primary object is the Project and the client relationship is mediated through a shared portal. Odoo CRM is an opportunity-centric CRM where crm.lead and res.partner form the core object graph, with stages and teams driving the sales process. When migrating from Ziggu to Odoo CRM, the fundamental challenge is converting Ziggu's project-tree structure into Odoo's lead-and-partner model — projects become either crm.lead opportunities (for the sales pipeline) or project.project records (for ongoing delivery), while Ziggu clients and contacts map to res.partner records with the original portal association preserved as a custom field. We migrate the full contact and company dataset, all project-linked units and tasks, document attachments re-uploaded to Odoo ir.attachment storage, and conversation history stored as mail.message records linked to the partner. Ziggu workflows (approval chains, selection stages, milestone triggers) have no Odoo equivalent and must be rebuilt using Odoo's Studio automation or the OCA/connector ecosystem — we export every Ziggu workflow definition as a JSON spec your admin can use as a rebuild reference. Migration runs via Odoo's XML-RPC API with batched writes respecting Odoo's 1-request-per-second rate limit on standard plans.
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 Ziggu 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.
Ziggu
Project
Odoo CRM
crm.lead (or project.project)
1:manyZiggu projects map to two Odoo objects depending on use case: active development projects with milestone tracking become project.project records with a custom Development_Phase__c stage field, while projects in the sales funnel (reservations, pre-seles) map to crm.lead opportunities so they flow through Odoo's pipeline stages. FlitStack AI applies a configurable rule — typically: if Ziggu project stage is 'Sales' or 'Reservation', route to crm.lead; if stage is 'Under Construction' or 'Handover', route to project.project — before migration runs.
Ziggu
Client / Contact
Odoo CRM
res.partner
1:1Ziggu client records (name, email, phone, company, address) map directly to Odoo res.partner. Ziggu's portal-access flag becomes a custom field x_portal_access__c boolean. Ziggu's client rating or NPS score migrates as x_client_nps_score__c on the partner record. The res.partner record type (contact vs. company) is inferred from whether Ziggu stores a company name — if company name is present, the partner is created as type 'company'; otherwise as type 'contact' with a blank company partner link.
Ziggu
Unit
Odoo CRM
product.template + project.task
many:1Ziggu units (apartment, lot, floor) are a hybrid: they carry a product identity (unit number, floor, area, price) and a project-task identity (selection milestones, approval status). We map the product identity to product.template with a x_unit_reference__c field storing the Ziggu unit ID, and we map the task identity to project.task records under the corresponding project.project. The Odoo product.product variant model handles unit-level pricing if Ziggu stores unit-specific prices.
Ziggu
Task
Odoo CRM
project.task
1:1Ziggu tasks linked to a project map directly to Odoo project.task under the corresponding project.project record. Task status (Not Started, In Progress, Blocked, Done) maps to Odoo's stage_id. Task priority maps to Odoo's priority field (0–3). The Ziggu task description, which may contain conversation history, is stored in project.task description as plain text. Owner resolution runs against Ziggu owner email matching Odoo res.users email.
Ziggu
Document / File
Odoo CRM
ir.attachment
1:1All Ziggu file attachments (floor plans, selection catalogs, contracts, invoices) are downloaded from Ziggu's storage and re-uploaded to Odoo as ir.attachment records. Each ir.attachment is linked to the correct Odoo model and res_id — project documents link to project.project, unit documents link to product.template, client documents link to res.partner. Odoo's default file size limit is 25MB per attachment; files exceeding this are flagged for chunked upload or alternative storage.
Ziggu
Conversation / Message
Odoo CRM
mail.message
1:1Ziggu conversation threads are stored as mail.message records linked to the res.partner (client) record. Each message stores the original sender, timestamp, body text, and an x_ziggu_thread_id__c custom field for traceability. Attachment references within conversation messages are updated to point to the re-hosted ir.attachment records. Mail aliases (if configured) are mapped to Odoo's incoming mail server configuration.
Ziggu
Selection / Approval
Odoo CRM
project.task.stage + custom field
1:1Ziggu's approval chain (client selections — flooring type, fixture brand, color scheme — with stage gates and approver sign-offs) maps to a combination of project.task stages and a x_selection_status__c custom field on the task. The approver identity (which Ziggu records as a contact) is stored as a many2one to res.partner on the Odoo task. Approval timestamps are preserved in x_approval_timestamp__c. Odoo does not have a native approval workflow engine in its free CRM — this must be rebuilt in Odoo Studio or via the approval module on Odoo Apps.
Ziggu
Custom Property (Project-level)
Odoo CRM
ir.model.data (custom fields on project.project)
1:1Ziggu project-level custom properties (development type, zoning classification, target handover date, etc.) are migrated as Odoo custom fields on the project.project model. Odoo Community requires manual field creation via ir.model.fields; Odoo Enterprise supports Studio. We create fields with the x_ prefix, matching Ziggu's data type (char, selection, date, float) and preserving the pick-list values as Odoo selection options. Each custom field creation is logged in the migration plan for admin verification.
Ziggu
Custom Property (Client-level)
Odoo CRM
ir.model.data (custom fields on res.partner)
1:1Ziggu client-level custom properties (client type, preferred contact method, referral source, investment profile) map to Odoo custom fields on res.partner. We create fields matching the Ziggu property type and selection options. Partner tags (Ziggu's grouping mechanism) map to Odoo res.partner.category records — existing tags are matched by name; new ones are created. Tag assignment is applied via res.partner.category_rel.
Ziggu
Workflow / Automation
Odoo CRM
No equivalent (must rebuild)
1:1Ziggu automations — stage-change triggers, email notifications on approval completion, SLA timers on task escalation, and client-portal access provisioning rules — have no native Odoo CRM equivalent. We export the full workflow definitions (trigger conditions, actions, recipients) as a structured JSON spec that Odoo admins can use to rebuild in Odoo Studio (freeform automations), Odoo's base_action_rule module, or the OCA/server-tools module. This export is delivered as part of the migration plan, not as a runnable migration artifact.
Ziggu
Report / Dashboard
Odoo CRM
No equivalent (must rebuild)
1:1Ziggu reports (project status reports, client NPS over time, unit selection completion rates) do not migrate. Odoo's reporting layer uses a different data model (crm.lead instead of project records). We migrate the underlying data so reports can be rebuilt in Odoo — project.task records are accessible via Odoo's project reporting views — but the report layouts and scheduled delivery configurations require manual rebuild in Odoo Studio or via custom SQL views connected to Odoo's spreadsheet reporting module.
Ziggu
Invoice / Payment Record
Odoo CRM
account.move
1:1If Ziggu's Financials add-on is in use, invoice and payment records migrate to Odoo account.move (invoices) and account.payment records. Ziggu invoice line items (unit, description, amount) map to Odoo invoice lines with the product.template reference preserved in the account.move.line. Payment records link to the invoice via reconcile fields. Odoo's chart of accounts structure is applied — accounts are created or mapped per Odoo's default chart-of-accounts template if no existing Odoo accounting setup exists.
| Ziggu | Odoo CRM | Compatibility | |
|---|---|---|---|
| Project | crm.lead (or project.project)1:many | Fully supported | |
| Client / Contact | res.partner1:1 | Fully supported | |
| Unit | product.template + project.taskmany:1 | Fully supported | |
| Task | project.task1:1 | Fully supported | |
| Document / File | ir.attachment1:1 | Fully supported | |
| Conversation / Message | mail.message1:1 | Fully supported | |
| Selection / Approval | project.task.stage + custom field1:1 | Fully supported | |
| Custom Property (Project-level) | ir.model.data (custom fields on project.project)1:1 | Fully supported | |
| Custom Property (Client-level) | ir.model.data (custom fields on res.partner)1:1 | Fully supported | |
| Workflow / Automation | No equivalent (must rebuild)1:1 | Fully supported | |
| Report / Dashboard | No equivalent (must rebuild)1:1 | Fully supported | |
| Invoice / Payment Record | account.move1: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.
Ziggu gotchas
Deactivated projects lock tasks and files but keep conversations open
Per-active-project pricing creates a minimum portfolio cost
Add-ons scale per active unit, not per project
No public API means migration runs through manual export workflows
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
Audit Ziggu data and produce the schema plan
FlitStack AI connects to Ziggu's API and exports the full object inventory: all projects with stage and owner, all clients with custom properties and NPS scores, all units with selection statuses, all tasks with assignees and due dates, all conversation threads, all attachments with file sizes, and all financial records (if the Financials add-on is active). We produce a schema plan that specifies which Ziggu objects map to which Odoo models, which custom fields need creation in Odoo Community (or Studio setup in Enterprise), what the routing rule is for project-to-lead splitting, and which Ziggu records fall into each Odoo target. Your admin reviews and approves the schema plan before any data moves.
Create Odoo custom fields and resolve users
Based on the approved schema plan, your Odoo admin creates the custom fields on project.project, res.partner, product.template, and project.task. In Odoo Community, this requires enabling developer mode and adding fields via Technical Settings. We provide the exact field name, type, and selection options for each field. Simultaneously, we resolve Ziggu owner and assignee email addresses against Odoo res.users records — unmatched owners are flagged with their Ziggu email and the suggested Odoo user to invite, so your team can close the gap before migration runs.
Run sample migration with field-level diff
A representative slice of Ziggu records — typically 50–200 records covering a few projects, their clients, units, tasks, and a sample of conversation threads and documents — migrates to Odoo first. We generate a field-level diff comparing each source field value against the destination field value, with field names named for both Ziggu and Odoo so your admin can verify the mapping is correct. Attachment files are re-hosted in Odoo's filestore and the attachment URLs are validated. Your team signs off on the sample diff before the full migration runs.
Execute full migration with document re-hosting and conversation import
The full Ziggu dataset migrates to Odoo in dependency order: res.partner records first (since project.project and project.task link to them), then project.project and product.template records, then project.task records linked to the correct project, then mail.message conversation threads linked to partners, then ir.attachment document records linked to their respective Odoo models. Document files are downloaded from Ziggu's storage and uploaded to Odoo's ir_attachment filestore. Write operations use Odoo's batch_write RPC with rate-limit throttling. The Ziggu workflow definition JSON is exported and delivered alongside the migrated data.
Delta-pickup and cutover validation
After the full migration run completes, FlitStack AI monitors Ziggu for any records created or modified during the migration window. A delta-pickup run (typically 24–48 hours) captures in-flight changes so Odoo reflects Ziggu's final state at go-live. We validate record counts per object, spot-check field values against source, and verify attachment file integrity. An audit log records every migration operation. If reconciliation fails — record counts don't match, a critical field is missing — one-click rollback reverts the Odoo environment to its pre-migration state so your team can investigate and re-run.
Platform deep dives
Ziggu
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Ziggu and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Ziggu and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Ziggu 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
Ziggu: Not publicly published — Ziggu states limits are tuned to integration use cases and confirmed during onboarding.
Data volume sensitivity
Ziggu 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 Ziggu to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Ziggu 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 Ziggu
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.