HRMS migration
Field-level mapping, validation, and rollback between Cornerstone Recruiting and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Cornerstone Recruiting
Source
Bullhorn ATS & CRM
Destination
Compatibility
7 of 13
objects map 1:1 between Cornerstone Recruiting and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
3-6 weeks
Overview
Moving from Cornerstone Recruiting to Bullhorn is a structural migration from an enterprise HCM ATS module to a purpose-built staffing agency ATS/CRM. Cornerstone organizes recruiting data around an OU hierarchy (Cost Centers, Divisions, Positions, Locations); Bullhorn uses a flat Candidate-to-Job-Order-to-Placement model with separate Candidate, Contact, Company, and Job Order objects. We resolve the OU-to-Location mapping during scoping, map Cornerstone Requisitions to Bullhorn Job Orders, preserve the full application workflow stage history, and load attachments with parent-record resolution against the migrated Candidate. Sensitive PII fields that Cornerstone's Bulk API explicitly excludes cannot migrate automatically; we identify them during discovery and flag them for manual re-entry or secure re-provisioning in Bullhorn. Bullhorn's workflows, automations, and Bullhorn Automation sequences do not migrate as code; we deliver a written inventory for the customer's admin to rebuild.
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 Cornerstone Recruiting 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.
Cornerstone Recruiting
Job Requisition
Bullhorn ATS & CRM
Job Order
1:1Cornerstone Requisition records map to Bullhorn Job Order. RequisitionId becomes JobOrder.id for reference tracking; RequisitionName maps to Title; PositionId maps to a custom text field positionId__c (Bullhorn Job Order has no native PositionId equivalent). DivisionId and LocationId from the OU hierarchy map to Bullhorn's Category and Branch or a custom Location lookup. We pre-create the mapping between source OU types and Bullhorn Locations during scoping because Cornerstone OUs are portal-defined and not discoverable via a schema API.
Cornerstone Recruiting
Candidate
Bullhorn ATS & CRM
Candidate
1:1Cornerstone Candidate records (Name, Email, Phone, Address, Ethnicity) map directly to Bullhorn Candidate. The Candidate object in Bullhorn is the primary person record and includes all contact information, employment history, and skills. We preserve the Cornerstone candidate ID in a custom field cornerstone_id__c for reconciliation and audit. Bullhorn Candidate does not have a native ethnicity field, so ethnicity data migrates to a custom text field if compliance reporting requires it.
Cornerstone Recruiting
JobApplicant
Bullhorn ATS & CRM
JobSubmission
1:1Cornerstone JobApplicant (the intersection of Candidate and Requisition) maps to Bullhorn JobSubmission. ApplicationReceivedDateLocal maps to dateAdded; AverageRating maps to a custom rating field. CandidateType distinguishes between Employee, Contingent, and Candidate types and maps to the Bullhorn submission's employmentType field. PositionId links the submission to the migrated Job Order.
Cornerstone Recruiting
Application
Bullhorn ATS & CRM
Placement
lossyCornerstone Application records represent a candidate's full application state and workflow status within a requisition. We map Application status to Bullhorn's Placement record and its associated status workflow. Applications that result in a hire become Placements with status = Active; those that do not remain as JobSubmissions with status = Placed or a custom Closed status. The mapping requires confirming the customer's Bullhorn placement track (ListBed) configuration before migration.
Cornerstone Recruiting
Organizational Unit (OU)
Bullhorn ATS & CRM
Location / Company Division
lossyCornerstone OU types (Cost Center, Division, Legal Entity, Location, Position) have no direct Bullhorn equivalent. We map source Locations to Bullhorn Locations, source Divisions to a custom Division field on the Job Order or Company record, and source Legal Entities to Bullhorn Company records with a custom type field. This is a manual mapping exercise during scoping because OUs are portal-defined and vary by customer. We do not migrate OU hierarchies that have no functional equivalent in Bullhorn's staffing model.
Cornerstone Recruiting
Custom Fields (Requisition)
Bullhorn ATS & CRM
Custom Fields (Job Order)
lossyCornerstone Requisition custom fields (returned by GET Job Requisition Custom Field API) map to Bullhorn Job Order custom fields. We create the Bullhorn custom fields via the Field Mappings admin interface before migration, matching field types where possible. Picklist-type custom fields in Cornerstone map to Bullhorn picklists; text fields map to text fields. Bullhorn Field Mappings allows administrators to choose what fields display, where, and what values they contain, which we configure before loading data.
Cornerstone Recruiting
Custom Fields (Application)
Bullhorn ATS & CRM
Custom Fields (JobSubmission / Placement)
lossyCornerstone Application custom fields map to Bullhorn custom fields on JobSubmission or the related Placement record. The target object depends on when in the workflow the field is populated: pre-placement fields target JobSubmission; post-placement fields target Placement. We confirm the customer's Bullhorn placement track schema before migration and pre-create fields accordingly. Bullhorn's custom field creation via Field Mappings supports text, number, date, picklist, and Boolean types.
Cornerstone Recruiting
Attachment (Resume / Cover Letter)
Bullhorn ATS & CRM
Candidate Attachment
1:1Cornerstone candidate attachments (resumes, cover letters, supporting documents) migrate to Bullhorn Candidate attachments. We extract file metadata and content via the Attachment API and re-associate them with migrated Bullhorn Candidate records using candidate ID matching. Bullhorn supports resume parsing into structured fields (skills, experience, education) as a post-migration step; we preserve the raw attachment as-is during migration to avoid data loss from parsing errors.
Cornerstone Recruiting
Application Workflow
Bullhorn ATS & CRM
JobSubmission Status / Placement Status
lossyCornerstone Application Workflow stages are portal-specific and define stage progression through the hiring process. We map each Cornerstone workflow stage to a Bullhorn JobSubmission status or a custom status value on the Placement record. Bullhorn's workflow automation (Bullhorn Automation) handles stage transitions post-migration; we do not migrate the workflow logic as code. The migration delivers a written stage mapping table documenting every Cornerstone stage and its Bullhorn equivalent.
Cornerstone Recruiting
Employee Record (post-hire)
Bullhorn ATS & CRM
Contact / Placement (Contractor)
1:manyCornerstone creates an Employee record in Core HR upon hire, with employment status, compensation history, and manager assignment. Bullhorn does not have a native HR Core object; contractor and contingent worker records map to Bullhorn Contact (for client contacts) or Placement (for placed candidates). We split post-hire records based on the customer's intended use: employee-facing data stays in a written handoff document for the customer's HRIS; placed candidate data migrates as Placement records.
Cornerstone Recruiting
Owner / Hiring Manager
Bullhorn ATS & CRM
User
1:1Cornerstone Requisition owners and hiring managers map to Bullhorn User records. We match by email address during migration. Any Cornerstone owner without a matching Bullhorn User goes to a reconciliation queue for the customer's Bullhorn admin to provision before record import resumes. Bullhorn's User object includes firstName, lastName, email, and status (active/inactive), which we map from the Cornerstone owner record.
Cornerstone Recruiting
Sensitive PII Fields
Bullhorn ATS & CRM
Manual re-entry required
1:1Cornerstone's Bulk API explicitly does not support loading data to secure custom fields and sensitive PII fields (SPII). We identify which custom fields are marked as sensitive in the Cornerstone schema during discovery and exclude them from bulk import operations. Post-migration, the customer must manually re-enter or securely re-provision these fields in Bullhorn. We deliver a written inventory of every excluded field with its label, data type, and sample values (for format reference only, with no actual PII content) so the customer's Bullhorn admin can rebuild them.
Cornerstone Recruiting
Bulk API Employee Load Data
Bullhorn ATS & CRM
Not applicable in Bullhorn
1:1Cornerstone's Bulk API settings object with LoadPrimaryKey (0 = User ID, 1 = GUID) and default password behavior applies only to Cornerstone's Core HR Bulk API. Bullhorn uses a different authentication and user provisioning model and does not accept bulk user loads via a comparable mechanism. We handle owner matching via email resolution against Bullhorn's existing User table rather than bulk user creation.
| Cornerstone Recruiting | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Job Requisition | Job Order1:1 | Fully supported | |
| Candidate | Candidate1:1 | Fully supported | |
| JobApplicant | JobSubmission1:1 | Fully supported | |
| Application | Placementlossy | Fully supported | |
| Organizational Unit (OU) | Location / Company Divisionlossy | Fully supported | |
| Custom Fields (Requisition) | Custom Fields (Job Order)lossy | Fully supported | |
| Custom Fields (Application) | Custom Fields (JobSubmission / Placement)lossy | Fully supported | |
| Attachment (Resume / Cover Letter) | Candidate Attachment1:1 | Fully supported | |
| Application Workflow | JobSubmission Status / Placement Statuslossy | Fully supported | |
| Employee Record (post-hire) | Contact / Placement (Contractor)1:many | Fully supported | |
| Owner / Hiring Manager | User1:1 | Fully supported | |
| Sensitive PII Fields | Manual re-entry required1:1 | Not supported | |
| Bulk API Employee Load Data | Not applicable in Bullhorn1: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.
Cornerstone Recruiting gotchas
Sensitive PII fields are excluded from Bulk API loads
Portal-specific corpname drives all API endpoints
Throttling limit of 417 requests per minute applies across all Foundational APIs
LoadPrimaryKey setting determines employee identifier behavior
New employees get default password or no password if backend setting is absent
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 scoping
We audit the Cornerstone portal for Requisition volume, Candidate count, JobApplicant records, Application Workflow configurations, OU hierarchy structure, and custom field definitions via the GET Job Requisition Custom Field API. We extract the corpname from provisioning details and confirm the LoadPrimaryKey setting. We audit the Bullhorn destination for existing User records (for owner matching), custom field definitions, placement track configuration, and any existing data that might create duplicates. The discovery output is a written migration scope with the OU-to-Location mapping table, custom field mapping table, and a Bullhorn custom field pre-creation checklist for the customer's admin.
Bullhorn custom field and schema pre-creation
Before any data migration begins, the customer's Bullhorn admin creates all required custom fields via Admin > Field Mappings. This includes custom fields on Job Order (for Requisition custom fields and position data), JobSubmission (for Application custom fields and workflow data), Candidate (for ethnicity and other source fields without Bullhorn native equivalents), and Placement (for post-hire data). Bullhorn returns a 400 error on load if a custom field referenced in the payload does not exist, with no partial success. We provide the exact field names, types, and labels from the Cornerstone schema so the admin creates matching fields.
Cornerstone data extraction with throttling
We extract data from Cornerstone via the Foundational APIs (REST) with request pacing to stay within the 417 req/min throttle across all Foundational API endpoints. For large candidate databases, we batch reads across multiple windows. We extract Requisitions first (as the parent of JobApplicants), then Candidates, then JobApplicants (linked to Requisition and Candidate by ID), then Application Workflow stages and custom field values. Sensitive PII fields are identified and excluded at extraction time. The extraction pipeline emits a record count report per object.
Data transformation and OU resolution
We transform extracted data into Bullhorn-ready payloads. OU references are resolved using the agreed mapping table: DivisionId maps to a custom Division field on Job Order; LocationId maps to Bullhorn Location or a custom location field; PositionId maps to a custom positionId field. Cornerstone Candidate records transform directly to Bullhorn Candidate. JobApplicants transform to JobSubmissions linked to the migrated Job Order and Candidate. Application Workflow stage values map to Bullhorn status values per the written stage table.
Owner reconciliation and User matching
We extract all Cornerstone owner and hiring manager IDs referenced on Requisitions and JobApplicants and match them by email address against Bullhorn's existing User table. Owners without a matching Bullhorn User go to a reconciliation queue. The customer's Bullhorn admin provisions any missing Users (active or inactive based on whether the original user is still with the organization). Migration cannot load Job Orders referencing owners that do not exist in Bullhorn.
Production migration in dependency order
We run production migration in record-dependency order: Bullhorn Users (manual, validated), Job Orders (from Requisitions), Candidates (from Candidates), JobSubmissions (from JobApplicants linked to Job Order and Candidate), Placements (for post-hire records), and Attachments (linked to migrated Candidates). Each phase emits a row-count reconciliation report. Sensitive PII fields and custom fields marked as secure in Cornerstone are excluded from load; we deliver the written exclusion inventory for manual re-entry in Bullhorn.
Cutover, validation, and workflow rebuild handoff
We freeze Cornerstone writes during cutover, run a final delta migration of any records modified during the migration window, then enable Bullhorn as the system of record. We deliver the Application Workflow inventory document with stage-by-stage mapping to Bullhorn status values and Bullhorn Automation rebuild recommendations. Bullhorn Automation (formerly Herefish) handles workflow automations post-migration; we do not rebuild Cornerstone workflow logic as Bullhorn Automation. We support a one-week hypercare window where we resolve any record linkage or status mapping issues raised by the customer's team.
Platform deep dives
Cornerstone Recruiting
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 Cornerstone Recruiting 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
Cornerstone Recruiting: 417 req/min, 25,000 req/hour, 600,000 req/day for Foundational APIs.
Data volume sensitivity
Cornerstone Recruiting exposes a bulk API — large-volume migrations stream efficiently.
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 Cornerstone Recruiting to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Cornerstone Recruiting 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 Cornerstone Recruiting
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.