CRM migration

Migrate from openCRX to Freshsales

Field-level mapping, validation, and rollback between openCRX and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.

openCRX logo

openCRX

Source

Freshsales

Destination

Freshsales logo

Compatibility

80%

8 of 10

objects map 1:1 between openCRX and Freshsales.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

openCRX and Freshsales occupy opposite ends of the CRM spectrum. openCRX is a self-hosted, enterprise-class open-source platform built on J2EE with a deep UML-modelled data hierarchy spanning Opportunities, Quotes, Sales Orders, and Invoices as subclasses of abstract contract classes. Freshsales is a cloud-native SaaS CRM from Freshworks (NASDAQ: FRSH) that uses a simpler four-object model: Contacts, Accounts, Deals, and Leads, with Freddy AI for scoring and insights. The migration is not a record copy — it requires flattening the openCRX contract hierarchy into Freshsales Deals, computing the Account-Contact parent relationship during scoping, and mapping the DataBinding PropertySet custom field definitions to Freshsales custom fields on the correct module. We handle direct database export from openCRX (no public REST API exists), route attachment extraction through a Linux or macOS client to avoid the WebDAV Windows quirks, and use the Freshsales REST API with rate-limit awareness for import. Workflow Processes, Topics, and Alert Subscriptions do not migrate because they are segment-scoped infrastructure objects; we document them for your admin to rebuild.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

openCRX logo

openCRX

What's pushing teams away

  • The user interface is unintuitive and the learning curve is steep, making day-to-day usage challenging for non-technical teams without dedicated administrator resources.
  • Comprehensive formal documentation is lacking, forcing teams to reverse-engineer behaviour from UML models, Javadoc, and community forum posts.
  • No official commercial support channel exists; users must rely on community resources or internal expertise when production issues arise.
  • Pre-built integrations with popular third-party tools are minimal, requiring custom development effort to connect openCRX to modern SaaS stacks.

Choosing

Freshsales logo

Freshsales

What's pulling them in

  • Lowest barrier to entry among major CRMs — the free tier supports up to 3 users and includes core CRM functionality before committing to per-seat pricing.
  • Built-in chat, email, and phone reduce reliance on third-party integrations for basic sales communication and contact management.
  • Freddy AI contact scoring and deal insights are included on Pro plans at a lower price than comparable HubSpot tiers.
  • Kanban pipeline views across Contacts, Accounts, and Deals provide visual deal management without requiring custom configuration.
  • Integration with the broader Freshworks ecosystem (Freshdesk, Freshchat, Freshservice) reduces tool sprawl for teams already using Freshworks.

Object mapping

How openCRX objects map to Freshsales

Each row shows how a openCRX 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.

openCRX

Contact (individual subclass)

maps to

Freshsales

Contact

1:1
Fully supported

openCRX Contact records (individual persons) map to Freshsales Contact. We extract first name, last name, primary email, phone numbers (via PhoneNumber objects), postal address (via PostalAddress objects), and any DataBinding PropertySet custom fields. The Freshsales Contact is created after its parent Account (from LegalEntity) to satisfy the AccountId lookup at insert time. Segments containing both LegalEntity and Contact records must be processed together to resolve the organisation hierarchy.

openCRX

LegalEntity (company subclass)

maps to

Freshsales

Account

1:1
Fully supported

openCRX LegalEntity records map to Freshsales Account. We extract company name, website, industry classification, revenue range, and any DataBinding PropertySet custom fields. LegalEntity is the parent of Contact records in openCRX; we use the LegalEntity name as the Account name and the Contact's organisation reference to establish the Freshsales Account-Contact relationship. Multi-entity openCRX deployments with multiple segments require segment-level Account reconciliation before migration.

openCRX

Opportunity (contract subclass)

maps to

Freshsales

Deal

1:many
Fully supported

openCRX Opportunities inherit from abstract contract classes and may contain complex position-level detail (contract positions as line items). We flatten contract positions into a single Deal record, extracting the opportunity name, amount, currency, close date, and rating. Stage names from openCRX map to Freshsales Deal stage values, with the original openCRX stage preserved in a custom field for audit. If multiple openCRX opportunities share a single Contact or LegalEntity, each becomes a separate Freshsales Deal linked to the same parent Account.

openCRX

Quote (contract subclass)

maps to

Freshsales

