HRMS migration
Field-level mapping, validation, and rollback between JOIN and Crelate. We move data and schema; workflows are rebuilt natively in Crelate.
JOIN
Source
Crelate
Destination
Compatibility
9 of 12
objects map 1:1 between JOIN and Crelate.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from JOIN to Crelate is a shift from a job-distribution-first ATS to a recruiting CRM that combines applicant tracking with relationship management. JOIN structures its data around Jobs as the parent container with Candidates and Applications as children; Crelate uses a unified Contact object that consolidates candidate profile, communication history, and pipeline activity in one record. We extract JOIN's candidate records and map them to Crelate Contacts, map JOIN Job postings to Crelate Jobs, and resolve the Application relationship through Crelate's pipeline stage model. JOIN's activity timeline (email threads, scheduled interviews, call logs) cannot be retrieved via API — we flag this at scoping, ingest a manual CSV export from the JOIN dashboard, and attach it as notes or linked documents in Crelate so the timeline survives cutover. Workflows, email sequences, and job board credits do not migrate; we deliver a written inventory of automations requiring rebuild in Crelate's workflow builder.
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 JOIN 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.
JOIN
Job
Crelate
Job
1:1JOIN Job records map directly to Crelate Job postings. We extract title, description, department, location, employment type, and posting status. JOIN's internal job ID becomes a Crelate custom field for cross-reference. Job posting distribution settings (the 250+ board network) do not transfer because Crelate handles posting through its own career portal and optional distribution partners; we document the original posting channels as a text field so the customer can re-establish distribution in Crelate manually or via a third-party distributor.
JOIN
Candidate
Crelate
Contact
1:1JOIN Candidate records map to Crelate Contact. Standard fields (name, email, phone, address, work history, education, skills) migrate 1:1. Source attribution and lifecycle stage transfer to Crelate's candidate status fields. JOIN custom fields on Candidates are subject to Crelate's 20-custom-field-per-entity cap; we flag anyJOIN custom fields exceeding this limit at scoping and either compress them into structured picklists or land them as free-text notes for post-migration re-entry.
JOIN
Application
Crelate
Job Application (linked to Contact and Job)
1:1JOIN Application records link a Candidate to a Job with applied date, referral source, and rejection/offer flags. We resolve the parent Contact and Job references during migration and attach the Application as a pipeline entry on the Crelate Job. Applied date and referral source migrate as metadata on the pipeline stage entry. Applications in rejected or offer stages preserve those statuses as Crelate stage entries with timestamp metadata.
JOIN
Pipeline Stage
Crelate
Pipeline Stage
lossyJOIN exposes stage names (Screening, Interview, Offer, and custom stages per job) that vary by plan and by job. We extract the full stage list per job during the scan phase and build a customer-specific mapping table. Where Crelate's pipeline template has fewer stages, we collapse intermediate stages and preserve stage-entry dates as metadata so timing context is not lost. The customer approves the stage mapping before any pipeline data loads.
JOIN
Scorecards and Interview Feedback
Crelate
Notes or Custom Fields on Contact
1:1Structured interview evaluations and free-text feedback stored in JOIN transfer to Crelate as Notes attached to the Contact record or as custom fields if the destination template supports typed feedback fields. Where the customer uses Crelate's custom question forms, we flatten the JSON evaluation data into readable text and attach it to the relevant Contact as a note for recruiter review during the hiring process.
JOIN
Custom Fields on Jobs
Crelate
Custom Fields on Job
1:1JOIN employer-defined custom fields on Jobs map to Crelate custom fields on the Job object. Crelate enforces a maximum of 20 custom fields per entity, and the Job object is included in this limit. We extract all JOIN Job custom fields during scoping, assess which fall within the 20-field cap, and surface any overflow to the customer for prioritisation before migration begins.
JOIN
Custom Fields on Candidates
Crelate
Custom Fields on Contact
1:1JOIN custom fields on Candidates map to Crelate custom fields on Contact. Field types (Short Answer, Picklist, Date, Numeric, Monetary) are mapped to equivalent Crelate field types during the transform phase. If the total exceeds the 20-field cap, we compress low-value fields into a structured note or deferred re-entry list. Picklist values from JOIN transfer as Crelate picklist options; the customer confirms the picklist configuration during scoping.
JOIN
Attachments and Resume Files
Crelate
Resume and Documents on Contact
1:1Candidate resume files and supporting documents export from JOIN and upload to Crelate as linked file references on the Contact record. JOIN filenames are derived from internal IDs and require normalisation to a consistent convention (CandidateName_JobTitle_Date) to prevent collisions and ensure files are identifiable after ingestion. We apply this normalisation during the export phase before bulk upload to Crelate's document storage.
JOIN
Activity and Communication History
Crelate
Notes on Contact
1:1JOIN does not expose email threads, scheduled interview events, or call log entries through a documented API endpoint. We cannot retrieve this data programmatically. During scoping we flag this gap and instruct the customer to export the activity timeline as a CSV from the JOIN dashboard. We ingest this CSV alongside the API extract and attach the activity history as Notes or a linked document on the Crelate Contact record so that the timeline context survives cutover. The customer must perform the CSV export before the migration date.
JOIN
Owner
Crelate
User
1:1JOIN Owners map to Crelate Users. We resolve Owners by email match against the destination Crelate User table. Any JOIN Owner without a matching Crelate User is held in a reconciliation queue, and the customer's admin provisions the missing User before record import resumes. Inactive JOIN Owners map to inactive Crelate Users to preserve historical attribution.
JOIN
Jobs (department and location metadata)
Crelate
Company (for agency clients)
lossyFor agency recruiting workflows where Jobs represent client engagements rather than internal hires, JOIN Job records map to Crelate Company or Opportunity records in addition to Crelate Job. The customer specifies during scoping whether the migration follows an internal hiring model (Job as requisition) or an agency model (Job as client engagement with candidates as contacts on the client Company record). We configure the mapping accordingly before any data loads.
JOIN
Referral Source
Crelate
Custom Field on Contact or Application
lossyJOIN's referral source field on Applications (indicating where the candidate heard about the role) migrates as a custom picklist field on the Crelate Contact or as metadata on the Application entry. The customer confirms the preferred landing during scoping. If Crelate's standard source tracking fields are available in the destination plan, we map to those instead of a custom field.
| JOIN | Crelate | Compatibility | |
|---|---|---|---|
| Job | Job1:1 | Fully supported | |
| Candidate | Contact1:1 | Fully supported | |
| Application | Job Application (linked to Contact and Job)1:1 | Fully supported | |
| Pipeline Stage | Pipeline Stagelossy | Fully supported | |
| Scorecards and Interview Feedback | Notes or Custom Fields on Contact1:1 | Mapping required | |
| Custom Fields on Jobs | Custom Fields on Job1:1 | Fully supported | |
| Custom Fields on Candidates | Custom Fields on Contact1:1 | Fully supported | |
| Attachments and Resume Files | Resume and Documents on Contact1:1 | Mapping required | |
| Activity and Communication History | Notes on Contact1:1 | Not supported | |
| Owner | User1:1 | Fully supported | |
| Jobs (department and location metadata) | Company (for agency clients)lossy | Fully supported | |
| Referral Source | Custom Field on Contact or Applicationlossy | 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.
JOIN gotchas
Activity log and communication history are not exported via JOIN API
Pipeline stage names vary per job and per plan
Custom fields on Candidates require manual equivalence review
Resume and attachment export format is non-standard
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 scoping call
We audit the JOIN portal to capture job count, candidate volume, application count, per-job stage sequences, custom field schema (counted per entity), attachment file count and total size, and owner list. We run a JOIN API read test to confirm extraction coverage and identify any entities that return incomplete records. The discovery output is a written migration scope document that includes the stage mapping table, the custom field overflow assessment against Crelate's 20-field cap, and the activity timeline gap (with instructions for the CSV export). The customer approves the scope before scheduling the migration.
JOIN activity CSV preparation
We provide the customer with written instructions to export the activity timeline from the JOIN dashboard as a structured CSV. The export must include candidate ID, activity type (email, call, interview, note), timestamp, and content. We ingest the CSV into our staging environment and validate row count and column coverage before proceeding. If the customer cannot produce the CSV, we document the gap in the migration sign-off and proceed without the activity history, attaching a migration note to each Contact record indicating that the timeline requires manual re-entry in Crelate.
Schema design and Crelate configuration
We design the destination schema in Crelate. This includes creating custom fields on Job and Contact to match JOIN's schema, configuring pipeline stages and stage templates, setting up any agency-model Company and Opportunity records if applicable, and confirming the custom field count per entity stays within the 20-field cap. Schema changes deploy into the Crelate environment before any data loads. We validate the Crelate API connection and confirm the 120 req/min rate limit behaviour with a test batch of 100 records.
Sandbox migration and reconciliation
We run a full migration into a Crelate test environment using production data volume. The customer reviews a random sample of 30-50 migrated records across Jobs, Candidates, Applications, and Pipeline Stages, checking field accuracy, stage assignment, and attachment visibility. Any mapping corrections (field type mismatches, stage mapping errors, custom field overflow) are resolved here before the production migration window opens. The customer signs off on the sandbox output before we schedule the production cutover.
Owner reconciliation and User provisioning
We extract every distinct JOIN Owner referenced on Candidate, Application, and Job records and match by email against the destination Crelate User table. Owners without a matching Crelate User enter a reconciliation queue. The customer's Crelate admin provisions any missing Users (active or inactive depending on whether the original JOIN user is still active). Migration cannot proceed past the User provisioning step because OwnerId references are required on most Crelate entity imports.
Production migration in dependency order
We run the production migration in record-dependency order: Jobs (parent entities), Contacts (from JOIN Candidates), Job Applications (with Contact and Job lookups resolved), Pipeline stage entries (per-job mapping applied), Custom Fields (with overflow handling applied), Attachments (with normalised filenames, chunked for the 120 req/min limit), and the manual activity CSV attached as Notes on the relevant Contact records. Each phase emits a row-count reconciliation report. We freeze JOIN writes during the cutover window and run a final delta migration of any records modified during the window before switching Crelate to system-of-record status.
Cutover, validation, and automation inventory handoff
We enable Crelate as the system of record after the delta migration confirms zero new records in JOIN during the cutover window. We deliver a written inventory of any JOIN automations, workflows, or job board distribution settings that do not migrate, with a rebuild recommendation for Crelate's workflow builder. We support a five-business-day hypercare window to resolve reconciliation issues raised by the recruiting team. Post-migration admin support, Crelate workflow rebuild, and team training are outside standard migration scope and are available as separate engagements.
Platform deep dives
JOIN
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 JOIN 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
JOIN: Not publicly documented.
Data volume sensitivity
JOIN 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 JOIN to Crelate migration scoping. Not seeing yours? Book a call.
Walk through your JOIN 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 JOIN
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.