HRMS migration
Field-level mapping, validation, and rollback between Revolut People and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Revolut People
Source
Bullhorn ATS & CRM
Destination
Compatibility
12 of 13
objects map 1:1 between Revolut People and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Revolut People to Bullhorn crosses a platform-type boundary: Revolut People is a skills-first HRMS with performance cycles, PTO tracking, and compensation analytics; Bullhorn is an ATS and CRM purpose-built for staffing agencies with no native performance management, PTO, or org-chart module. We audit every Revolut People module during discovery, flag objects that have no Bullhorn equivalent, and migrate what Bullhorn can hold. Candidate records (from Revolut People Employees), Companies, Jobs, and Placements transfer through Bullhorn's REST API with rate-limit handling at up to 1,500 requests per minute. Skills, compensation, and performance data migrate as custom fields on the Candidate and Placement objects. Bullhorn ATS Growth (Team Edition) excludes API access entirely, which we confirm during scoping before any extraction begins. Workflows, automations, PTO accruals, and engagement survey engines do not migrate; we deliver a written inventory of these for the customer's admin to rebuild in Bullhorn or a complementary tool.
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 Revolut People object lands in Bullhorn ATS & CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Revolut People
Employee
Bullhorn ATS & CRM
Candidate
1:1Revolut People employee records map to Bullhorn Candidate. We extract name, email, phone, job title, department, employment status, start date, and manager reporting line. The Candidate record becomes the primary destination object. If the Bullhorn instance uses the Candidate-to-Contact split, we map Revolut People employees to Candidate (active or placed worker) and flag any contingent worker records for separate handling. Custom fields for employment type (full-time, part-time, contractor) and cost centre migrate to Bullhorn Candidate custom fields.
Revolut People
Org Structure
Bullhorn ATS & CRM
Corporate Structure (Division + User Role)
lossyRevolut People's hierarchical org chart with departments, roles, and reporting lines has no direct Bullhorn equivalent. Bullhorn's Corporate Structure provides divisions and user roles for internal staffing operations, but it does not store a full org chart or role-to-skills mapping. We extract the hierarchy as a flat parent-child map, restore divisions in Bullhorn's corporate structure, and document the reporting-line tree for the customer's admin to reference during Bullhorn user provisioning.
Revolut People
Recruitment: Job Posting
Bullhorn ATS & CRM
JobOrder
1:1Revolut People job postings map to Bullhorn JobOrder. Job title, description, location, employment type, salary range, and status migrate directly. The job pipeline stage names from Revolut People map to Bullhorn JobOrder status values (Open, On Hold, Closed, Cancelled). We preserve the original job ID for audit and cross-reference during reconciliation.
Revolut People
Recruitment: Applicant
Bullhorn ATS & CRM
Candidate and JobSubmission
1:1Revolut People applicant records map to Bullhorn Candidate (person record) and JobSubmission (application record linking Candidate to JobOrder). Application status values from Revolut People map to Bullhorn SubmissionStatus (New, Active, Reviewed, Interviewing, Offered, Placed, Rejected). Interview scheduling notes and application notes migrate as Candidate notes. Where Revolut People stores candidate skills or competency scores against the application, we map these to Bullhorn Candidate custom fields.
Revolut People
Performance Cycle
Bullhorn ATS & CRM
Candidate Note or Custom Object
1:1Revolut People performance cycles (date-bounded review periods with review records) have no native Bullhorn object. Bullhorn ATS does not include performance management. We migrate cycle metadata as a Bullhorn Note on the Candidate record with cycle name, start date, and end date, and we flag the performance cycle object in the written inventory for the customer to rebuild in Bullhorn or a complementary performance tool post-migration.
Revolut People
Performance Review
Bullhorn ATS & CRM
Candidate Custom Fields + Note
1:1Revolut People review records with structured feedback, ratings, and reviewer comments migrate to Bullhorn Candidate custom fields (rating scores) and a Candidate Note (full review text and reviewer identity). PIP and probation records migrate as flagged notes with a custom status field to distinguish them from standard reviews. We cannot preserve review cycle relationships natively in Bullhorn; this context is documented in the written handoff.
Revolut People
Skills and Competency Framework
Bullhorn ATS & CRM
Candidate Custom Fields
1:1Revolut People skills, proficiency levels, and custom competency frameworks vary per tenant and have no standard Bullhorn equivalent. We audit the full skill library during discovery, normalise skill names and proficiency scales, and map each skill to a Bullhorn Candidate custom field. Custom scorecards with non-standard rubrics are flattened to key-value pairs and stored in a structured note. Bullhorn's custom field limits per object are confirmed during scoping.
Revolut People
Goal and Roadmap
Bullhorn ATS & CRM
Task
1:1Revolut People goal records with milestones, ownership, and progress percentages map to Bullhorn Task. Goal name, description, due date, and status transfer. Custom roadmap layouts do not have a Bullhorn equivalent; we store roadmap structure as a structured note on the Task. Goal hierarchies with parent-child relationships are flattened into separate Task records with a custom parent-goal reference field.
Revolut People
Engagement Survey
Bullhorn ATS & CRM
Candidate Note or Custom Object
1:1Revolut People engagement survey questions and employee response data have no native Bullhorn object. Survey response scores for aggregate engagement metrics migrate to a Bullhorn custom object (if the Bullhorn edition supports custom objects) or as structured notes on the Candidate record. Individual question-and-answer pairs are stored as a serialised note. Survey metadata (survey name, date, participation rate) is documented separately.
Revolut People
PTO and Leave Balance
Bullhorn ATS & CRM
Separate HR System (flagged for rebuild)
1:1Revolut People time, attendance, PTO, and sick leave data has no Bullhorn equivalent. Bullhorn ATS does not include a leave management or time-tracking module. We export current leave balances and leave type assignments from Revolut People as a structured CSV and hand it off to the customer for import into a dedicated HR system or for manual entry. Leave balance data is not written to Bullhorn as part of the standard migration scope.
Revolut People
Salary Structure and Compensation
Bullhorn ATS & CRM
Placement Custom Fields
1:1Revolut People pay grades, position descriptions, and base salary data migrate as Bullhorn Placement custom fields (if Bullhorn CRM or Enterprise tier is in scope) or as Candidate custom fields. Equity vesting data from Revolut People's compensation insights dashboard is exported as a separate dataset and stored as structured notes on the Candidate record; vesting schedules and projection data do not export cleanly and are flagged in the handoff. Pay structure definitions (grade, level, band) map to Bullhorn Placement compensation fields.
Revolut People
User Role and Access
Bullhorn ATS & CRM
Bullhorn User Role and Permission Set
1:1Revolut People role-based access controls assign permissions per user and differ from Bullhorn's permission model. We extract role assignments from Revolut People and map them to Bullhorn user roles (recruiter, sales, hiring manager, admin) and permission sets. Bullhorn's division-level access controls are configured during migration. Role mapping is validated with the customer's Bullhorn admin before user provisioning begins.
Revolut People
Document
Bullhorn ATS & CRM
Candidate Attachment + File Manifest
1:1Revolut People employee documents (contracts, ID copies, offer letters) are not accessible via a documented public API and do not migrate. We generate a file manifest listing each document's original location, associated employee, and document type, and hand this to the customer's admin for manual re-upload to Bullhorn Candidate records post-migration.
| Revolut People | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Employee | Candidate1:1 | Fully supported | |
| Org Structure | Corporate Structure (Division + User Role)lossy | Mapping required | |
| Recruitment: Job Posting | JobOrder1:1 | Fully supported | |
| Recruitment: Applicant | Candidate and JobSubmission1:1 | Fully supported | |
| Performance Cycle | Candidate Note or Custom Object1:1 | Fully supported | |
| Performance Review | Candidate Custom Fields + Note1:1 | Fully supported | |
| Skills and Competency Framework | Candidate Custom Fields1:1 | Fully supported | |
| Goal and Roadmap | Task1:1 | Fully supported | |
| Engagement Survey | Candidate Note or Custom Object1:1 | Fully supported | |
| PTO and Leave Balance | Separate HR System (flagged for rebuild)1:1 | Fully supported | |
| Salary Structure and Compensation | Placement Custom Fields1:1 | Fully supported | |
| User Role and Access | Bullhorn User Role and Permission Set1:1 | Fully supported | |
| Document | Candidate Attachment + File Manifest1: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.
Revolut People gotchas
No public HRMS API means no automated export pipeline
US customer suspension limits platform availability
Compensation equity data stored separately from payroll
Custom skills and scorecards vary per tenant
Bullhorn ATS & CRM gotchas
ATS Growth edition has no API access
Attachments excluded from CSV bulk exports
Custom Object limits vary sharply by edition
Opportunity pipeline stages are recruitment-specific
Resume parse quality varies by document format
Pair-specific challenges
Migration approach
Discovery and edition confirmation
We audit the Revolut People tenant across all active modules (Performance, Recruitment, HR), record counts for employees, applicants, job postings, and review cycles, and the full skill library and custom scorecard taxonomy. We confirm the customer's intended Bullhorn edition (ATS Growth, Team, Corporate, or Enterprise) to determine API availability, custom field limits, and whether Placement custom fields are in scope. The discovery output is a written migration scope that lists every Revolut People module, the Bullhorn destination for each, and any objects flagged as requiring manual extraction or rebuild.
Extraction strategy for no-API source
Because Revolut People has no documented public HRMS API, we design a hybrid extraction approach: admin-level CSV exports for employee records, org structure, and recruitment data; structured data pulls from the compensation insights dashboard for salary and equity data; and a document manifest for employee files. Where exports are unavailable, we flag the object and agree on a manual extraction window with the customer's Revolut People admin before migration begins. Extraction scripts are validated against a sample of 50-100 records before full extraction runs.
Bullhorn schema design and custom field provisioning
We design the Bullhorn destination schema: custom fields on Candidate for skills, proficiency levels, compensation data, and performance review ratings; custom fields on Placement for salary structures; JobOrder configuration for job status mapping; and user role definitions mapped from Revolut People role assignments. If the Bullhorn edition supports custom objects (Corporate and above), we provision a custom object for engagement survey data. Schema is deployed to a Bullhorn sandbox first for validation before production migration begins.
Sandbox migration and reconciliation
We run a full migration into the Bullhorn sandbox using production-like data volumes. The customer's recruitment operations lead reconciles record counts (Candidates in, JobOrders in, Submissions in), spot-checks 25-50 random candidate records against the Revolut People source, and validates that skills, compensation, and review data landed in the correct custom fields. Any mapping corrections are applied before production migration begins. This step also confirms that Bullhorn ATS Growth is not in scope if API access is required.
Production migration in dependency order
We run production migration in record-dependency order: Bullhorn Users (validated against Revolut People owner emails), Companies (from Revolut People company records), JobOrders (job postings), Candidates (employee and applicant records with custom fields populated), JobSubmissions (linking Candidates to JobOrders), Placement records with compensation custom fields, and engagement history (interview notes, communications). Bullhorn API calls use OAuth2 with BhRestToken, respect the 1,500 req/min rate limit, and implement exponential backoff on 429 responses. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and workflow handoff
We freeze Revolut People writes during cutover, run a final delta migration of any records modified during the window, then enable Bullhorn as the system of record. We deliver the automation and workflow inventory document, the custom scorecard normalisation map, the document file manifest, and the Bullhorn custom field schema to the customer's Bullhorn admin. We support a one-week hypercare window where we resolve any reconciliation issues raised by the recruitment team. We do not rebuild Revolut People workflows or Bullhorn Automation rules inside the migration scope; that is a separate engagement.
Platform deep dives
Revolut People
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
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 Revolut People and Bullhorn ATS & CRM.
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
Revolut People: Not publicly documented..
Data volume sensitivity
Revolut People 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 Revolut People to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Revolut People to Bullhorn ATS & CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Revolut People
Other ways to arrive at Bullhorn ATS & CRM
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.