HRMS migration
Field-level mapping, validation, and rollback between ZingHR and Crelate. We move data and schema; workflows are rebuilt natively in Crelate.
ZingHR
Source
Crelate
Destination
Compatibility
8 of 12
objects map 1:1 between ZingHR and Crelate.
Complexity
BStandard
Timeline
2-3 weeks
Overview
Moving from ZingHR to Crelate is a scoped recruitment-data migration, not a full HRMS replacement. ZingHR's Hire-to-ReHire module stores candidate pipelines, onboarding tasks, and recruitment activity as part of its broader employee lifecycle, while Crelate is a dedicated ATS that structures candidates as Contacts, hiring companies as Companies, and open roles as Jobs. We extract active candidate records, job postings, and recruiting activity from ZingHR, transform them into Crelate's Contact, Company, and Job schema, and handle the lookup resolution between candidate records and their associated company. Crelate's API authentication uses a querystring API key with specific field-type constraints, so we validate field types before every insert and flag any records missing required attributes. We do not migrate ZingHR payroll, attendance, leave balances, or performance reviews because those are HRMS data with no Crelate equivalent. We deliver a written inventory of ZingHR custom employee attributes for your admin to re-create as Crelate custom fields post-migration.
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 ZingHR 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.
ZingHR
Employee (Recruitment module)
Crelate
Contact
1:1ZingHR employees in the Talent Acquisition module (candidates, applicants, and hire-stage records) map to Crelate Contact records. The ZingHR employee name, email, phone, and address fields map to Crelate's corresponding Contact fields. We distinguish between external candidates (new applicants) and internal candidates (existing employees applying for new roles) by evaluating the ZingHR EmployeeType and source fields. Internal candidates are flagged with a custom Crelate field internal_candidate__c for recruiter filtering. If ZingHR stores recruiting stage as a custom property, we map it to Crelate's tag-based pipeline stage.
ZingHR
Employee.Department
Crelate
Company
1:1ZingHR's department and cost-center structure does not map directly to Crelate Company records because Crelate Company represents a client organization in the recruiting context, not an internal department. For organizations using ZingHR to track client-candidate relationships (staffing agencies), we extract the ZingHR department name associated with each candidate as a reference string and create or match it against a Crelate Company record. For corporate HR teams migrating internal recruitment, the department is stored as a custom Contact field department__c rather than a Company lookup.
ZingHR
Recruitment.JobPosting
Crelate
Job
1:1Active job postings in ZingHR map to Crelate Job records. The ZingHR job title, job code, job description, and location map to Crelate Job.Name, Job.Title, Job.Description, and Job.Location. We extract the ZingHR job status (open, closed, on-hold) and map it to Crelate Job.IsActive. Positions without a defined location in ZingHR receive a location value of TBD and are flagged for the recruiter to complete in Crelate before publishing.
ZingHR
Recruitment.PipelineStage
Crelate
Pipeline Stage (tag or status)
lossyZingHR's recruitment pipeline stages (Applied, Screening, Interview, Offer, Hired, Rejected) map to Crelate pipeline stages. Crelate uses a tag-based pipeline model rather than a fixed stage field. We create tag categories in Crelate matching the ZingHR stage names and assign the appropriate tag to each Contact record during migration. The customer selects the pipeline template (Standard, Technical, Executive, or custom) during scoping.
ZingHR
Recruitment.OnboardingTask
Crelate
Task
1:manyZingHR onboarding tasks and checklists attached to a candidate map to Crelate Task records linked to the Contact. Each ZingHR onboarding task item becomes a Task with Body set to the task name, Status set to Open (or Completed if ZingHR marks it done), and ActivityDate set to the due date from ZingHR. Parent-record resolution links each Task to the migrated Contact ID in Crelate. Tasks without a due date receive a placeholder date and are flagged in the reconciliation report.
ZingHR
Recruitment.Activity
Crelate
Activity (Note, Task, or Event)
1:1ZingHR recruitment activities including interview schedules, recruiter notes, and communication logs map to Crelate Activity records. Interview events map to Crelate Event with StartDateTime and Location. Recruiter notes and call logs map to Crelate Note or Task depending on whether a follow-up action is attached. We preserve the original ZingHR activity timestamp as Crelate's ActivityDate for timeline ordering. Communication-type activities from ZingHR map to Crelate Note attached to the Contact.
ZingHR
Custom Fields (Attribute Master API)
Crelate
Custom Fields (Contacts, Companies, Jobs)
lossyZingHR's Attribute Master API exposes company-specific custom fields on employee records. We enumerate all custom attributes during scoping, map them to Crelate custom fields on the appropriate entity (Contacts, Companies, or Jobs), and handle Crelate field-type validation. Crelate requires that date fields cannot map to monetary fields; we validate type compatibility during the transform phase. The customer's admin confirms custom field creation in Crelate before migration so that target field IDs are available for the import.
ZingHR
Employee.Tags or Category
Crelate
Tag (Default category or custom category)
lossyZingHR custom categories and tags on employee records (e.g., skill tags, source tags, clearance levels) map to Crelate Tags. The default tag category in Crelate is referenced with the key Default, and custom tag categories are created to match ZingHR's category names. Tags are stored as a tags object in Crelate's API with keys corresponding to category names and values as arrays of tag strings. We enumerate tag values during scoping and resolve them against Crelate's tag catalog during import.
ZingHR
Employee.Manager
Crelate
Contact (hiring manager lookup)
1:1ZingHR manager-employee associations on recruiting records (e.g., hiring manager on a job posting or recruiter assigned to a candidate) map to Crelate Contact records with a custom field hiring_manager__c holding the manager's name. Crelate's Contact object does not have a native manager lookup, so we use a custom Contact field rather than a native relationship. The customer's admin creates this field in Crelate before migration.
ZingHR
Document (offer letter, ID proof)
Crelate
ContentDocument or Note attachment
1:1ZingHR employee documents (offer letters, ID proofs, experience letters) attached to candidate records in the Talent Acquisition module map to Crelate file attachments on the corresponding Contact record. We download documents from ZingHR's ESS export, store them with the migration artefacts, and attach them to the migrated Crelate Contact via ContentDocumentLink. File type preservation (PDF, DOCX, image) is maintained. If a document has no associated candidate in ZingHR, it is held in a documents-only queue for manual assignment.
ZingHR
Recruitment.CandidateSource
Crelate
Custom Field or Tag (source tracking)
1:1ZingHR tracks candidate source (referral, job board, direct apply, agency) as a custom attribute. We map this to a Crelate custom field candidate_source__c on Contact or to a tag category called Source with individual tags for each source value. The customer chooses the strategy during scoping based on whether they plan to filter candidates by source in Crelate's search and reporting.
ZingHR
Employee (full HRMS record)
Crelate
Not migrated to Crelate
1:1ZingHR employee records containing payroll history, attendance data, leave balances, performance reviews, and e-Separation data do not have a Crelate equivalent and are not migrated. Crelate is an ATS without payroll, attendance, or HRMS capabilities. We flag these record types during scoping and exclude them from the migration scope. The customer's ZingHR instance continues to operate as the HRMS of record for payroll, attendance, and compliance. If the customer requires a separate HRMS alongside Crelate, we can scope a parallel migration from ZingHR to a destination like BambooHR, Workday, or SAP SuccessFactors as a separate engagement.
| ZingHR | Crelate | Compatibility | |
|---|---|---|---|
| Employee (Recruitment module) | Contact1:1 | Fully supported | |
| Employee.Department | Company1:1 | Fully supported | |
| Recruitment.JobPosting | Job1:1 | Fully supported | |
| Recruitment.PipelineStage | Pipeline Stage (tag or status)lossy | Fully supported | |
| Recruitment.OnboardingTask | Task1:many | Fully supported | |
| Recruitment.Activity | Activity (Note, Task, or Event)1:1 | Fully supported | |
| Custom Fields (Attribute Master API) | Custom Fields (Contacts, Companies, Jobs)lossy | Fully supported | |
| Employee.Tags or Category | Tag (Default category or custom category)lossy | Fully supported | |
| Employee.Manager | Contact (hiring manager lookup)1:1 | Fully supported | |
| Document (offer letter, ID proof) | ContentDocument or Note attachment1:1 | Fully supported | |
| Recruitment.CandidateSource | Custom Field or Tag (source tracking)1:1 | Fully supported | |
| Employee (full HRMS record) | Not migrated to Crelate1:1 | 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.
ZingHR gotchas
Maker-Checker workflow creates pending approval states
Reports module limits current data export to 3 months
Compensatory off balances may not auto-refresh
API authentication requires valid token and subscription name
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
Recruitment data scoping and ZingHR module isolation
We audit the ZingHR instance to isolate Talent Acquisition module data from HRMS data. This includes enumerating candidate records, active and closed job postings, recruitment pipeline stages, onboarding tasks, activity logs, and custom attributes exposed via the Attribute Master API. We request the Historic data export (not the Current Data 3-month view) to ensure full recruiting history. We also identify Maker-Checker records in pending states and flag any records older than 60 months that may have been purged from ZingHR. The scoping output is a written data inventory and migration scope document that explicitly excludes payroll, attendance, leave, and performance data.
Crelate schema preparation and custom field creation
We review the customer's Crelate instance and create the required custom fields, tag categories, and pipeline templates before any data arrives. This includes creating candidate_source__c, internal_candidate__c, and hiring_manager__c custom fields on Contact; creating Source and Pipeline tag categories; and configuring the pipeline template (Standard, Technical, or custom) that matches the ZingHR recruiting workflow. Crelate's API requires a Logical Name for each custom field; we document the API-accessible field names for use in the migration pipeline. The customer's Crelate admin confirms field creation and provides the API key during this phase.
ZingHR data extraction with API token management
We extract candidate records, job postings, onboarding tasks, and activity history from ZingHR using their Attribute Master API and Reports module. We use the Historic data export to avoid the 3-month truncation. Our extraction pipeline implements token-refresh handling to work around ZingHR token expiration mid-extraction. We chunk large candidate populations (over 5,000 records) to work around reported performance bottlenecks and to stay within any ZingHR API rate limits. Documents are downloaded separately and stored with migration artefacts, keyed by ZingHR employee ID for later linking.
Transform, field-type validation, and Crelate field mapping
We transform ZingHR records into Crelate's Contact, Company, Job, Task, Note, and Event schema. Field-type validation runs as a pre-flight check: if a ZingHR date field is empty, we substitute a placeholder; if a ZingHR text field contains a value that Crelate expects as a picklist, we validate against the picklist values or fall back to text. Candidate records are split into Contact (external) and flagged Contact (internal hire) based on the ZingHR EmployeeType field. Tag values from ZingHR are resolved against the Crelate tag catalog. Records missing Crelate-required attributes (Name on Company, Name on Job, Body on Note) are held in a correction queue with the specific missing field identified.
Sandbox staging migration and reconciliation
We load transformed data into the customer's Crelate sandbox or a test environment. The customer's recruiting lead reviews a sample of migrated contacts, jobs, and activities against the ZingHR source. We reconcile record counts: contacts in, companies in, jobs in, tasks in, notes in. The reconciliation report highlights any records held in the correction queue (missing required attributes, type mismatches, unlinked documents). The customer resolves corrections in ZingHR or provides override values for the correction queue. No production migration begins until the sandbox sign-off is received.
Production cutover, delta sync, and handoff documentation
We freeze writes to ZingHR during the cutover window, run a final delta migration of any records modified during the migration window, then enable Crelate as the ATS of record. All documents are attached to the migrated Crelate contacts via ContentDocumentLink. We deliver a written inventory of ZingHR custom attributes that could not be mapped to Crelate fields, with a recommendation for which attributes to re-create as Crelate custom fields. We do not rebuild ZingHR recruiting workflows or onboarding automation; those are documented for the customer's admin to reconfigure in Crelate's workflow builder. We support a one-week hypercare window for reconciliation issues raised by the recruiting team.
Platform deep dives
ZingHR
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 ZingHR 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
ZingHR: Not publicly documented in available API documentation.
Data volume sensitivity
ZingHR 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 ZingHR to Crelate migration scoping. Not seeing yours? Book a call.
Walk through your ZingHR 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 ZingHR
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.