HRMS migration
Field-level mapping, validation, and rollback between PCRecruiter and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
PCRecruiter
Source
Bullhorn ATS & CRM
Destination
Compatibility
8 of 12
objects map 1:1 between PCRecruiter and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
6-10 weeks
Overview
PCRecruiter and Bullhorn differ fundamentally in their data model, which is the central challenge of this migration. PCRecruiter uses a company-centric model where the same record can function as both a Candidate and a Client; Bullhorn separates these into Candidate, ClientContact, and ClientCorporation objects that must be split during migration. We handle that split by identifying Person records with candidate activity (submissions, placements, pipeline entries) versus those used purely as client contacts, and writing them to the appropriate Bullhorn entity with lookups preserved. PCRecruiter accounts commonly run multiple independent databases for different markets or divisions, which we either consolidate into a single Bullhorn account or migrate as separate workspaces. Bullhorn's custom object limits vary by edition—Bullhorn ATS allows 2 custom objects with 55 fields each, while Front Office Growth and Enterprise allow 10—which we verify during scoping before committing to the field mapping plan. Workflow automations, pipeline templates, and pipeline stage automations do not migrate as code; we deliver a written inventory of every automation for the customer's admin to rebuild in Bullhorn Automation or the Bullhorn 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 PCRecruiter 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.
PCRecruiter
Person (Candidate)
Bullhorn ATS & CRM
Candidate
1:1PCRecruiter Person records with candidate activity (submissions, pipeline entries, placement history, skill tags) migrate to Bullhorn Candidate. We identify candidate activity by querying Position associations, Placement links, and skill tags on each Person record. The original PCRecruiter Person ID is preserved in a custom field pcr_person_id__c for reconciliation. Contact information, address, and employment history migrate as typed Bullhorn Candidate fields.
PCRecruiter
Person (Client Contact)
Bullhorn ATS & CRM
ClientContact
1:1PCRecruiter Person records used purely as client contacts (no candidate activity, no submission history) migrate to Bullhorn ClientContact. We identify these by flagging Person records with Company associations but no Position or Placement links. ClientContact is linked to the corresponding ClientCorporation record via the corporationID field. Email, phone, and title migrate directly; any client-specific custom fields map to ClientContact custom properties.
PCRecruiter
Company (Client Organization)
Bullhorn ATS & CRM
ClientCorporation
1:1PCRecruiter Company records map directly to Bullhorn ClientCorporation. The Company name becomes the corporationName field, and the company website maps to the webURL field. ClientCorporation is created before any Person or ClientContact import so that the corporationID lookup is satisfied at insert time. Parent-subsidiary relationships in PCRecruiter map to ClientCorporation's parentCorporationID lookup.
PCRecruiter
Position (Job Order)
Bullhorn ATS & CRM
JobOrder
1:1PCRecruiter Position records map to Bullhorn JobOrder. Job title, description, requirements, and address migrate to the corresponding JobOrder fields. Position status maps to JobOrder status (Open, Placed, Cancelled). The JobOrder ownerID is resolved from the PCRecruiter User mapping. We preserve the full position structure including any job-specific custom fields against JobOrder custom properties.
PCRecruiter
Placement
Bullhorn ATS & CRM
Placement
1:1PCRecruiter Placement records map to Bullhorn Placement. Billing information, start date, end date, employee details, and client associations migrate to the corresponding Placement fields. Placement is linked to the migrated Candidate record (via candidateID), the migrated ClientCorporation record (via clientCorporationID), and the migrated JobOrder record (via jobOrderID). All three parent-record IDs must be resolved before Placement insert begins.
PCRecruiter
Activity (Emails, Calls, Notes, Meetings, Tasks)
Bullhorn ATS & CRM
Task, Event, Note
1:1PCRecruiter Activity records against People or Positions migrate to Bullhorn Task (for calls, emails, tasks) and Event (for meetings). The activity type determines the destination object: emails and tasks become Task, meetings become Event, and notes become Note. We resolve the parent record reference (candidateID for Candidate activities, clientContactID for ClientContact activities, jobOrderID for Position activities) using the migrated record IDs from the ID mapping table generated during earlier phases.
PCRecruiter
Attachment (Resume, Documents)
Bullhorn ATS & CRM
ContentDocument / Candidate Attachment
1:1PCRecruiter attachments (resumes, documents, uploaded files) associated with Person, Company, or Position records migrate to Bullhorn's ContentDocument model with ContentDocumentLink associations to the parent migrated record. We use the Bullhorn REST API file upload endpoint to transfer binary attachments, preserving the original filename and MIME type. Resume files are linked to the Candidate record's primary resume field where applicable.
PCRecruiter
Pipeline Stages (per-position)
Bullhorn ATS & CRM
JobOrder custom field or separate pipeline
lossyPCRecruiter's configurable pipeline stages per Position migrate to Bullhorn JobOrder custom fields if the stage set is position-specific, or to Bullhorn's Opportunity pipeline configuration if the customer uses Bullhorn Opportunity tracking alongside JobOrder. Stage names, order, and any associated custom fields are preserved. Bullhorn's pipeline model is simpler than PCRecruiter's per-position stage configuration, so we document any complex stage logic for the customer to review post-migration.
PCRecruiter
Tag / Label
Bullhorn ATS & CRM
Candidate Tag / ClientContact Tag
lossyPCRecruiter Tags on People, Companies, and Positions migrate to Bullhorn Candidate Tags and ClientContact Tags. Tags are stored as a flat taxonomy in PCRecruiter and must be re-created in Bullhorn. We extract the full tag vocabulary during scoping, generate a tag creation script for Bullhorn, and apply tags to migrated records during the import phase. Tags used for segmentation in PCRecruiter map to Bullhorn's List or segment model depending on the customer's intended usage.
PCRecruiter
Custom Field (Person, Company, Position, Placement)
Bullhorn ATS & CRM
Custom Property / Custom Object
lossyPCRecruiter custom fields on Person, Company, Position, and Placement migrate to Bullhorn custom properties (Candidate, ClientCorporation, JobOrder, Placement) or to Bullhorn Custom Objects depending on complexity. Simple text, number, date, and picklist fields map to Bullhorn's native custom property types. Complex relational or multi-value fields may require a Bullhorn Custom Object, which is subject to the destination edition's limit (Bullhorn ATS: 2, Front Office Growth/Enterprise: 10). We confirm the edition with the customer before committing to a custom object migration plan.
PCRecruiter
User / Owner
Bullhorn ATS & CRM
User
1:1PCRecruiter User accounts map to Bullhorn User records. We resolve by email match against the Bullhorn destination User table. Any PCRecruiter User without a matching Bullhorn User goes to a reconciliation queue for the customer's Bullhorn admin to provision before record import resumes. Record ownership assignments migrate by mapping the PCRecruiter userID to the Bullhorn ownerID via the User mapping table.
PCRecruiter
Multiple Databases
Bullhorn ATS & CRM
Single Bullhorn Account / Separate Workspaces
lossyPCRecruiter accounts running multiple independent databases require an explicit consolidation strategy before migration begins. We either merge all databases into a single Bullhorn account (deduplicating overlapping records by email and company name) or migrate each database as a separate Bullhorn account or workspace. The customer confirms the strategy during scoping. Databases with different schema configurations (custom fields, pipelines) require separate field mapping documents. This is one of the highest-impact decisions on migration timeline and is resolved before any data extraction begins.
| PCRecruiter | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Person (Candidate) | Candidate1:1 | Fully supported | |
| Person (Client Contact) | ClientContact1:1 | Fully supported | |
| Company (Client Organization) | ClientCorporation1:1 | Fully supported | |
| Position (Job Order) | JobOrder1:1 | Fully supported | |
| Placement | Placement1:1 | Fully supported | |
| Activity (Emails, Calls, Notes, Meetings, Tasks) | Task, Event, Note1:1 | Fully supported | |
| Attachment (Resume, Documents) | ContentDocument / Candidate Attachment1:1 | Fully supported | |
| Pipeline Stages (per-position) | JobOrder custom field or separate pipelinelossy | Fully supported | |
| Tag / Label | Candidate Tag / ClientContact Taglossy | Fully supported | |
| Custom Field (Person, Company, Position, Placement) | Custom Property / Custom Objectlossy | Fully supported | |
| User / Owner | User1:1 | Fully supported | |
| Multiple Databases | Single Bullhorn Account / Separate Workspaceslossy | Mapping required |
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.
PCRecruiter gotchas
Multi-pass conversion process spans 4-8+ weeks
Multiple databases require explicit migration strategy
API pricing model counts every operation as a call
Custom field naming conventions require manual mapping
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 database strategy
We audit every PCRecruiter database in scope—schema configuration, custom fields, user count, record volumes per entity (Person, Company, Position, Placement), attachment storage volume, and active workflow count. We identify the company-centric Person records and begin the Candidate/ClientContact disambiguation by querying placement history, submission activity, and skill tags. We confirm the Bullhorn destination edition (ATS, Front Office Growth, or Enterprise) and verify the custom object limit against the source custom field count. The discovery output is a written migration scope document with the database consolidation strategy, Candidate/ClientContact split logic, and Bullhorn edition recommendation.
Schema design and Bullhorn environment preparation
We design the Bullhorn destination schema in a Sandbox org. This includes creating custom properties on Candidate, ClientCorporation, JobOrder, and Placement for PCRecruiter custom fields that map to native custom properties; provisioning any required Bullhorn Custom Objects (with Bullhorn Support ticket submission for the initial custom object setup per Bullhorn's requirement); and configuring the migration user with the appropriate Bullhorn REST API permissions. Bullhorn Custom Objects require Bullhorn Support to initially create via a setup spreadsheet, which we coordinate on the customer's behalf.
Sandbox migration and mapping validation
We run a full migration into a Bullhorn Sandbox using production-like data volumes extracted from PCRecruiter. The customer's Bullhorn admin and recruiting leads reconcile record counts (Candidates in, ClientContacts in, ClientCorporations in, JobOrders in, Placements in, Activities in), spot-check 25-50 records against the PCRecruiter source for field accuracy and data completeness, and validate the Candidate/ClientContact split results. Any ambiguous Person records flagged during extraction are reviewed with the customer for manual disambiguation. Mapping corrections happen in the Sandbox, not in production.
Owner reconciliation and User provisioning
We extract every distinct PCRecruiter User referenced as an owner on Person, Company, Position, and Placement records and match by email against the Bullhorn destination 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 depending on whether the original PCRecruiter user is still with the firm). Migration cannot proceed past this step because Bullhorn requires a valid ownerID on JobOrder, Placement, and Candidate records.
Production migration in dependency order
We run production migration in record-dependency order: ClientCorporation (from PCRecruiter Company), Candidate and ClientContact (with the company-centric split applied, companyID and corporationID resolved), JobOrder (with ownerID resolved from the User mapping), Placement (with candidateID, clientCorporationID, and jobOrderID all resolved), Activity history (Tasks, Events, Notes via Bullhorn Bulk API), Attachments (via Bullhorn REST API file upload endpoint with ContentDocumentLink to parent records), and Tags (applied via Bullhorn tag endpoints after all records are inserted). Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and workflow rebuild handoff
We freeze PCRecruiter write access 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 PCRecruiter Workflow and Automation inventory document to the customer's Bullhorn admin. We support a one-week hypercare window where we resolve any reconciliation issues raised by the recruiting team. We do not rebuild PCRecruiter Workflows as Bullhorn Automation inside the migration scope; that is a separate engagement or an internal Bullhorn admin task.
Platform deep dives
PCRecruiter
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 PCRecruiter 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
PCRecruiter: Call volume per day based on API contract tier (Free tier available with limits).
Data volume sensitivity
PCRecruiter 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 PCRecruiter to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your PCRecruiter 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 PCRecruiter
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.