Deal or Quote module (Pro+)

1:1
Fully supported

openCRX Quotes inherit from the same contract hierarchy as Opportunities and contain line positions modelled as contract positions. For Freshsales Growth and Free plans, we migrate Quote header data (customer reference, currency, total amount) into the parent Deal as a custom field block or note. For Freshsales Pro and Enterprise, Quotes migrate to the native Freshsales Quote module with line items, pricing, and validity dates preserved. Quote-to-Deal linkage is maintained via the parent Account lookup.

openCRX

Sales Order (contract subclass)

maps to

Freshsales

Deal

1:1
Fully supported

openCRX Sales Orders are terminal contract records in the order-to-invoice chain. We map Sales Order headers and positions to Freshsales Deal records, flagging the original openCRX type as a custom field so that won Deals retain their order context. openCRX pricing rules applied at order time are captured as a JSON block in a custom Deal field if they cannot be expressed in Freshsales native pricing. Invoice records follow the same pattern and map as closed-won Deals with invoice status tracked in a custom field.

openCRX

Product and Price List

maps to

Freshsales

Product

1:1
Fully supported

openCRX products with multi-currency price lists and run-time pricing rules map to Freshsales Product records. We extract product name, SKU (from openCRX productCode), description, and unit price. For products with pricing rules rather than fixed prices, we capture the effective price at migration time as the standard price in Freshsales and document the original pricing rule for the customer's admin to re-implement in Freshsales pricing logic if needed.

openCRX

Activities and Activity Trackers

maps to

Freshsales

Task and Event

1:1
Mapping required

openCRX Activities (calls, emails, meetings, tasks) map to Freshsales Task and Event records. Activity time-tracking attributes, disposition codes, and duration migrate to Task custom fields. openCRX Activity Trackers group related activities and are a grouping concept with no Freshsales equivalent; we document tracker-to-record associations in a migration note and set a custom field on each migrated activity indicating its original tracker membership. Custom feature definitions and activity subtypes require field-level mapping during scoping.

openCRX

User-Defined Attributes (DataBinding PropertySet)

maps to

Freshsales

Custom Fields on Contacts, Accounts, Deals, Leads

lossy
Mapping required

Custom fields added via openCRX DataBinding PropertySet are stored as feature definitions bound to CrxObject at runtime. We identify all active custom fields during scoping, map their data types to Freshsales equivalent field types (text, number, date, picklist, checkbox), and pre-create the corresponding custom fields in Freshsales under the correct module before data import. Custom field definitions that reference openCRX-specific picklist values require value mapping as part of the transformation step.

openCRX

Attachments (binary files)

maps to

Freshsales

File attachments on Contacts, Accounts, Deals

1:1
Fully supported

openCRX stores binary attachments linked to objects via WebDAV. If attachments are accessible via openCRX's WebDAV endpoint, we extract them on a Linux or macOS client to avoid Microsoft's WebDAV implementation quirks that cause silent file access failures on Windows. Attachment metadata (filename, MIME type, created date, linked object) is preserved and re-attached to the corresponding migrated record in Freshsales. openCRX groupware document folders that rely on WebDAV-specific access patterns may require manual extraction with customer DBA assistance.

openCRX

Users and Roles

maps to

Freshsales

User

1:1
Mapping required

openCRX role-based security with segment-scoped user assignments maps to Freshsales User records. We resolve active users by email address match between openCRX and Freshsales. Any openCRX user without a matching Freshsales User goes to a reconciliation queue for the customer's admin to provision before record import. Role and permission mappings (openCRX segment roles to Freshsales profile and permission sets) are documented as a written inventory for the admin to configure post-migration.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

openCRX logo

openCRX gotchas

High

No public REST API with documented rate limits

Medium

WebDAV client quirks block document access on Windows

Medium

"Too many open files" on Linux blocks installation and export

Low

Workflow Processes are segment-scoped and non-portable

Freshsales logo

Freshsales gotchas

Medium

Freddy AI is Pro-tier only despite heavy marketing

High

Post-migration emails and sequences are disabled

Medium

Bot session credits are a one-time 500-session allocation

Medium

Phone credits charged per minute with no cap

Low

File storage limits scale with plan tier

