CRM migration
Field-level mapping, validation, and rollback between ZeyOS and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
ZeyOS
Source
Freshsales
Destination
Compatibility
7 of 9
objects map 1:1 between ZeyOS and Freshsales.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from ZeyOS to Freshsales is a shift from a unified CRM-ERP-Groupware platform to a focused sales CRM. ZeyOS stores Accounts, Contacts, Leads, Items, Projects, Tasks, Tickets, and financial records across a PostgreSQL schema with a REST API that returns int8 Unix epoch timestamps. Freshsales uses a standard CRM data model: Contacts (people), Accounts (companies), Deals (opportunities), and Products, with custom fields and custom objects available for extended data. We handle the timestamp conversion from epoch to ISO 8601, resolve Account-to-Contact lookups before contact import, and map ZeyOS's inventory Items to Freshsales Products noting that stock quantities are informational rather than transactional. ZeyOS's financial pipeline (Quotes, Orders, Deliveries, Invoices) has no direct Freshsales equivalent; we import them as Deals with a custom object for line-level detail. Automation rules, scripts, and ERP workflows do not migrate; we deliver a written inventory for your admin to rebuild in Freshsales's workflow builder.
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 ZeyOS object lands in Freshsales, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
ZeyOS
Accounts
Freshsales
Accounts
1:1ZeyOS Accounts are the primary company-level records linked to Contacts via a foreign key. We map them 1:1 to Freshsales Accounts, using the account name as the dedupe key. Account is created before any Contact import so that the parent-account lookup is satisfied at the moment of Contact insert. Any ZeyOS custom fields on Account (stored in extdata) map to Freshsales custom properties on the Account object.
ZeyOS
Contacts
Freshsales
Contacts
1:1ZeyOS Contacts store individual person records with name, email, and extdata fields. We map them 1:1 to Freshsales Contacts, resolving the parent AccountId from the ZeyOS foreign key before insert. Email address is the standard dedupe key. Any address fields, nickname, or custom contact properties stored in ZeyOS extdata map to Freshsales custom contact fields.
ZeyOS
Leads
Freshsales
Contacts
1:manyZeyOS has a distinct Leads object separate from Contacts. Freshsales uses a unified Contact model with a Lead Status property rather than a separate Lead object. We merge ZeyOS Leads into Freshsales Contacts, preserving the ZeyOS lead status value in a custom Freshsales field (e.g., zeyos_lead_status__c) for reporting. If the customer's ZeyOS Leads have a meaningful qualification stage that predates their move to a Contact, we capture it as a contact property rather than discarding it.
ZeyOS
Items
Freshsales
Products
1:1ZeyOS Items represent the inventory and product catalog with barcode, model, and custom fields. We map them 1:1 to Freshsales Products, preserving product name, SKU (mapped to Freshsales product_code), and pricing information. Note that Freshsales Products are catalog entries without automated stock quantity tracking; ZeyOS's automated inventory transactions (triggered on deliveries) have no Freshsales equivalent. We flag any Items with non-zero stock quantities for customer review and document them as a custom reporting field or inventory-tracking workaround.
ZeyOS
Tickets
Freshsales
Cases
1:1ZeyOS Tickets are the helpdesk object with email integration and subject-line ticket-number association. We map them to Freshsales Cases (available on the Growth and higher tiers) or to a custom Freshsales object if the destination is on the Free plan. Conversations, attachments, and custom ticket fields migrate to the corresponding Case fields and activity timeline. Ticket status from ZeyOS maps to a custom Case status field.
ZeyOS
Users
Freshsales
Users
1:1ZeyOS Users represent team members who own records, create files, and track time. We map them to Freshsales Users (sales reps and admins), resolving by email match. Any ZeyOS User without a matching Freshsales User is held in a reconciliation queue for the customer's admin to provision before record import resumes. Inactive ZeyOS users are flagged for post-migration deactivation review.
ZeyOS
Activities
Freshsales
Activities
1:1ZeyOS Activities capture engagements (calls, emails, meetings, notes) linked to Accounts or Contacts. We map them to Freshsales Activities with the Who (Contact) and What (Account) references resolved from the migrated records. Timestamps stored as int8 Unix epoch in ZeyOS are converted to ISO 8601 datetime strings before insert into Freshsales. Activity type (call, email, meeting, note) maps to the corresponding Freshsales activity type.
ZeyOS
Documents
Freshsales
Attachments (on Contacts/Accounts/Cases)
1:1ZeyOS files stored in the files table with binary blobs in the binfile column are exported via the REST API individually and re-uploaded as attachments to the corresponding Freshsales Contact, Account, or Case record. Files exceeding 25MB are flagged for customer review before import. The file name and MIME type are preserved; any non-standard MIME types receive manual handling.
ZeyOS
Custom Fields (extdata pattern)
Freshsales
Custom Properties
lossyZeyOS exposes custom fields via the fields table and the extdata JSON pattern in the REST API. We read each field definition, identify its data type, and map it to the equivalent Freshsales custom property type (text, number, date, picklist, or checkbox). Custom field mapping is validated against Freshsales's property type constraints before import. Any ZeyOS custom fields without a Freshsales equivalent are flagged for customer review.
| ZeyOS | Freshsales | Compatibility | |
|---|---|---|---|
| Accounts | Accounts1:1 | Fully supported | |
| Contacts | Contacts1:1 | Fully supported | |
| Leads | Contacts1:many | Mapping required | |
| Items | Products1:1 | Mapping required | |
| Tickets | Cases1:1 | Fully supported | |
| Users | Users1:1 | Fully supported | |
| Activities | Activities1:1 | Fully supported | |
| Documents | Attachments (on Contacts/Accounts/Cases)1:1 | Mapping required | |
| Custom Fields (extdata pattern) | Custom Propertieslossy | 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.
ZeyOS gotchas
Audit-locked invoices block post-import edits
No documented bulk API forces iterative record-by-record migration
Unix epoch timestamps require explicit conversion
File attachments require binary blob download from REST API
Token auth without OAuth limits automation scope
Freshsales gotchas
Freddy AI is Pro-tier only despite heavy marketing
Post-migration emails and sequences are disabled
Bot session credits are a one-time 500-session allocation
Phone credits charged per minute with no cap
File storage limits scale with plan tier
Pair-specific challenges
Migration approach
Discovery and scope definition
We audit the source ZeyOS instance across Accounts, Contacts, Leads, Items, Tickets, Activities, Documents, and any financial records (Quotes, Orders, Invoices). We identify custom fields via the fields table and extdata patterns, count file attachment sizes, and assess the total record volume. We pair this with a Freshsales plan review to confirm which tier (Free, Growth, Pro, Enterprise) supports the required objects and custom field limits. The discovery output is a written migration scope, a ZeyOS-to-Freshsales object map, and a custom-field inventory.
Schema design and custom field deployment
We design the destination schema in Freshsales. This includes creating all custom properties on Contacts, Accounts, Deals, Cases, and Products to receive migrated ZeyOS data. If the ZeyOS financial pipeline (Quotes, Orders, Invoices) requires a custom object for line-item detail, we pre-create that custom object schema before any data import. We also configure the ZeyOS lead status mapping as a custom contact property and define the merge rule for ZeyOS Leads into Freshsales Contacts. All schema changes are deployed into the Freshsales instance before migration begins.
Owner reconciliation and user provisioning
We extract every distinct ZeyOS User referenced on Accounts, Contacts, Tickets, and Activity records and match by email against the Freshsales destination's User list. Users without a matching Freshsales User go to a reconciliation queue. The customer's admin provisions any missing Freshsales Users (active or inactive depending on whether the original ZeyOS user is still active). Owner references must be resolved before any record import proceeds because Freshsales enforces valid user lookups on standard object inserts.
Record migration in dependency order
We run migration in strict dependency order: Accounts first (parent records), then Contacts (with AccountId resolved), Deals (with AccountId and OwnerId resolved), Items mapped to Products, Cases from Tickets, and Activities last with WhoId and WhatId resolved against the migrated Contact and Account records. File attachments are downloaded from ZeyOS as binary blobs and re-uploaded to Freshsales as record attachments after the parent record is confirmed in Freshsales. Financial records (Quotes, Orders, Invoices) are imported as Deals with a custom object for line items after all primary CRM objects are validated.
Sandbox validation and reconciliation
We run a full migration into the customer's Freshsales instance using the production ZeyOS data volume, validate record counts at each phase (Accounts in, Contacts in, Deals in, Cases in, Activities in), and spot-check 25-50 records against the ZeyOS source for field-level accuracy. Any timestamp conversion errors, missing custom field values, or orphaned child records are corrected in the migration script before production migration. The customer signs off on the validation report before cutover.
Cutover and post-migration handoff
We freeze writes to ZeyOS during the cutover window, run a final delta migration of any records modified during the migration window, then enable Freshsales as the system of record. We deliver a written inventory of any ZeyOS automations, iXML scripts, and ERP workflows that do not migrate, with a rebuild recommendation for Freshsales workflows. We support a one-week hypercare window for reconciliation issues. We do not rebuild ZeyOS automations or scripts as Freshsales workflows as part of the standard migration scope.
Platform deep dives
ZeyOS
Source
Strengths
Weaknesses
Freshsales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 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 ZeyOS and Freshsales.
Object compatibility
3 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
ZeyOS: Not publicly documented — we apply exponential backoff on 429/5xx responses and confirm tenant-specific limits during scoping.
Data volume sensitivity
ZeyOS 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 ZeyOS to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your ZeyOS to Freshsales migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave ZeyOS
Other ways to arrive at Freshsales
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.