CRM migration
Field-level mapping, validation, and rollback between erxes and Zoho CRM. We move data and schema; workflows are rebuilt natively in Zoho CRM.
erxes
Source
Zoho CRM
Destination
Compatibility
6 of 10
objects map 1:1 between erxes and Zoho CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from erxes to Zoho CRM is a structural migration that trades the openness and data ownership of a self-hosted platform for the SaaS convenience, third-party integrations, and established support ecosystem of Zoho CRM. erxes stores data across plugin-specific GraphQL schemas with no native bulk export, which makes the extraction phase the most technically involved part of this migration. We paginate through erxes GraphQL queries programmatically, validate field types against the schema-less custom field definitions, and resolve all owner and company lookups before writing to Zoho. The destination object model in Zoho CRM (Leads, Contacts, Accounts, Deals, Tasks) is more familiar to new users but requires rethinking erxes-specific structures like Cycles and Teams into Zoho's Roles and Profiles. Automation workflows, channel credentials, and plugin-specific configurations do not migrate; we deliver a written inventory of these for the customer's admin to rebuild in Zoho.
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 erxes object lands in Zoho CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
erxes
Contact
Zoho CRM
Lead or Contact (split by lifecycle stage)
1:manyerxes Contacts map to either Zoho CRM Lead or Contact depending on the contact's engagement status. If erxes stores a lifecycle or status property, contacts marked as prospects without a company association map to Zoho Lead. Active customers and company-linked contacts map to Zoho Contact with the parent Account resolved via the erxes companyId reference. We preserve the original erxes contact ID in a custom field erxes_contact_id__c for audit and cross-reference.
erxes
Company
Zoho CRM
Account
1:1erxes Company records map directly to Zoho CRM Account. The companyName, website, and industry fields map to their Zoho equivalents. We resolve the Account record first in migration order so that Contact imports can satisfy the parent AccountId lookup. If multiple erxes Companies share a domain, we flag potential duplicates for the customer's admin to resolve before Account import completes.
erxes
Deal
Zoho CRM
Deal
1:1erxes Deals map to Zoho CRM Deals with the amount, stage, and expected close date preserved. The erxes pipelineId and stageId reference translate to the Zoho pipeline and stage values we configure during schema setup. Lost and won deal reasons from erxes custom fields map to Zoho's Loss Reason picklist. If erxes stores multiple pipelines, we create corresponding Zoho pipelines with stage probability mappings.
erxes
Pipeline + Stage
Zoho CRM
Pipeline + Stage
lossyerxes Pipelines and Pipeline Stages map to Zoho CRM Deal Pipelines and Stage values. Stage order and probability percentages migrate as configured values in Zoho's pipeline settings. Stage IDs are translated to destination stage IDs during import. If erxes uses non-standard stage names, we map them to Zoho-standard names or create custom stage values per the customer's naming convention.
erxes
Task
Zoho CRM
Tasks
1:1erxes Tasks map to Zoho CRM Tasks with title, description, due date, status, and priority preserved. Owner assignment migrates by resolving the erxes userId to the Zoho User record via email match. erxes Cycles (task grouping) do not have a direct Zoho equivalent; we document Cycle names and task membership in a separate inventory so the customer's admin can rebuild groupings in Zoho Projects or as Zoho CRM custom fields if needed.
erxes
Conversation
Zoho CRM
Notes (on Contact/Account)
lossyerxes multi-channel Conversations (email, SMS, chat, WhatsApp) do not have a native Zoho CRM equivalent because Zoho handles multi-channel messaging through separate products (Zoho Desk, Zoho SalesIQ). We migrate conversation summaries and message content as Notes attached to the relevant Contact or Account record, preserving timestamps and channel metadata in the Note body. The customer's admin evaluates whether Zoho Desk integration is needed for ongoing multi-channel support.
erxes
Custom Field
Zoho CRM
Custom Field (on module layout)
lossyerxes custom fields on Contacts, Companies, Deals, and Tasks migrate to Zoho CRM custom fields assigned to the corresponding module layouts. We validate field types during migration: erxes text fields become Zoho single-line text, date fields become Zoho date pickers, and multi-select fields become Zoho multi-select picklists. Zoho enforces field type at write time, so we reject any erxes value that does not conform to the mapped Zoho field type and surface it in a validation report.
erxes
User
Zoho CRM
User
1:1erxes Users map to Zoho CRM Users by email address. We extract all distinct userId references across records, match against Zoho User email addresses in the destination org, and flag any unmatched owners for manual provisioning. Role and permission configurations do not migrate because erxes plugin-specific roles differ structurally from Zoho Profiles and Roles; we deliver a role mapping inventory for the admin to configure in Zoho setup.
erxes
Channel
Zoho CRM
Not migrated (flagged for rebuild)
1:1erxes Channels define the communication mediums (email, SMS, chat, WhatsApp) connected to the platform. Channel credentials (API keys, webhook URLs, third-party provider tokens) do not migrate. We deliver a written inventory of each active erxes Channel with its type, connected credentials, and the recommended Zoho configuration path (Zoho Desk for support channels, Zoho SalesIQ for chat, native Zoho CRM email for email). The customer's admin rebuilds the integrations in Zoho post-migration.
erxes
Automation Workflow
Zoho CRM
Not migrated (inventory delivered)
1:1erxes Automation Workflows define trigger-action sequences across the platform. We extract the automation structure including triggers, conditions, and actions and document them in a written inventory for the customer's admin to rebuild in Zoho. erxes automations reference plugin-specific object IDs that do not map cleanly to Zoho; the admin rebuilds them in Zoho using Workflow Rules, Blueprints, or Zoho Flow as appropriate. Channel credential references in automations require separate reconfiguration.
| erxes | Zoho CRM | Compatibility | |
|---|---|---|---|
| Contact | Lead or Contact (split by lifecycle stage)1:many | Fully supported | |
| Company | Account1:1 | Fully supported | |
| Deal | Deal1:1 | Fully supported | |
| Pipeline + Stage | Pipeline + Stagelossy | Fully supported | |
| Task | Tasks1:1 | Fully supported | |
| Conversation | Notes (on Contact/Account)lossy | Fully supported | |
| Custom Field | Custom Field (on module layout)lossy | Fully supported | |
| User | User1:1 | Fully supported | |
| Channel | Not migrated (flagged for rebuild)1:1 | Fully supported | |
| Automation Workflow | Not migrated (inventory delivered)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.
erxes gotchas
No native bulk export in Community edition
Plugin activation state affects data visibility
Custom fields have no type enforcement during import
Conversation message ordering depends on server timestamps
Zoho CRM gotchas
API access requires Professional tier or above
Subform fields do not export cleanly via CSV
API credit consumption is non-linear
Export download links expire in 7 days
Owner (User) assignments require pre-mapped user IDs
Pair-specific challenges
Migration approach
Discovery and plugin audit
We audit the source erxes instance across all active plugins, GraphQL schema availability, custom field definitions (including field types and any type mismatches in existing data), pipeline and stage configurations, and user count. We confirm that all relevant plugins are active so that associated data objects are API-accessible. We also audit data volume (record counts per object) and engagement history size (conversation and task counts) to size the extraction architecture. The discovery output is a written migration scope document listing all objects to migrate, the extraction method per object, and any pre-migration cleanup flags.
Zoho edition selection and schema design
We recommend a Zoho CRM edition based on the migration scope. Standard ($14/user/mo annual) covers basic pipeline, contact, and account migration. Professional ($23/user/mo) is required if Blueprint process management or advanced automation is needed. Enterprise ($40/user/mo) is needed for custom modules, multi-pipeline configurations, or large team territories. We design the destination schema including custom fields on each module, pipeline and stage configuration, and layout assignments per record type. If the migration exceeds Zoho's 300-field limit on any module, we resolve the excess during this phase.
GraphQL extraction engineering
We build the GraphQL extraction scripts for each erxes object, implementing pagination over the erxes query results with checkpointing for resumable runs. For objects with large record volumes (over 10,000), we implement chunking and rate-limit handling with exponential backoff. We extract all objects in parallel where possible and in dependency order (Companies before Contacts, Accounts before Deals) so that parent-record IDs are available for lookup resolution during transform. The extraction phase produces structured CSV or JSON files per object with original erxes IDs preserved for reconciliation.
Data validation and field mapping
We validate the extracted erxes data against the target Zoho schema. This includes field type validation for custom fields (rejecting any value that does not conform to the Zoho field type), duplicate detection for Accounts and Contacts (using email and company name as dedupe keys), and owner reconciliation (matching erxes userId to Zoho User by email). Any erxes contacts without company associations that are candidates for Zoho Lead conversion are flagged in a split report for the customer to review before import. We also flag records with missing required fields and ask the customer to supply defaults or accept null values.
Sandbox migration and reconciliation
We run a full migration into a Zoho CRM Sandbox (or a trial org if Sandbox is not available) using production-equivalent data volume. The customer's admin reviews record counts, spot-checks 20-30 random records against the erxes source, and validates field mappings. Any mapping corrections (field name errors, incorrect picklist values, missing lookups) are corrected in the transform scripts and re-run in sandbox before production migration begins. This step prevents schema errors in production.
Production migration and cutover
We run the production migration in dependency order: Accounts (from erxes Companies), Contacts (with parent AccountId resolved), Leads (for unassociated contacts), Deals (with pipeline and stage IDs resolved), Tasks (with owner lookup resolved), and custom fields (mapped to Zoho layouts). Conversations migrate as Notes with channel metadata preserved in the Note body. After each object phase, we emit a row-count reconciliation report and pause for admin sign-off before proceeding. We freeze erxes writes during the cutover window, run a final delta migration of records modified during migration, and hand off to the customer's admin for Zoho user provisioning and role configuration.
Handoff and automation inventory delivery
We deliver the written inventory of erxes Automation Workflows, Channel configurations, and any excluded objects (custom objects that exceed Zoho's 300-field limit, or channel integrations that require separate Zoho product activation). We support a five-business-day hypercare window to resolve any reconciliation issues raised by the customer's team after cutover. We do not rebuild erxes automations in Zoho as part of the migration scope; that work is a separate Zoho configuration engagement. We do not provide post-migration admin training; Zoho's own onboarding documentation and partner ecosystem cover that scope.
Platform deep dives
erxes
Source
Strengths
Weaknesses
Zoho 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 erxes and Zoho 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
erxes: Not publicly documented.
Data volume sensitivity
erxes 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 erxes to Zoho CRM migration scoping. Not seeing yours? Book a call.
Walk through your erxes to Zoho 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 erxes
Other ways to arrive at Zoho 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.