HRMS migration

Migrate from OpenCATS to Recruit CRM & ATS

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 logo

OpenCATS

Source

Recruit CRM & ATS

Destination

Recruit CRM & ATS logo

Compatibility

80%

8 of 10

objects map 1:1 between OpenCATS and Recruit CRM & ATS.

Complexity

BStandard

Timeline

4-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

OpenCATS logo

OpenCATS

What's pushing teams away

  • Missing modern ATS essentials — no built-in interview scheduling, candidate assessments, or background-check integrations.
  • Security concerns: MD5 password hashing is a documented vulnerability that fails modern security audits.
  • Steep installation and admin learning curve — non-technical teams struggle to stand it up without IT or DevOps help.
  • No bulk-recruiting features — high-volume teams find the per-record workflow prohibitive at scale.
  • No native calendar integration — OpenCATS cannot sync with Google Calendar, Outlook, or any external calendar system, forcing manual coordination outside the tool.

Choosing

Recruit CRM & ATS logo

Recruit CRM & ATS

What's pulling them in

  • Agencies choose Recruit CRM for its full customizability — pipelines, stages, and fields can be tailored to any recruitment workflow without developer involvement.
  • Small teams value the built-in CRM and ATS combined in one subscription, eliminating the need to purchase and sync separate systems.
  • The Chrome extension for one-click LinkedIn profile collection streamlines candidate sourcing and reduces manual data entry for recruiters.
  • Responsive customer support with fast issue resolution is consistently cited as a reason teams stick with the platform long-term.
  • Automation options including email sequences and workflow triggers allow recruitment agencies to reduce repetitive manual outreach tasks.

Object mapping

How OpenCATS objects map to Recruit CRM & ATS

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

maps to

Recruit CRM & ATS

Candidate Record

1:1
Fully supported

OpenCATS 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

maps to

Recruit CRM & ATS

Job

1:1
Fully supported

OpenCATS 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

maps to

Recruit CRM & ATS

Client

1:1
Fully supported

OpenCATS 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

maps to

Recruit CRM & ATS

Contact

1:1
Fully supported

OpenCATS 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

maps to

Recruit CRM & ATS

Activity / Note

1:1
Fully supported

OpenCATS 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

maps to

Recruit CRM & ATS

Candidate List / Tag

lossy
Fully supported

OpenCATS 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

maps to

Recruit CRM & ATS

User

1:1
Fully supported

OpenCATS 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)

maps to

Recruit CRM & ATS

Resume Document

1:1
Fully supported

OpenCATS 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

maps to

Recruit CRM & ATS

Event / Activity

1:1
Fully supported

OpenCATS 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)

maps to

Recruit CRM & ATS

Custom Field

lossy
Fully supported

OpenCATS 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.

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.

OpenCATS logo

OpenCATS gotchas

High

No REST API forces database-direct migration

Medium

Resume files are filesystem references, not embedded blobs

Low

One-week import review delay in OpenCATS native imports

Medium

MySQL is unsupported — MariaDB is required

Recruit CRM & ATS logo

Recruit CRM & ATS gotchas

High

API rate limits are license-scaled and can throttle bulk migration

Medium

Custom field schemas vary per organization and require field-level mapping

Medium

Files and email attachments require separate extraction and re-upload

Low

Email sequences and automation logic do not transfer between platforms

