HRMS migration
Field-level mapping, validation, and rollback between OpenCATS and Recruit CRM & ATS. We move data and schema; workflows are rebuilt natively in Recruit CRM & ATS.
OpenCATS
Source
Recruit CRM & ATS
Destination
Compatibility
8 of 10
objects map 1:1 between OpenCATS and Recruit CRM & ATS.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Migrating from OpenCATS to Recruit CRM moves your recruiting data from a self-hosted MariaDB instance to a cloud-native recruitment platform with a documented REST API. OpenCATS has no REST API, so we connect directly to the MariaDB database to extract Candidates, Job Orders, Companies, Contacts, Activity logs, and Saved List memberships, or we use CSV exports as a fallback. Resume files are filesystem references rather than database blobs, so we flag every file path and coordinate a separate SFTP transfer to preserve document attachments. Recruit CRM's candidate-centric data model maps well to OpenCATS structures, but automation rules, custom reports, and user-role permissions do not migrate; we deliver a written inventory of every workflow and saved report for the customer's admin to rebuild in Recruit CRM. The migration timeline typically spans four to eight weeks from discovery through cutover.
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 Recruit CRM & ATS, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
OpenCATS
Candidate
Recruit CRM & ATS
Candidate Record
1:1OpenCATS Candidate records map directly to Recruit CRM talent records. We extract first name, last name, email, phone, current company, current title, source, and all skill tags from the candidate_skill join table. OpenCATS stores skills as a many-to-many tag relationship rather than parsed resume fields; we flatten these into Recruit CRM's tag or skill field using a delimiter-separated string. Candidate status values map to Recruit CRM status options (Active, Passive, Placed, Rejected) based on the mapping agreed during discovery.
OpenCATS
Job Order
Recruit CRM & ATS
Job
1:1OpenCATS Job Orders map to Recruit CRM Job records. The job order title, description, status, openings count, assigned recruiter, and client company all transfer cleanly. OpenCATS job order status values (Opened, On Hold, Completed, Canceled) map to Recruit CRM status equivalents. We preserve the internal job order ID as a custom reference field so the customer's team can cross-reference the migration audit log back to the original OpenCATS record.
OpenCATS
Company
Recruit CRM & ATS
Client
1:1OpenCATS Company records map to Recruit CRM Client records. The company name, industry, website, address, and any notes transfer as standard fields. OpenCATS supports multiple locations and departments per company stored in separate address records; we flatten the primary address into the client record and hold additional locations in a structured CSV for the customer to review post-migration.
OpenCATS
Contact
Recruit CRM & ATS
Contact
1:1OpenCATS Contact records (hiring managers and client-side individuals) map to Recruit CRM Contacts. The contact's name, title, email, phone, and associated company link transfer as direct field mappings. OpenCATS Cold Call List entries are a subtype of Contact; we map them to standard Contact records with a cold_call_list flag custom field set to true.
OpenCATS
Activity Log
Recruit CRM & ATS
Activity / Note
1:1OpenCATS Activity records (calls, emails, meetings, notes logged against Candidates and Job Orders) map to Recruit CRM Activity or Note entries. Activity type determines the destination object: calls and tasks map to Activity, email logs and general notes map to Note. We preserve the activity date, description, and associated candidate or job order ID as lookup references. Activity history volume is assessed during discovery; large histories (over 100,000 entries) may require staged migration with chunking.
OpenCATS
Saved List
Recruit CRM & ATS
Candidate List / Tag
lossyOpenCATS Saved Lists are user-curated candidate groupings with no native equivalent in Recruit CRM's standard model. We extract list membership (candidate ID plus list name) and recreate associations as Recruit CRM candidate lists or tags depending on the customer's preference. List ordering and ranking within a list may not transfer; we document the original ordering as a separate CSV for manual reconstruction if ranking is business-critical.
OpenCATS
User / Recruiter
Recruit CRM & ATS
User
1:1OpenCATS User accounts with their name, email, and role map to Recruit CRM User accounts. We match by email address. Role-permission structures differ substantially between OpenCATS and Recruit CRM, so we map active users to the nearest Recruit CRM role (Admin, Standard User, Read-Only) and flag any users requiring a specific permission for the customer's admin to configure post-migration.
OpenCATS
Resume File (filesystem path)
Recruit CRM & ATS
Resume Document
1:1OpenCATS stores resume files as filesystem paths on the server disk, not as database BLOBs. We flag every candidate record with a resume file reference and provide a structured file list (candidate ID, original file path, filename) for the customer to transfer via SFTP to Recruit CRM. We then map the transferred file to the corresponding candidate record using the original filename and candidate name as the dedupe key. If the original file structure is not preserved during transfer, filename-matching fallback is used.
OpenCATS
Calendar Event
Recruit CRM & ATS
Event / Activity
1:1OpenCATS Calendar Events with title, start datetime, end datetime, location, and associated candidate or job order map to Recruit CRM Events or Activities. Recurrence patterns and reminder settings are not preserved; we note the original recurrence pattern in a custom field for manual reconstruction. Events without an associated candidate or job order are held in a queue for the customer to re-link post-migration.
OpenCATS
Custom Field (OpenCATS extension)
Recruit CRM & ATS
Custom Field
lossyOpenCATS installations commonly add custom fields to Candidate, Job Order, and Company records via the database schema. We audit the OpenCATS database for non-standard columns during discovery, map each to a Recruit CRM custom field of the appropriate type (text, number, date, picklist, checkbox), and create the destination schema before migration. Custom field logic such as conditional display rules does not transfer; we note these for the customer to reconfigure in Recruit CRM's field settings.
| OpenCATS | Recruit CRM & ATS | Compatibility | |
|---|---|---|---|
| Candidate | Candidate Record1:1 | Fully supported | |
| Job Order | Job1:1 | Fully supported | |
| Company | Client1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Activity Log | Activity / Note1:1 | Fully supported | |
| Saved List | Candidate List / Taglossy | Fully supported | |
| User / Recruiter | User1:1 | Fully supported | |
| Resume File (filesystem path) | Resume Document1:1 | Fully supported | |
| Calendar Event | Event / Activity1:1 | Fully supported | |
| Custom Field (OpenCATS extension) | Custom Fieldlossy | 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
Recruit CRM & ATS gotchas
API rate limits are license-scaled and can throttle bulk migration
Custom field schemas vary per organization and require field-level mapping
Files and email attachments require separate extraction and re-upload
Email sequences and automation logic do not transfer between platforms
Pair-specific challenges
Migration approach
Discovery and data inventory
We audit the OpenCATS MariaDB database to inventory all tables, identify non-standard custom fields, assess data volume per object (Candidates, Job Orders, Companies, Contacts, Activities), and identify the database engine version. We also inventory resume file paths from the filesystem, Saved List membership tables, and Calendar Event records. If the database is unreachable directly, we coordinate CSV list exports from OpenCATS as a fallback and document which objects lose Activity history and custom field coverage as a result. The discovery output is a written data inventory, a field-level mapping draft, and a migration feasibility assessment.
Schema pre-creation in Recruit CRM
Before any data moves, we create the destination schema in Recruit CRM. This includes creating any custom fields on Candidate, Job, and Client records to receive OpenCATS custom fields. We configure the candidate status and job order status value sets to match the OpenCATS enumerations agreed during discovery. We provision Recruit CRM users for each OpenCATS user account and assign the nearest role (Admin or Standard). User accounts are matched by email; any OpenCATS user without an email match goes to a reconciliation queue for the customer's admin to provision.
File transfer coordination
We provide the customer with a structured file manifest listing every candidate record with a resume file path, the source file location, and the filename. The customer transfers all resume files to a staging location accessible via SFTP. We verify file count against the manifest and flag any missing or unreadable files. Resume files are then linked to their corresponding candidate records in Recruit CRM using filename and candidate name as the dedupe key. This step runs in parallel with the data extraction to minimize total migration time.
Data extraction, transformation, and staging
We run extraction queries against the OpenCATS MariaDB database in dependency order: Companies first (no dependencies), then Contacts and Candidates (depend on Companies for the client link), then Job Orders (depend on Companies and Contacts), then Activities (depend on Candidates and Job Orders), then Saved List memberships (depend on Candidates). Each object is transformed using the agreed mapping, deduplicated against the dedupe strategy chosen by the customer, and staged in CSV or JSON format for Recruit CRM API import. We flag any unmapped fields for customer review and document them in the migration audit log.
Recruit CRM API import with reconciliation
We import staged records into Recruit CRM using the Recruit CRM REST API with rate-limit handling and batch chunking. Records are imported in dependency order to satisfy required lookups (Company must exist before a Candidate with a company link can be created). After each object import, we reconcile row counts between the staging file and the Recruit CRM record count, spot-check ten to twenty records against the source for field-level accuracy, and resolve any import errors (type mismatches, required-field gaps, duplicate rejections) before proceeding to the next object. Large Activity history imports are chunked by date range to stay within Recruit CRM's API throughput.
Cutover, delta sync, and handoff
We freeze writes to OpenCATS during the cutover window, run a final delta migration to capture any records modified during the migration window, then hand control to the Recruit CRM system as the system of record. We deliver a migration completion report with record counts per object, a list of any records skipped with reasons, and the Saved List membership CSV for manual reconstruction. We provide a one-week hypercare window to resolve any data quality issues raised by the customer's team. Workflow, automation, and report rebuilding are outside standard scope; we deliver a written inventory of any OpenCATS reports or custom modules as a separate document for the customer's admin to address.
Platform deep dives
OpenCATS
Source
Strengths
Weaknesses
Recruit CRM & ATS
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 Recruit CRM & ATS.
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 Recruit CRM & ATS migration scoping. Not seeing yours? Book a call.
Walk through your OpenCATS to Recruit CRM & ATS 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 Recruit CRM & ATS
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.