CRM migration
Field-level mapping, validation, and rollback between Unanet CRM by Cosential and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Unanet CRM by Cosential
Source
Freshsales
Destination
Compatibility
11 of 11
objects map 1:1 between Unanet CRM by Cosential and Freshsales.
Complexity
BStandard
Timeline
3–7 days
Overview
Unanet CRM by Cosential is built for architecture, engineering, and construction firms, storing AEC-specific objects like proposal records, project associations, and personnel modules alongside standard CRM data. Freshsales is a general-purpose SMB CRM with Leads, Contacts, Accounts, Deals, and Activities. The data models diverge significantly: Unanet models opportunities linked to project hierarchies, while Freshsales uses flat deal records. FlitStack migrates everything that lives in Unanet's standard CRM objects (contacts, companies, opportunities, activities) directly, preserving original create/update timestamps, owner assignments, and record IDs for traceability. Unanet lifecycle stage equivalents and any custom fields map to Freshsales custom fields. Constructs with no Freshsales equivalent — proposal automation, project tracking, AEC personnel modules — are preserved as file attachments and custom field references for manual rebuilding. The migration runs through Unanet's Compass API (v1 and v2) into Freshsales' REST API, with FlitStack maintaining cross-reference IDs between systems so no record duplicates during delta-pickup runs.
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 Unanet CRM by Cosential 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.
Unanet CRM by Cosential
Contact
Freshsales
Contact
1:1Unanet contacts map 1:1 to Freshsales contacts. The contact's associated company resolves to a Freshsales Account via domain match or name match. Unmapped contacts land with no account association and are flagged for manual resolution before the migration commits. During the migration, each contact's original Unanet ID is stored in a custom field (source_system_id__c) for traceability and future delta runs.
Unanet CRM by Cosential
Company
Freshsales
Account
1:1Unanet companies map to Freshsales accounts. Company hierarchies (parent/child) collapse to a single primary parent-account reference since Freshsales accounts support only one ParentId. Multi-subsidiary structures require post-migration account hierarchy setup in Freshsales. We also preserve the original Unanet company ID in a custom field (source_system_id__c) on the Freshsales Account record to enable cross-reference during delta imports.
Unanet CRM by Cosential
Opportunity
Freshsales
Deal
1:1Unanet opportunities map to Freshsales deals. Pipeline stages map value-by-value to Freshsales deal stages per pipeline. Deal amount, close date, owner, and probability all transfer directly. Unanet opportunity IDs are stored in a custom field for traceability. The mapping also ensures that any custom fields on the opportunity, such as regional segmentation or product lines, are transferred to Freshsales custom fields on the deal record.
Unanet CRM by Cosential
Activity (Call/Email/Meeting/Note)
Freshsales
Task / Event / Note
1:1Unanet call logs become Freshsales tasks with Type=Call. Emails become tasks with Type=Email. Meetings become Freshsales events with original start/end times and location preserved. Notes migrate as Freshsales notes. Original activity timestamps and owner IDs transfer with each record. Each migrated activity retains a reference to its source Unanet ID in a custom field (source_system_id__c) for reconciliation during delta runs.
Unanet CRM by Cosential
Lifecycle Stage
Freshsales
Custom Field: lifecycle_stage__c
1:1Unanet lifecycle stage values have no direct Freshsales equivalent. We create a custom pick-list field (lifecycle_stage__c) on Freshsales contacts and map Unanet's stage values one-by-one. Unmapped stage values default to a catch-all value and are flagged for review. The mapping table is exported as a CSV so your team can validate the stage assignments before the final data load.
Unanet CRM by Cosential
Custom Object
Freshsales
Custom Object / Custom Field
1:1Unanet custom objects map to Freshsales custom objects created via the developer platform. N:N relationships in Unanet require junction objects or custom multi-select fields in Freshsales. We deliver a relationship mapping plan showing which custom objects need junction setup before migration.
Unanet CRM by Cosential
Proposal Record
Freshsales
File Attachment (on Deal)
1:1Unanet proposal documents have no Freshsales equivalent. We download all proposal files and re-upload them as file attachments linked to the corresponding migrated deal record. Teams needing proposal automation should evaluate Freshsales CPQ add-on post-migration. The original proposal filenames and IDs are stored in a custom text field on the deal for future reference.
Unanet CRM by Cosential
Project Record
Freshsales
Custom Field on Deal
1:1Unanet project records tracking pursuit-to-project transitions have no Freshsales deal counterpart. Project names and identifiers migrate as custom text fields on deal records for reference. Active project tracking requires a separate project management tool post-migration. Each migrated project identifier is stored in a custom field (source_project_id__c) on the deal to maintain a link to the original Unanet record.
Unanet CRM by Cosential
Personnel Record
Freshsales
Contact
1:1Unanet's personnel module (staff experience, certifications, areas of expertise) maps to Freshsales contacts with custom fields. Professional credentials and certification data migrate as custom text fields. Original timestamps and department associations are preserved in corresponding custom fields. The staff ID from Unanet is recorded in a custom field (source_personnel_id__c) on the Freshsales contact for future reference.
Unanet CRM by Cosential
Attachment / File
Freshsales
Freshsales Files
1:1Unanet file attachments on any record re-upload to Freshsales Files attached to the corresponding record. File size limits of Freshsales apply (typically 25MB per file). Inline images in notes are downloaded and re-hosted as file attachments. Each re-uploaded file retains its original filename and a reference to the source Unanet attachment ID in a custom field for auditability.
Unanet CRM by Cosential
Owner / User
Freshsales
Freshsales User
1:1Unanet owners and users resolve to Freshsales users by email address match. Unmatched owners are flagged before migration — teams either invite them to Freshsales first or assign records to a fallback owner. No record lands without a valid Freshsales owner.
| Unanet CRM by Cosential | Freshsales | Compatibility | |
|---|---|---|---|
| Contact | Contact1:1 | Fully supported | |
| Company | Account1:1 | Fully supported | |
| Opportunity | Deal1:1 | Fully supported | |
| Activity (Call/Email/Meeting/Note) | Task / Event / Note1:1 | Fully supported | |
| Lifecycle Stage | Custom Field: lifecycle_stage__c1:1 | Fully supported | |
| Custom Object | Custom Object / Custom Field1:1 | Fully supported | |
| Proposal Record | File Attachment (on Deal)1:1 | Fully supported | |
| Project Record | Custom Field on Deal1:1 | Fully supported | |
| Personnel Record | Contact1:1 | Fully supported | |
| Attachment / File | Freshsales Files1:1 | Fully supported | |
| Owner / User | Freshsales User1: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.
Unanet CRM by Cosential gotchas
Non-standard object names block naive field mapping
API requires Enterprise License agreement
Duplicate contact risk on bulk imports
Custom fields require manual schema enumeration
Proposal templates carry template logic, not just data
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
Extract data from Unanet via Compass API
We connect to Unanet's Compass API (v1 and v2) using your firm access code and API key. The API supports basic access authentication with username/password for session tokens. We export all standard CRM objects — contacts, companies, opportunities, activities, attachments — plus any custom objects and fields defined in your Unanet instance. API pagination handles large record sets, and we capture original timestamps, owner IDs, and cross-object relationship IDs during extraction.
Configure Freshsales target schema with custom fields and pipelines
Before data lands, we create the custom fields required to receive Unanet data: lifecycle_stage__c, lead_score__c, original_create_date__c, source_system_id__c, and any custom fields mapped from Unanet. We also map Unanet pipelines to Freshsales deal pipelines and configure stage pick-lists to match your Unanet stage names. This schema setup plan is delivered for your Freshsales admin to confirm before validation runs. The mapping also includes setting default values for required Freshsales fields such as owner_id, and defining any required validation rules to prevent data loss during the import.
Run sample migration with field-level diff
A representative slice migrates first — typically 200–500 records spanning contacts, companies, deals, and activities. We generate a field-level diff showing source values against destination values so you can verify lifecycle stage mapping, owner resolution, and relationship integrity. Any mapping gaps or rejected records are corrected before the full run commits. This step typically takes 4–8 hours. The diff report is delivered as a CSV file, highlighting any fields where source and target values differ, including a column for recommended corrections. Your team can approve the mappings in the report before we proceed with the full data load.
Execute full migration with delta-pickup window
The full migration runs against Freshsales REST API, respecting rate limits for your plan tier. A delta-pickup window (typically 24–48 hours after initial run completion) captures any Unanet records modified during the cutover period. All operations are logged to an audit trail. If reconciliation identifies gaps, one-click rollback reverts the Freshsales state to pre-migration snapshot for correction and retry. During the migration, we monitor API response codes and retry transient failures automatically, ensuring that transient network issues do not cause data loss.
Validate record counts, relationship integrity, and file attachments
Post-migration validation compares record counts between Unanan source and Freshsales destination per object type. We verify that account_id lookups resolved correctly, owner assignments match by email, and all file attachments re-uploaded to the correct deal records. A validation report is delivered with any records that require manual review, along with a reference export mapping Unanet IDs to Freshsales IDs. The validation also includes checking for duplicate email addresses and confirming that custom field values, such as lifecycle_stage__c and lead_score__c, populated correctly across all contacts.
Platform deep dives
Unanet CRM by Cosential
Source
Strengths
Weaknesses
Freshsales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 Unanet CRM by Cosential and Freshsales.
Object compatibility
2 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
Unanet CRM by Cosential: Not publicly documented.
Data volume sensitivity
Unanet CRM by Cosential 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 Unanet CRM by Cosential to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Unanet CRM by Cosential 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 Unanet CRM by Cosential
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.