Pair-specific challenges

  • No REST API on OpenCATS requires database-direct or CSV extraction

    OpenCATS exposes no documented API. All data lives in a MariaDB database on the self-hosted server. We connect directly to that database to extract Candidates, Job Orders, Companies, Contacts, Activities, and Saved Lists. The customer must provide database credentials, confirm port accessibility (default 3306), and ensure the server is reachable from our migration environment via VPN or allowlisted IP. If the OpenCATS server is on a private network or behind a firewall, additional configuration is required to establish the connection securely before migration scoping can begin. As a fallback, we can use OpenCATS CSV list exports for the primary objects, but CSV exports do not include Activity history, Saved List memberships, or custom fields, making database access the preferred path.

  • Resume files are filesystem references, not embedded data

    Candidate resume files in OpenCATS are stored as absolute file paths on the server disk (e.g., /var/www/opencats/uploads/resume_1234.pdf), not as database blobs. We extract all candidate text fields cleanly, but the actual resume files must be transferred separately. We provide a complete file inventory (candidate ID, original path, filename) and coordinate an SFTP or file-share transfer. If the customer copies files without preserving the directory structure, filename-based re-linking is the fallback. We recommend completing the file transfer before cutover so that candidate records in Recruit CRM are immediately complete and do not require manual re-upload.

  • Duplicate candidate records require pre-migration analysis and dedupe

    OpenCATS environments frequently contain duplicate candidate records due to repeated CV imports, manual data entry, or multi-user import without deduping. Recruit CRM applies its own duplicate detection on email during import, which may reject or flag records that the customer considers unique. We run a duplicate analysis against the OpenCATS database before migration, produce a dedupe report grouped by email and name similarity, and present the customer with options: merge before migration, allow Recruit CRM's duplicate detection to handle it, or import all and resolve post-migration. The chosen strategy is confirmed before the production migration run.

  • Saved Lists, Reports, and Automation rules do not migrate as code

    OpenCATS Saved Lists are exported as membership records that we recreate in Recruit CRM, but the saved report definitions (generated by OpenCATS's report engine from live data) are not exportable artifacts. We do not migrate report definitions. OpenCATS has no native workflow automation engine, so there is no automation configuration to inventory; however, if the customer has added community-contributed automation modules, we document them separately as a courtesy. Recruit CRM's automated workflows are configured fresh post-migration by the customer's admin. We deliver a written inventory of any OpenCATS reports and custom modules identified during discovery.

  • MariaDB required — MySQL is unsupported in OpenCATS

    OpenCATS explicitly requires MariaDB 10.6 or compatible and does not support MySQL due to dialect divergence. Older self-hosted installations may be running MySQL. We identify the database engine during the initial connection check and flag any MySQL-specific SQL syntax that may cause export query failures before running migration scripts. If the customer is on MySQL, we recommend migrating to MariaDB on the source side before migration or adjust our export queries to a compatible SQL subset.

Migration approach

Six steps for a successful OpenCATS to Recruit CRM & ATS data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

OpenCATS logo

OpenCATS

Source

Strengths

  • Zero-cost, zero-vendor-commitment ATS for teams validating recruiting workflows
  • Full database schema is self-hosted — you own all data with no extraction fees
  • Customizable branding, modules, and company logo for client-facing job boards
  • Skill tagging and list-building replace the deprecated resume parser for candidate categorization
  • Community forum and GitHub repository for self-service troubleshooting and code customization

Weaknesses

  • No official API — migrations require direct MariaDB access or CSV list exports, not real-time sync
  • MySQL is explicitly unsupported; MariaDB is required, which complicates some hosting environments
  • Resume parsing was removed from the core product; users rely on manual skill tagging instead
  • Self-administered hosting means you own security patching, backups, and server maintenance
  • Community-supported only — no SLA, no dedicated support tier, no guaranteed response times
Recruit CRM & ATS logo

Recruit CRM & ATS

Destination

Strengths

  • Fully customizable pipelines, stages, and fields without requiring developer involvement
  • Combines recruitment CRM and ATS in one subscription for staffing agencies and small teams
  • Built-in email sequences and automation reduce manual outreach work
  • Chrome extension enables one-click LinkedIn profile collection directly into the CRM
  • Responsive customer support cited across multiple reviews with fast resolution times

Weaknesses

  • Several features are gated as paid add-ons rather than included in the base subscription
  • Email functionality has been reported as unreliable by multiple users
  • Interface occasionally lags during high-activity periods in large pipelines
  • Pricing is considered higher than comparable recruitment CRMs by some customers
  • Limited native reporting — users request pre-made report exports rather than manual data pulls

Complexity grading

How hard is this migration?

Standard HRMS migration. 1 of 7 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 OpenCATS and Recruit CRM & ATS.

  • Object compatibility

    B

    1 of 7 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

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

  • API constraints

    B

    OpenCATS: Not applicable — no public API.

  • Data volume sensitivity

    B

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

Estimator

Estimate your OpenCATS to Recruit CRM & ATS 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 OpenCATS to Recruit CRM & ATS data migrations

Answers to the questions buyers ask most during OpenCATS to Recruit CRM & ATS migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most OpenCATS to Recruit CRM migrations complete in four to six weeks for accounts with under 10,000 Candidates, 2,000 Job Orders, and 1,000 Companies. The database-extraction phase and file transfer coordination are the primary time drivers. Migrations with large Activity histories (over 200,000 records), extensive custom field sets, multiple Saved Lists requiring membership recreation, or concurrent parallel-system usage extend to seven to ten weeks. The discovery and schema-design phase takes one to two weeks regardless of size.

Adjacent paths

Related migrations to explore

Ready when you are

Move from OpenCATS.
Land in Recruit CRM & ATS, 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