Pair-specific challenges

  • openCRX has no public REST API — database export required

    openCRX does not publish a public REST API with documented rate limits. All data export requires either direct read-only database access or application-layer scripting using openCRX's internal APIs scoped to the customer's specific version and deployment configuration. We coordinate with the customer's DBA to obtain a read-only database export and work from the openCRX application layer for any API-based extraction. Any export approach must be validated against the customer's openCRX version, database type (PostgreSQL, Oracle, DB2, or MS SQL), and segment configuration before migration begins.

  • DataBinding PropertySet custom fields need field-level scoping

    openCRX custom fields added via DataBinding PropertySet are feature definitions in the UI customising layer, not standard database columns. We must identify all active custom fields during scoping, extract their data type and picklist values from the openCRX application layer, and map them to Freshsales custom field equivalents before any data import. Fields that reference openCRX-specific picklist values or calculated expressions require explicit value mapping during the transformation step. Skipping this scoping phase results in custom field data being silently dropped during import.

  • WebDAV attachment export fails on Windows clients

    openCRX's groupware features use WebDAV for document access, and Microsoft's WebDAV implementation on Windows is known to cause connection failures and silent file access errors. We route all attachment extraction through a Linux or macOS client during migration to avoid these failures. If the customer's openCRX instance uses HSQLDB or MySQL for development rather than production (PostgreSQL, Oracle, DB2, or MS SQL), performance may be significantly degraded for large attachment exports due to cursor limitations; we note this in the migration runbook and adjust the export timeline accordingly.

  • Contract hierarchy flattening loses position-level detail

    openCRX models Opportunities, Quotes, Sales Orders, and Invoices as subclasses of an abstract contract hierarchy with position-level line item detail. Freshsales Deal records do not natively support the same position hierarchy. We flatten contract positions into Deal-level fields and capture position details as a structured note or JSON custom field, but the granular position pricing, discounts, and delivery schedules from openCRX contract positions cannot be expressed as native Freshsales line items unless the customer is on a Pro or Enterprise plan with the Quotes module enabled. We document this trade-off during scoping and the customer chooses the flattening strategy.

  • Freshsales Free plan excludes key CRM capabilities

    Freshsales Free is limited to 3 users and lacks workflows, multiple pipelines, email sequences, duplicate management, and the Quotes module. If the customer needs any of these capabilities, they must select a paid plan before migration begins. We confirm the target Freshsales plan during discovery and ensure that the migration scope accounts for any plan-gated features. For example, if the customer needs email sequences that existed in openCRX, they must be on at least Growth plan and the sequence logic must be rebuilt post-migration as Freshsales does not support openCRX workflow export.

Migration approach

