HRMS migration
Field-level mapping, validation, and rollback between Workstream and Recruit CRM & ATS. We move data and schema; workflows are rebuilt natively in Recruit CRM & ATS.
Workstream
Source
Recruit CRM & ATS
Destination
Compatibility
7 of 11
objects map 1:1 between Workstream and Recruit CRM & ATS.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Workstream to Recruit CRM is a schema restructuring, not a direct record copy. Workstream organizes around Locations and Team Members with employee lifecycle states (Active, Onboarding, Offboarded); Recruit CRM organizes around Candidates, Contacts, Companies, and Jobs with a recruitment pipeline. We extract Workstream's three-tab employee export, map active and onboarding employees to Recruit CRM Candidates, preserve Workstream Positions as Recruit CRM Jobs, and carry forward location-role combinations as custom fields or tagging taxonomy. Binary document files (tax forms, ID scans, signed onboarding packets) do not transfer; we migrate document completion status as fields. Integration connections with ADP, Paychex, Square, and Toast do not migrate; we document active integrations for the customer to reconfigure post-cutover. Workflows, SMS candidate sequences, and position templates require manual rebuild in Recruit CRM's builder and are inventoried but not migrated.
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 Workstream 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.
Workstream
Team Members (Employees)
Recruit CRM & ATS
Candidate
1:1Workstream Active and Onboarding employees map to Recruit CRM Candidates. We map standard fields: full name, email, phone, hire date (as date_custom), job title (from Position), and department (from Position). Lifecycle status from Workstream (Active, Onboarding) migrates as a custom field employee_lifecycle_status__c. Offboarded employees require explicit opt-in scoping; if included, offboarded records migrate with termination_date and termination_reason preserved as custom fields for compliance recordkeeping. The Workstream Employee ID becomes a custom field source_employee_id__c for dedupe and audit.
Workstream
Applications
Recruit CRM & ATS
Candidate
1:manyWorkstream Applications (one per candidate per position) merge into the corresponding Recruit CRM Candidate record. Application-level fields — screening question answers, application status, source channel, communication history — become notes, tags, or custom fields on the Candidate. If multiple Applications exist for the same candidate across positions, they consolidate under one Candidate record with position references in a related-jobs field or as tags. Application status maps to the nearest Recruit CRM pipeline stage equivalent.
Workstream
Positions
Recruit CRM & ATS
Job
1:1Workstream Positions map to Recruit CRM Jobs. Position title becomes Job title, department maps to department, pay rate/range becomes a custom salary field (salary_min__c and salary_max__c if a range exists), schedule type becomes work_type or a custom field, and job description migrates as the Job description. The Workstream location association persists as a custom field job_location__c or as a tag. Position status (Open, Paused, Closed) maps directly to Job status.
Workstream
Position Templates
Recruit CRM & ATS
Job
lossyWorkstream Position Templates are reusable definitions that feed multiple Position instances. We flatten Position Templates into their instantiated Position records during export, preserving the template origin as a tag (e.g., template: general_manager_v2) on the resulting Job in Recruit CRM. The customer rebuilds Position Templates as Recruit CRM Job Templates manually post-migration; we deliver a written inventory of all template names and their field values for reference.
Workstream
Locations
Recruit CRM & ATS
Company or Custom Field
1:1Workstream Locations are the primary organizational unit with their own managers, addresses, and configurations. We preserve location name, address, and manager as a Recruit CRM Company record (type: location) that Jobs and Candidates can reference. Alternatively, for simpler migrations, location is stored as a custom field job_location__c on the Job. The customer chooses the approach during scoping based on whether they need to query candidates by location across multiple jobs.
Workstream
Roles and Assignments
Recruit CRM & ATS
Custom Fields + Tags
lossyWorkstream Role definitions scoped to locations determine pay and schedule authority. We extract role names and the location-role combination, then store this as a custom multi-select picklist field role_assignment__c or as tags on the Candidate record. The role information is preserved for audit and pay-structure reporting at the destination even though Workstream's location-role scoping model does not have a native Recruit CRM equivalent.
Workstream
Hiring Pipeline Stages
Recruit CRM & ATS
Candidate Pipeline Stages
lossyWorkstream configurable pipeline stages (Applied, Screening, Interview, Offer, Hired) map to Recruit CRM candidate pipeline stages in equivalent order. We extract the full stage definition including stage names, order, and any conditional routing, then configure matching stages in Recruit CRM's pipeline settings before the first Candidate import. Stage probability values migrate as custom fields if the customer requires them for reporting.
Workstream
Custom Fields
Recruit CRM & ATS
Custom Fields
1:1Workstream supports text, date, number, and dropdown custom fields scoped by role, location, or department. This creates a field-level presence problem: a custom field may exist on one Employee record but not on another within the same organization. We detect field-level presence during profiling and map only fields populated for each individual record, avoiding null-fill issues at the destination. Recruit CRM custom fields are global and apply to all Candidates of the same type, so we pre-create all detected Workstream custom fields in Recruit CRM before migration and flag any fields that will be sparsely populated as a note in the reconciliation report.
Workstream
Payroll Data
Recruit CRM & ATS
Custom Fields on Candidate
1:1Workstream integrates with third-party payroll providers rather than running payroll itself. Pay rate, pay schedule, and payroll sync status are available as Employee properties in the CSV export. We map pay rate fields to custom salary fields on the Candidate record in Recruit CRM. Pay schedule and payroll sync status are mapped to custom fields for reference. Actual payroll sync requires re-establishing the ADP, Paychex, or Paylocity integration inside Recruit CRM or as a standalone payroll tool post-migration.
Workstream
Documents (Tax Forms, IDs, Onboarding Files)
Recruit CRM & ATS
Out of scope
1:1Workstream stores tax forms, ID scans, and signed onboarding documents as binary attachments that are not included in the CSV export. We do not migrate binary document files. Employee metadata about document completion status (which forms were submitted, submission date, completion percentage) migrates as custom fields on the Candidate record. The customer downloads document packets separately from Workstream before cutover and re-uploads them to Recruit CRM manually or via Recruit CRM's file attachment API post-migration.
Workstream
Integrations Configuration
Recruit CRM & ATS
Out of scope
1:1Workstream integration connections (ADP, Square, Toast, QuickBooks) are stored as OAuth tokens and configuration metadata that cannot be transferred between tenants. We document which integrations were active, what data they sync, and the connection configuration details from the scoping intake form, then advise the customer to re-establish each integration inside Recruit CRM or with their third-party provider post-cutover.
| Workstream | Recruit CRM & ATS | Compatibility | |
|---|---|---|---|
| Team Members (Employees) | Candidate1:1 | Fully supported | |
| Applications | Candidate1:many | Fully supported | |
| Positions | Job1:1 | Fully supported | |
| Position Templates | Joblossy | Mapping required | |
| Locations | Company or Custom Field1:1 | Mapping required | |
| Roles and Assignments | Custom Fields + Tagslossy | Mapping required | |
| Hiring Pipeline Stages | Candidate Pipeline Stageslossy | Mapping required | |
| Custom Fields | Custom Fields1:1 | Mapping required | |
| Payroll Data | Custom Fields on Candidate1:1 | Mapping required | |
| Documents (Tax Forms, IDs, Onboarding Files) | Out of scope1:1 | Not supported | |
| Integrations Configuration | Out of scope1:1 | Not 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.
Workstream gotchas
Location-based pricing does not follow employee headcount
Offboarded employee data requires explicit scoping
Custom field schemas vary by location and role scope
Binary document files are not migratable
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 scoping
We request a full CSV export from Workstream covering all three employee tabs (Active, Onboarding, Offboarded), all Position records, all Position Templates, all Application records, and all Locations. We profile record counts, custom field definitions and their scoping (role, location, or department), pipeline stage definitions, and integration inventory. We document which integrations were active and what data they referenced. The discovery output is a written migration scope with object counts, field mapping draft, and a Recruit CRM API credential request.
Field mapping and custom field pre-creation
We build the field mapping matrix between Workstream CSV column names and Recruit CRM Candidate, Job, and Company object fields. All Workstream custom fields are pre-created in Recruit CRM as custom fields before any data import. We flag any fields that are sparsely populated (due to Workstream's role/location/department scoping) so the customer understands the data coverage gap. We configure Recruit CRM candidate pipeline stages to match the Workstream stage order and naming convention. Location records are pre-created as Company records in Recruit CRM before candidate import to satisfy any location Lookups.
Staging migration and reconciliation
We run a staging migration using a subset of Workstream data (typically 100-200 records across all record types) into the Recruit CRM production environment or a staging sandbox. The customer reconciles field values, verifies that lifecycle status, pay rates, and pipeline stages map correctly, and signs off on the mapping matrix before full migration begins. Corrections to field names, data types, and stage mappings are documented and applied before the production migration starts.
Production migration in dependency order
We run production migration in record dependency order: Locations (as Company records in Recruit CRM), Positions (as Jobs), Employees (as Candidates with Location and Job Lookups resolved), Applications (merged into Candidates as notes and tags), Custom Fields (mapped individually with presence detection), and offboarded records (if opted in, migrated last with termination fields). Each phase emits a row-count reconciliation report before the next phase begins. We implement batch chunking with rate limit monitoring throughout.
Cutover, delta sync, and documentation handoff
We freeze Workstream writes during cutover, run a final delta migration of any records modified during the migration window, then enable Recruit CRM as the system of record. We deliver a written inventory of Workstream Position Templates, active integrations (with reconfiguration steps for ADP, Square, Toast), and candidate communication sequences requiring manual rebuild in Recruit CRM's workflow builder. We do not rebuild SMS sequences, automation rules, or position templates as Recruit CRM configurations inside the migration scope. We support a 5-business-day hypercare window for reconciliation issues.
Platform deep dives
Workstream
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 Workstream 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
Workstream: Not publicly documented on developer portal.
Data volume sensitivity
Workstream 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 Workstream to Recruit CRM & ATS migration scoping. Not seeing yours? Book a call.
Walk through your Workstream 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 Workstream
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.