HRMS migration
Field-level mapping, validation, and rollback between OpenCATS and Crelate. We move data and schema; workflows are rebuilt natively in Crelate.
OpenCATS
Source
Crelate
Destination
Compatibility
9 of 12
objects map 1:1 between OpenCATS and Crelate.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from OpenCATS to Crelate is a shift from a self-hosted, zero-cost ATS to a cloud-native recruiting platform with a REST API, built-in CRM, and AI-powered sourcing. OpenCATS has no REST API, so we connect directly to the MariaDB database the customer hosts, extract Candidates, Job Orders, Companies, Contacts, Activities, and Saved Lists as structured query results, then map and load through Crelate's API. Resume files are stored as filesystem paths on the OpenCATS server rather than database BLOBs; we flag every path for separate SFTP transfer and re-link them post-migration. OpenCATS Reports do not migrate as exportable artifacts. Crelate's Business tier ($99/user/month) and above support custom fields and multiple data stages, but Crelate enforces limits on these by subscription tier, which we surface during scoping. Saved Lists, user-defined workflows, and calendar configurations do not migrate as code; we deliver a written inventory of these for the customer's admin to rebuild in Crelate.
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 OpenCATS object lands in Crelate, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
OpenCATS
Candidate
Crelate
Person
1:1OpenCATS Candidate records map to Crelate Person. We extract first_name, last_name, email, phone, skills (stored as comma-separated tags in OpenCATS), and the candidate's status field, mapping to Crelate's Person Status values. The original skill tags from OpenCATS migrate to Crelate's Tags on the Person record. Candidate resume file paths are extracted as a separate list and flagged for SFTP transfer to Crelate's document storage, then re-linked by filename match post-migration.
OpenCATS
Job Order
Crelate
Job
1:1OpenCATS Job Orders map directly to Crelate Jobs. The OpenCATS fields title, description, status, public_description, and assigned_recruiter map to Crelate's Job title, description, status, jobDescription, and assigned recruiter respectively. OpenCATS job type (full-time, part-time, contract) maps to Crelate's employmentType. We preserve the original open_date and close_date as custom fields if the customer requires historical job timing data.
OpenCATS
Company
Crelate
Organization
1:1OpenCATS Companies map to Crelate Organizations. Company name, address fields, phone, website, and industry map directly. OpenCATS supports multiple departments and locations per company stored as separate rows; we map these to Crelate Organization location records. The company name is the dedupe key during import, and we resolve Organization IDs before inserting any related Person or Job records.
OpenCATS
Contact
Crelate
Contact
1:1OpenCATS Contact records (hiring managers and client contacts distinct from Candidates) map directly to Crelate Contacts. We extract name, title, company (linked to the Organization mapping), email, phone, and notes. Cold Call List entries from OpenCATS migrate as Crelate Contacts with a Cold Call List tag applied during import.
OpenCATS
Activity
Crelate
Activity
1:1OpenCATS Activity records (calls, emails, meetings, notes tied to Candidates and Job Orders) map to Crelate Activities. The activity type maps to Crelate's activityType, date maps to activityDate, and notes content maps to Crelate's notes field. We resolve the parent Person and Job references at migration time using the record IDs extracted from the OpenCATS database. Activity ordering is preserved by timestamp.
OpenCATS
Saved List
Crelate
Tag or List
lossyOpenCATS Saved Lists are user-curated candidate groupings stored as list membership records in the database. We extract every Saved List name and its member Candidate IDs, then recreate the list associations in Crelate as either Tags on Person records or as a Crelate List (Group). The customer chooses the target structure during scoping. List order and ranking do not transfer; we document the original ordering for manual reconstruction if needed.
OpenCATS
Attachment
Crelate
Document
1:1OpenCATS stores candidate resume files as filesystem paths on the server, not as database BLOBs. We extract every candidate_attachment record (file path, filename, file type) and produce a separate file-transfer manifest listing all resume paths and their associated Candidate IDs. The customer transfers files via SFTP to Crelate's document storage. We then re-link each file to the corresponding Crelate Person record by filename match. This is a two-step process requiring coordination between data migration and file transfer timelines.
OpenCATS
Calendar Event
Crelate
Event
1:1OpenCATS Calendar Events map to Crelate Events with event title, start time, end time, and description. Recurrence patterns and reminder settings do not transfer; OpenCATS stores these in a format that has no direct Crelate equivalent. We flag recurrence configurations for manual rebuild in Crelate's calendar settings.
OpenCATS
User / Recruiter
Crelate
User
1:1OpenCATS User accounts map to Crelate Users. We extract user_id, first_name, last_name, email, and role, matching by email against the destination Crelate User table. If the Crelate org is provisioned before migration, we validate that all OpenCATS users have matching Crelate accounts. Users without a Crelate match enter a reconciliation queue for the admin to provision. OpenCATS role-permission structures (admin, limited-access recruiter) map to Crelate permission roles, but the mapping is reviewed against Crelate's role model during scoping because permission structures differ between platforms.
OpenCATS
Report
Crelate
None
1:1OpenCATS Reports are not exportable artifacts. OpenCATS generates reports from live database queries at the moment of display; report definitions are not stored as separate objects. We do not migrate report definitions. We deliver a written list of every OpenCATS report the customer has accessed in the last 90 days with the query parameters and filter logic, so the customer's admin can recreate them in Crelate's reporting module post-migration.
OpenCATS
Custom Field
Crelate
Custom Field
lossyOpenCATS custom fields added by the customer to any core object (Candidate, Job Order, Company, Contact) are stored as columns in the MariaDB schema. We audit the full OpenCATS database schema before migration, identify every custom column, map it to the equivalent Crelate custom field, and configure the destination field before importing the related records. Crelate enforces limits on custom field counts by tier, which we surface during scoping. If the customer's custom field count exceeds the Business tier limit, we recommend Business Plus or Enterprise.
OpenCATS
Pipeline / Status Configuration
Crelate
Pipeline / Status Configuration
lossyOpenCATS Job Order status values (New, Open, On Hold, Cancelled, Filled) and custom status definitions map to Crelate Job Pipeline stages and status values. We extract the full status list from the OpenCATS database and recreate it as Crelate Pipelines and Stages during the schema setup phase before any record import begins. Stage probability values (if configured in OpenCATS) migrate as Crelate stage weights.
| OpenCATS | Crelate | Compatibility | |
|---|---|---|---|
| Candidate | Person1:1 | Fully supported | |
| Job Order | Job1:1 | Fully supported | |
| Company | Organization1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Activity | Activity1:1 | Fully supported | |
| Saved List | Tag or Listlossy | Fully supported | |
| Attachment | Document1:1 | Fully supported | |
| Calendar Event | Event1:1 | Fully supported | |
| User / Recruiter | User1:1 | Fully supported | |
| Report | None1:1 | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| Pipeline / Status Configuration | Pipeline / Status Configurationlossy | 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.
OpenCATS gotchas
No REST API forces database-direct migration
Resume files are filesystem references, not embedded blobs
One-week import review delay in OpenCATS native imports
MySQL is unsupported — MariaDB is required
Crelate gotchas
120 req/min API rate limit throttles bulk migrations
20 custom field per-entity cap forces data model decisions
15,000-record export ceiling on single operations
Sequences and automation workflows do not migrate
API key is a querystring parameter, not a header
Pair-specific challenges
Migration approach
Discovery and database access setup
We audit the source OpenCATS MariaDB database by querying information_schema for all custom fields, then run record-count queries across Candidates, Job Orders, Companies, Contacts, Activities, Saved Lists, Calendar Events, and Attachments. We also query the opencandidates.settings table for any custom status configurations and the report_history table for recent report access. The customer provides MariaDB credentials and confirms port accessibility from our migration environment. We verify the database engine is MariaDB 10.6+ and flag any MySQL-only SQL dialect in custom field definitions. The discovery output is a written migration scope, record-count estimate, and a Crelate tier recommendation based on the custom field count.
Schema extraction and mapping design
We extract the full OpenCATS schema including all core tables and custom columns, then design the Crelate destination schema. This includes creating any custom fields on Person, Job, Organization, and Contact that do not exist in the Crelate default schema, configuring Job Pipelines and Stages to match the OpenCATS status list, and mapping the Saved List structure to either Tags or Lists in Crelate. We validate the schema design against Crelate's API field types before any data moves.
Resume file manifest and SFTP coordination
We extract every candidate_attachment record from the OpenCATS database, producing a manifest listing each file path, filename, file type, and the associated Candidate ID. The customer reviews the manifest and initiates the SFTP transfer of resume files to Crelate's document storage. We do not transfer the files ourselves; the customer manages the file-transfer step. Once the transfer is confirmed complete, we re-link each file to the migrated Crelate Person record by matching filename against the manifest.
Test migration and reconciliation
We run a full migration into a Crelate test environment using production-like data volume. The customer's recruiting lead spot-checks 25-50 randomly selected records across Candidates, Jobs, Organizations, and Contacts, comparing field values against the OpenCATS source. Any mapping corrections — wrong status values, missing custom fields, incorrectly resolved parent lookups — are documented and applied before the production migration begins. Owner matching (OpenCATS recruiter to Crelate User by email) is validated in the test environment.
Production migration in dependency order
We run production migration in record-dependency order: Organizations first (from Companies), then Jobs (from Job Orders), then Persons (from Candidates with Organization lookups resolved), then Contacts, then Activities. Each phase emits a row-count reconciliation report before the next phase begins. Saved Lists are processed after Candidates using the Tag or List mapping agreed during scoping. Resume files are re-linked after the Person import is complete and file transfer is confirmed. User mapping is validated during the Person import because assigned_recruiter is a required field on Job records.
Cutover, validation, and Saved List rebuild handoff
We freeze new OpenCATS writes during the cutover window, run a final delta migration of any records modified during the migration window, then enable Crelate as the system of record. We deliver the Saved List inventory document (list names, member counts, most-recent candidates) and the Report rebuild document (report names, query parameters, recommended Crelate rebuild steps) to the customer's admin. We support a one-week post-migration window to resolve any data quality issues. We do not rebuild Saved Lists or Reports inside the migration scope; these are delivered as written inventories for the admin to reconstruct.
Platform deep dives
OpenCATS
Source
Strengths
Weaknesses
Crelate
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. 1 of 7 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across OpenCATS and Crelate.
Object compatibility
1 of 7 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
7-object category — typical timelines run 2–7 days end-to-end.
API constraints
OpenCATS: Not applicable — no public API.
Data volume sensitivity
OpenCATS 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 OpenCATS to Crelate migration scoping. Not seeing yours? Book a call.
Walk through your OpenCATS to Crelate migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave OpenCATS
Other ways to arrive at Crelate
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.