Six steps for a successful openCRX to Freshsales data migration

  1. Discovery and export access setup

    We audit the source openCRX instance across version, deployment configuration, database type, and segment structure. We extract the full DataBinding PropertySet custom field inventory from the application layer, inventory active Workflow Process definitions and Alert Topics, and assess attachment volume and storage location. We coordinate with the customer's DBA to establish read-only database export access on a Linux-compatible client, verify the ulimit setting is sufficient (we request 2048 or 4096 in /etc/security/limits.conf to avoid 'too many open files' failures), and confirm the target Freshsales plan covers the required features. The discovery output is a written migration scope, data volume estimate, and export runbook.

  2. Data extraction and transformation

    We extract openCRX data in dependency order: LegalEntity (Accounts), Contact (Contacts), Product (Products), then Opportunities, Quotes, Sales Orders, and Invoices (Deals and Quotes). Contract positions are flattened to the parent record and captured as structured notes or JSON for Deal-level placement. Activities are extracted with their original timestamps and tracker membership. Custom field values are extracted from the DataBinding PropertySet layer and mapped to the Freshsales custom field schema prepared in parallel. We resolve the LegalEntity-Contact parent relationship during extraction so that AccountId is known at Contact insert time. Attachment extraction runs on a Linux or macOS client to avoid WebDAV Windows compatibility issues.

  3. Freshsales schema preparation

    We pre-create the Freshsales custom fields on the correct modules (Contacts, Accounts, Deals, and Leads) to match the DataBinding PropertySet custom field inventory. We configure Deal stage values to reflect the openCRX opportunity and contract stage names. If the customer is on Freshsales Pro or above, we create Quote templates with line-item fields aligned to the openCRX contract position structure. We configure the user provisioning mapping (openCRX user email to Freshsales User) and document any unmapped users in a reconciliation queue. The migration runs into a Freshsales sandbox first to validate schema and mapping before production import.

  4. Sandbox migration and reconciliation

    We run a full migration into a Freshsales sandbox using production-like data volume. The customer's administrator reviews record counts (Accounts in, Contacts in, Deals in, Activities in), spot-checks 20-40 records against the openCRX source for field-level accuracy, and validates that the contract hierarchy flattening approach meets business requirements. The sandbox runbook also validates that custom field data is landing in the correct Freshsales custom fields. Any mapping corrections, stage name adjustments, or custom field schema changes are made before production migration begins.

  5. Production migration and dependency sequencing

    We run production migration in strict dependency order: Accounts (from LegalEntity), Contacts (with AccountId resolved), Products (with Price Book entries), then Deals (Opportunities, Quotes, Sales Orders, Invoices), Activities (Tasks and Events via Freshsales API with rate-limit handling), and finally attachment re-upload. Each phase emits a row-count reconciliation report before the next phase begins. We use the Freshsales REST API with exponential backoff on rate-limit responses. Workflow Processes and Alert Topics are documented in a written handoff inventory for the customer's admin to rebuild in Freshsales workflow automations.

  6. Cutover, validation, and workflow rebuild handoff

    We freeze openCRX write access during the cutover window, run a final delta migration for any records modified during the migration window, then enable Freshsales as the system of record. We deliver the Workflow Process and Alert Topic inventory document to the customer's administrator for rebuild in Freshsales automations (available from Growth plan). We support a 72-hour hypercare window where we resolve any data quality issues raised by the sales team. Reports, dashboards, and any custom analytics are not migrated as they are tied to openCRX-specific field names and calculation models; we document the openCRX report list for the admin to rebuild in Freshsales reporting.

Platform deep dives

Context on both ends of the pair

openCRX logo

openCRX

Source

Strengths

  • Zero licensing cost with full source code, UML models, and Javadoc published under a BSD licence.
  • Enterprise-grade data model covering the full sales cycle from Lead through Invoice with full position-level detail.
  • Built on standard J2EE 6 Web Profile and Apache TomEE, running on any OS with Java VM support.
  • Multi-currency, multi-language, and multi-entity capabilities designed for global enterprise deployments.
  • Role-based security with system-wide audit trail meets requirements for regulated industry deployments.

Weaknesses

  • Self-hosting responsibility means no vendor-managed uptime, backups, or security patching.
  • No official commercial support; production issues require community resources or internal Java expertise.
  • Steeper operational burden compared to SaaS CRMs, requiring dedicated server administration.
  • Scarce pre-built third-party integrations; most connectors require custom development.
Freshsales logo

Freshsales

Destination

Strengths

  • Generous free tier for small teams with core CRM functionality without per-seat costs.
  • All-in-one sales CRM with built-in telephony, chat, and email reducing third-party tool dependency.
  • Freddy AI contact scoring and deal predictions available on Pro tier.
  • Multiple pipeline views with Kanban and list options across all plans.

Weaknesses

  • Reports lack depth compared to competitors like HubSpot, with limited customization options.
  • Integration setup is poorly documented with no clear guides for connecting third-party tools.
  • AI features gated behind $39/user/month Pro tier despite marketing emphasis on Freddy AI.
  • Bot sessions limited to 500 one-time allocation with no monthly refresh.

Complexity grading

How hard is this migration?

Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across openCRX and Freshsales.

  • Object compatibility

    B

    2 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    openCRX: Not publicly documented.

  • Data volume sensitivity

    B

    openCRX doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your openCRX to Freshsales migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about openCRX to Freshsales data migrations

Answers to the questions buyers ask most during openCRX to Freshsales migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your openCRX to Freshsales migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most long-tail migrations land between two and four weeks for accounts under 10,000 Contacts and 2,000 Deals with straightforward contract hierarchy, clean database export access, and no multi-segment LegalEntity complexity. Migrations with complex contract hierarchy flattening (multiple contract subclasses per customer), large DataBinding PropertySet custom field inventories across multiple segments, or significant attachment volumes requiring WebDAV extraction move to five to eight weeks.

Adjacent paths

Related migrations to explore

Ready when you are

Move from openCRX.
Land in Freshsales, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day