CRM migration
Field-level mapping, validation, and rollback between NeoDeck Holdings and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
NeoDeck Holdings
Source
Freshsales
Destination
Compatibility
14 of 14
objects map 1:1 between NeoDeck Holdings and Freshsales.
Complexity
BStandard
Timeline
48–96 hours
Overview
NeoDeck Holdings runs NeoMed EHR, a healthcare platform built around patient records, encounter notes, prescriptions, and billing claims — not the contact-and-deal object model that Freshsales CRM uses. Migrating to Freshsales requires mapping patient records to Freshsales Contacts, provider organizations to Accounts, appointments to custom activity records, and carrying over any NeoDeck custom properties as Freshsales custom fields. FlitStack AI handles this through an extract-transform-load pipeline: we read the exported data from NeoDeck (API export or file-based), build the Freshsales schema with custom fields matching your medical data shapes, map patient and provider records to the right objects, and load them via Freshsales' REST API. Clinical data that has no CRM equivalent — problem lists, allergies, medication histories — gets stored as Freshsales custom fields or in a linked custom object so the information is present even if Freshsales wasn't designed for it. Workflows, billing logic, and EHR-specific automations do not migrate; those require Freshsales workflow configuration post-migration. The migration runs against a scoped read token on NeoDeck so your team continues working in NeoMed during cutover, with a delta-pickup window capturing any new records before you switch over.
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 NeoDeck Holdings 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.
NeoDeck Holdings
Patient
Freshsales
Contact
1:1NeoDeck patient records map to Freshsales Contacts. Patient name maps to first_name and last_name. Date of birth, address, phone, and email transfer directly. MRN (Medical Record Number) stores as a custom field (mrn__c) since Freshsales has no native medical identifier field.
NeoDeck Holdings
Facility / Provider Organization
Freshsales
Account
1:1NeoDeck facilities (clinics, hospitals, provider groups) map to Freshsales Accounts. The facility name becomes the Account Name, while the NPI and taxonomy code are stored as custom text fields (NPI__c, Taxonomy_Code__c). Address, phone, and website fields map directly to Freshsales Account fields. For multi‑location organizations where NeoDeck defines parent‑child facility hierarchies, we link child facilities to the parent via Freshsales' Parent Account field, preserving the original relationship structure.
NeoDeck Holdings
Encounter / Appointment
Freshsales
Custom Object (Encounter)
1:1NeoDeck encounter records (visit date, visit type, provider, status) have no direct Freshsales equivalent. We create a Freshsales Custom Object called Encounter linked to Contact via lookup. Visit type and status map to pick-list custom fields on the Encounter object. Original encounter timestamps and provider links are preserved.
NeoDeck Holdings
Provider / Staff
Freshsales
Contact (secondary)
1:1NeoDeck providers and clinical staff are stored as separate records with a provider_role field. These migrate as Freshsales Contacts with a custom role pick-list (Provider_Role__c) set to the source role value. Providers associated with encounters link via the Encounter object's provider lookup field.
NeoDeck Holdings
Prescription (NeoMed Rx)
Freshsales
Custom Object (Prescription)
1:1NeoMed Rx prescription records (medication_name, dosage, frequency, pharmacy, prescriber) have no Freshsales native equivalent. We create a Prescription custom object linked to the Contact (patient) via a lookup field. Medication name, dosage, and frequency map as text and pick-list custom fields. Active vs. historical status maps to a custom status field.
NeoDeck Holdings
Diagnosis / ICD-10 Codes
Freshsales
Custom Field on Contact
1:1NeoDeck diagnosis codes stored per patient (ICD-10 descriptions or SNOMED-CT codes) migrate as a multi-select custom field (Diagnosis_Codes__c) on the Contact record. The field stores code descriptions as pick-list values. If the source stores raw code numbers, those migrate as a separate text custom field (Diagnosis_Code_Raw__c).
NeoDeck Holdings
Allergies
Freshsales
Custom Field on Contact
1:1Patient allergy lists from NeoDeck transfer as a multi-select custom field (Allergies__c) on the Freshsales Contact. Each allergen becomes a pick-list value in Freshsales. Severity and reaction data stored as additional text and pick-list custom fields on the same Contact record.
NeoDeck Holdings
Claim / Billing Record
Freshsales
Deal + Custom Fields
1:1NeoDeck billing claims (claim_id, payer_name, billed_amount, claim_status, service_date) map to Freshsales Deals with custom fields: Claim_ID__c, Payer_Name__c, Billed_Amount__c, Claim_Status__c. The Deal Amount field carries the billed_amount for pipeline reporting. Claim status pick-list values map to Freshsales deal stage values if appropriate.
NeoDeck Holdings
Patient Document / Attachment
Freshsales
Files on Contact
1:1NeoDeck file attachments linked to patient records (consent forms, imaging references, clinical notes as PDFs) download and re-upload to Freshsales Files attached to the corresponding Contact record. File size limits from Freshsales storage policy apply. Inline images in clinical note exports download and rehost.
NeoDeck Holdings
NeoDeck Custom Properties (patient-level)
Freshsales
Custom Fields on Contact
1:1Any custom fields configured in NeoDesk at the patient level — such as insurance_carrier, primary_care_physician, preferred_pharmacy — map to Freshsales custom fields on Contact. Field types are matched: pick-list to pick-list, date to date, text to text. Unrecognized field types default to text and get flagged for admin review.
NeoDeck Holdings
NeoDeck Custom Properties (facility-level)
Freshsales
Custom Fields on Account
1:1Facility‑level custom properties in NeoDeck — such as facility_type, accepting_new_patients, accreditation_status, licensing_info, and ownership_structure — migrate as custom fields on the Freshsales Account record. We match field types: NeoDeck pick‑lists become Freshsales pick‑lists, date fields become date fields, and text fields become text fields. Any field type that cannot be matched directly is converted to a text field and flagged for admin review after migration.
NeoDeck Holdings
User / Owner
Freshsales
User (Freshsales Agent)
1:1NeoDeck staff users are matched to Freshsales agents/users by email address. Unmatched owners are flagged before migration — the team either creates Freshsales users first or assigns unowned records to a designated fallback user. Patient records and encounters carry their original owner from NeoDeck where a match is found.
NeoDeck Holdings
Activity Log / Clinical Note
Freshsales
Task / Note
1:1NeoDeck clinical note records and general activity entries map to Freshsales Notes attached to the relevant Contact. Original timestamps and author information are preserved. Clinical note content migrates as Note body text. Tasks representing action items (follow-up required, referral sent) map to Freshsales Tasks with the appropriate status and due date.
NeoDeck Holdings
Insurance / Payer Record
Freshsales
Custom Field on Contact
1:1NeoDeck insurance records per patient — including payer_name, policy_number, group_number, and coverage_type — are stored as custom fields on the Freshsales Contact: Insurance_Payer__c, Policy_Number__c, Group_Number__c, and Coverage_Type__c. The Coverage_Type__c field is created as a pick‑list with options such as HMO, PPO, Medicaid, Medicare, and self‑pay. Primary versus secondary coverage is represented by a pick‑list custom field (Insurance_Primary_Secondary__c) that lets you order multiple insurance records for reporting and billing workflows.
| NeoDeck Holdings | Freshsales | Compatibility | |
|---|---|---|---|
| Patient | Contact1:1 | Fully supported | |
| Facility / Provider Organization | Account1:1 | Fully supported | |
| Encounter / Appointment | Custom Object (Encounter)1:1 | Fully supported | |
| Provider / Staff | Contact (secondary)1:1 | Fully supported | |
| Prescription (NeoMed Rx) | Custom Object (Prescription)1:1 | Fully supported | |
| Diagnosis / ICD-10 Codes | Custom Field on Contact1:1 | Fully supported | |
| Allergies | Custom Field on Contact1:1 | Fully supported | |
| Claim / Billing Record | Deal + Custom Fields1:1 | Fully supported | |
| Patient Document / Attachment | Files on Contact1:1 | Fully supported | |
| NeoDeck Custom Properties (patient-level) | Custom Fields on Contact1:1 | Fully supported | |
| NeoDeck Custom Properties (facility-level) | Custom Fields on Account1:1 | Fully supported | |
| User / Owner | User (Freshsales Agent)1:1 | Fully supported | |
| Activity Log / Clinical Note | Task / Note1:1 | Fully supported | |
| Insurance / Payer Record | Custom Field on Contact1: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.
NeoDeck Holdings gotchas
No public API requires coordinated export with customer service
Insurance payer IDs require manual cross-reference mapping
Cloud and client/server deployments have different export paths
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
Audit NeoDeck export scope and data quality
FlitStack AI begins every migration with a discovery audit. We connect to NeoDeck's export mechanism — file-based export, API pull, or direct database query where accessible — and catalogue the full record set: patient count, facility count, encounter volume, prescription records, and all NeoDeck custom property definitions. We identify data quality issues (duplicate patients, missing email addresses, malformed dates, NULL values in required fields) and produce a data quality report. This step determines whether any NeoDeck data requires cleansing before mapping and confirms which NeoDeck custom fields have a clear Freshsales destination.
Build Freshsales schema with custom fields and custom objects
Before any data moves, FlitStack creates the Freshsales schema to receive it. For each NeoDeck object (Patient, Facility, Encounter, Prescription, Claim), we create the corresponding Freshsales object or map to the native object. Custom fields are created in Freshsales to match NeoDeck field types: pick-lists, text fields, date fields, and lookup fields. If your Freshsales plan supports custom objects, we create the Encounter and Prescription custom objects with the appropriate lookup relationships to Contact. We deliver a schema plan showing every custom field and custom object before creation, so your Freshsales admin can review and approve.
Resolve providers to Freshsales contacts and match patients by email and MRN
NeoDeck provider and staff records are mapped to Freshsales Contacts with a custom role field. NeoDeck patients are matched to Freshsales Contacts by email address first; if a NeoDeck patient has no email, we match by first_name + last_name + date_of_birth as a secondary key. Unmatched records are flagged and presented in a resolution screen where your team decides whether to create a new Contact, merge with an existing one, or assign to a fallback. MRN is preserved as a custom field on every Contact so the clinical identifier is traceable in Freshsales after migration.
Run a sample migration with field-level diff and clinical data validation
A representative slice — typically 200–500 records across patients, facilities, encounters, and prescriptions — migrates first. We generate a field-level diff report comparing the source values in NeoDeck against the mapped values in Freshsales. For clinical data fields (allergies, diagnoses, prescriptions), we validate that pick-list values in Freshsales match the source options and that no data was truncated or mis-mapped. Your team reviews the sample and confirms the mapping before the full migration is scheduled.
Execute full migration with delta-pickup and audit log
The full migration runs against Freshsales via their REST API. A delta-pickup window — typically 24–48 hours — runs concurrently so any new NeoDeck records created or modified during the migration are captured before you switch over. FlitStack generates a complete audit log of every record inserted, updated, or skipped, with reasons for any skipped records. One-click rollback is available if reconciliation fails: the audit log allows us to reverse every operation and restore Freshsales to its pre-migration state. After rollback is confirmed, you continue working in NeoDeck.
Platform deep dives
NeoDeck Holdings
Source
Strengths
Weaknesses
Freshsales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a manual workaround.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across NeoDeck Holdings and Freshsales.
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
NeoDeck Holdings: Not publicly documented.
Data volume sensitivity
NeoDeck Holdings 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 NeoDeck Holdings to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your NeoDeck Holdings 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 NeoDeck Holdings
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.