HRMS migration

Migrate from Factorial to Bullhorn ATS & CRM

Field-level mapping, validation, and rollback between Factorial and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.

Factorial logo

Factorial

Source

Bullhorn ATS & CRM

Destination

Bullhorn ATS & CRM logo

Compatibility

77%

10 of 13

objects map 1:1 between Factorial and Bullhorn ATS & CRM.

Complexity

BStandard

Timeline

4-8 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Factorial to Bullhorn is a platform-type migration, not a straight record copy. Factorial is a general HRMS designed for employment administration across European and Latin American workforces, with modules covering the full employee lifecycle from hiring through payroll. Bullhorn is a recruitment ATS and CRM built for staffing agencies and in-house recruiters, with a data model optimized for Candidates, JobOrders, Placements, and ClientCorporations rather than employment records. The core migration challenge is reconciling the employee-to-candidate model: Factorial's employee profiles become Bullhorn candidate records, employment history becomes work experience custom fields, and compensation history migrates to custom salary or rate fields. We flag absence records and time entries as Bullhorn has no native absence management module, and we document Factorial workflows and approval chains for admin-side rebuild in Bullhorn Automation or Bullhorn Partner integrations. Document transfers proceed file-by-file through Factorial's paginated list API since no bulk download endpoint exists.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Factorial logo

Factorial

What's pushing teams away

  • Payroll module is widely reported as the weakest part of the platform, with limited advanced payroll features and recurring issues that force customers to rely on external payroll tools.
  • Limited customization options for reporting, workflows, and advanced HR processes leave larger or more complex organizations with unmet needs.
  • Aggressive pricing increases and deprecation of previously core modules have frustrated long-term customers, creating a sense of vendor lock-in.
  • Advanced features available only on higher tiers push customers toward competitors when their organization outgrows the entry-level functionality.

Choosing

Bullhorn ATS & CRM logo

Bullhorn ATS & CRM

What's pulling them in

  • Agencies choose Bullhorn because it combines ATS and CRM in one platform, eliminating the need to switch between separate tools for candidate management and client relationship tracking.
  • The resume parser extracts contact details, work history, and skills into structured, searchable candidate profiles automatically without manual data entry, reportedly driving 24% more placements per recruiter.
  • Bullhorn's placement and split-billing model natively supports contract staffing workflows, handling start/end dates, overtime rules, and multi-party pay/charge rates in a single record.
  • The platform offers extensive third-party integrations through its Recruitment Cloud Marketplace, connecting with back-office, onboarding, and payroll systems used by staffing agencies.
  • 72% of Bullhorn customers are teams with fewer than 10 users, and Bullhorn's implementation team handles setup and data migration for small agencies going live within weeks.

Object mapping

How Factorial objects map to Bullhorn ATS & CRM

Each row shows how a Factorial 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.

Factorial

Employee

maps to

Bullhorn ATS & CRM

Candidate

1:1
Fully supported

Factorial employee records map to Bullhorn Candidate records. We map firstName, lastName, personalEmail, workEmail, phone, jobTitle, department, hireDate, and employmentStatus directly. Custom employee properties discovered during scoping (Factorial has no schema API so we enumerate active fields via the employee endpoint) map to Bullhorn Candidate custom fields. Active employment status from Factorial sets Candidate status to 'Active' in Bullhorn; inactive status maps to 'Archived'. Historical employee records that represent past employees map to Candidates with status 'Placed' or 'Not Active' per the customer's preference.

Factorial

Department and Cost Center

maps to

Bullhorn ATS & CRM

ClientCorporation (organizational custom fields)

lossy
Fully supported

Factorial organizational hierarchy (departments, cost centers, parent-child relationships) has no direct Bullhorn equivalent because Bullhorn's organizational model centers on ClientCorporations for external companies and does not track internal org structure natively. We map departments to a Bullhorn custom object (Department__c) or to a multi-select picklist on the Candidate record, depending on the customer's reporting needs. Cost centers map to custom fields on Candidate or to a custom object if the customer requires cost-center attribution on Placements.

Factorial

Contract

maps to

Bullhorn ATS & CRM

Candidate (custom fields) + custom object

1:many
Fully supported

Factorial employment contracts include contract type (permanent, fixed-term, part-time), working hours, probation period, and legal entity reference. Bullhorn has no native contract entity, so we store contract metadata on Candidate custom fields (contractType__c, workingHours__c, probationEndDate__c) and map the legal entity reference to a ClientCorporation if the legal entity is also a client, or to a custom object (LegalEntity__c) if it is purely an internal entity. Contract templates vary by country and include legally required fields that may not map directly; we flag these during scoping and preserve the raw contract data as a document attachment on the Candidate record.

Factorial

Compensation History

maps to

Bullhorn ATS & CRM

Candidate (custom fields) + custom object

1:1
Mapping required

Historical salary changes, bonuses, and equity grants are stored as effective-dated compensation records on each Factorial employee. Bullhorn stores payRate and billRate on Placements, not on Candidates. We migrate the full compensation timeline to a CompensationHistory__c custom object linked to Candidate, with fields for effectiveDate, baseSalary, currency, bonusAmount, equityGrant, and changeReason. If the customer requires placement billing rates, we also populate Placement custom fields at migration time. Gross-up calculations and tax withholding rules are not migrated because they are destination-system specific.

Factorial

Absence Record

maps to

Bullhorn ATS & CRM

Custom Absence__c object

lossy
Fully supported

Factorial absence types, balances, and accrual rules per employee have no native Bullhorn equivalent. We create an Absence__c custom object in Bullhorn with fields for absenceType, startDate, endDate, hoursRequested, hoursApproved, and accrualBalanceAtMigration. Bullhorn ATS supports up to 2 custom objects (ATS Growth) or 10 (Front Office Growth and Enterprise); Absence__c counts toward this limit. Customers on ATS Growth tier who also need CompensationHistory__c may need to consolidate onto a single custom object or upgrade to access additional slots.

Factorial

Time Entry

maps to

Bullhorn ATS & CRM

Custom TimeEntry__c object or Placement

1:1
Fully supported

Clock-in/out records and timesheets from Factorial include timestamps, employee reference, and project or cost-center tags. Bullhorn does not have a native time-tracking entity. We map time entries to a TimeEntry__c custom object linked to Candidate, with fields for workDate, clockIn, clockOut, hoursWorked, projectCode, and costCenter. For staffing firms that use Bullhorn Placements for temp workers, we map time entries to Placement Time and Expense records if the Bullhorn instance includes Bullhorn's back-office or VMS integration. Factorial time entries with project codes that represent internal projects require a project reference object in Bullhorn if the customer tracks internal project allocation.

Factorial

Document (employee file)

maps to

Bullhorn ATS & CRM

ContentDocument + ContentDocumentLink

1:1
Fully supported

Documents attached to Factorial employee records (contracts, IDs, certifications, policies) migrate as ContentDocument records linked via ContentDocumentLink to the corresponding Bullhorn Candidate. Factorial imposes a per-file size limit and does not expose a bulk document download endpoint, so we paginate the documents list via the API and download each file individually. Large document archives (over 10,000 files) can extend migration time significantly. We flag document-heavy migrations during scoping and set expectations for transfer time accordingly. Document naming conventions from Factorial are preserved in the ContentVersion Title field for searchability.

Factorial

Custom Fields (Employees)

maps to

Bullhorn ATS & CRM

Candidate custom fields

1:1
Mapping required

Factorial allows arbitrary custom fields on employee profiles that are not discoverable via a schema API. We enumerate all active custom fields by calling the employee and contract endpoints during scoping discovery, then map each to a Bullhorn Candidate custom field of the equivalent edit type (text, number, date, drop-down). Bullhorn has per-entity custom field limits (exact count varies by edition and field type); if the Factorial instance uses more custom fields than Bullhorn supports on Candidate, we prioritize business-critical fields and map the remainder to the CompensationHistory__c or a supplementary custom object.

Factorial

Payroll Run

maps to

Bullhorn ATS & CRM

Placement (billing fields) + custom reporting

1:1
Fully supported

Factorial payroll runs include gross compensation, deductions, supplements, overtime, and net pay tied to a specific country legal entity. Bullhorn does not include HRMS payroll. For staffing firms using Bullhorn for temp placement billing, we map gross pay rate from Factorial to Placement billRate1 and billRate2 fields, and map overtime and supplemental pay to custom Placement fields. Tax withholding, social security contributions, and net-pay calculations do not migrate because they must be recomputed in the destination payroll system based on local requirements. We deliver a written payroll data export from Factorial structured for import into the customer's chosen payroll processor.

Factorial

Employee (emergency contact)

maps to

Bullhorn ATS & CRM

Custom EmergencyContact__c object

1:1
Fully supported

Factorial stores emergency contact details (name, relationship, phone) on employee profiles. Bullhorn does not have a native emergency contact entity. We create an EmergencyContact__c custom object linked to Candidate with fields for name, relationship, phone, and email. This custom object counts toward the Bullhorn custom object limit and requires Bullhorn Support to provision before data import.

Factorial

Employee (banking details)

maps to

Bullhorn ATS & CRM

Custom BankDetails__c object

1:1
Fully supported

Factorial stores bank account details for payroll disbursement. Bullhorn does not store banking information. We create a BankDetails__c custom object linked to Candidate with fields for bankName, accountNumber (encrypted at rest if Bullhorn edition supports field encryption), routingNumber, and iban. Banking data is migrated under heightened security protocols (encrypted transfer, temporary storage, purge after import confirmation). This data does not belong in Bullhorn's recruitment-focused data model long-term; we recommend the customer move it to their payroll processor as part of cutover.

Factorial

Workflows and Approvals

maps to

Bullhorn ATS & CRM

None

1:1
Not supported

Factorial workflow objects defining approval chains for time-off, expenses, and documents are platform-specific automation records with no export representation and no Bullhorn equivalent. Bullhorn Automation (a separate licensing tier) provides workflow capabilities but is architecturally different from Factorial's workflow engine. We document the full Factorial workflow structure during discovery including trigger conditions, approver chains, escalation rules, and action outputs, delivered as a written inventory the customer's Bullhorn admin or implementation partner uses to rebuild in Bullhorn Automation or a Bullhorn Partner integration.

Factorial

Employee (qualifications and skills)

maps to

Bullhorn ATS & CRM

Candidate (skills and custom fields)

1:1
Fully supported

Factorial stores qualifications, skills, certifications, and education history on employee profiles. Bullhorn Candidate records support skills (a native text field with comma-separated values or a Skills picklist if configured), and additional qualifications map to Candidate custom fields. Certifications with expiration dates map to a custom Certification__c object linked to Candidate with fields for certificationName, issuedDate, expirationDate, and issuingBody. Skills and qualifications enrichment data sourced from LinkedIn or other platforms in Factorial does not migrate unless stored as structured Factorial custom fields.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

Factorial logo

Factorial gotchas

High

No public bulk export API for documents

Medium

Custom fields are not discoverable via a schema endpoint

Medium

Payroll data is country-locked to the legal entity

Low

Workflow automation does not export

Bullhorn ATS & CRM logo

Bullhorn ATS & CRM gotchas

High

ATS Growth edition has no API access

High

Attachments excluded from CSV bulk exports

Medium

Custom Object limits vary sharply by edition

Medium

Opportunity pipeline stages are recruitment-specific

Low

Resume parse quality varies by document format

Pair-specific challenges

  • Bullhorn has no absence management or time-tracking module

    Factorial customers rely on absence management and time tracking as core platform features. Bullhorn does not include native absence management or time-tracking modules. We create custom objects (Absence__c, TimeEntry__c) to preserve historical balances and entries, but Bullhorn's native UI will not surface accrual calculations, approval workflows, or timesheet approvals. Customers requiring these features post-migration must purchase Bullhorn Automation, implement a Bullhorn Partner absence or time-tracking integration, or use a third-party tool. This is the most significant functional gap in a Factorial-to-Bullhorn migration and must be addressed in the migration scope before cutover.

  • Document transfer is per-file, not bulk

    Factorial does not expose a bulk document download endpoint. We paginate the documents list via the API and download each file individually. For organizations with large document archives (tens of thousands of employee files), this process extends migration time proportionally. We flag document-heavy migrations during scoping, estimate transfer duration based on file count and average file size, and schedule document migration as a parallel workstream to the record migration. Network throughput and any Factorial per-request throttling also affect transfer speed.

  • Custom object limits vary by Bullhorn edition

    Bullhorn supports different numbers of searchable custom objects depending on the edition: 10 for Front Office Growth and Enterprise, 2 for Bullhorn ATS, and none for ATS Growth. Factorial customers with absence records, compensation history, time entries, banking details, emergency contacts, and custom employee fields may exceed the custom object quota on lower Bullhorn tiers. We audit the Factorial custom field inventory during scoping, confirm the customer's Bullhorn edition, and recommend an upgrade or schema consolidation if the migration scope exceeds available custom object slots.

  • Factorial custom fields require manual enumeration

    Factorial allows per-customer custom field creation but does not publish a metadata or schema API. We call the employee and contract endpoints to enumerate active fields during migration discovery, which adds a discovery step before mapping can begin. Fields discovered late in discovery (after initial mapping has been completed) may require schema changes in the Bullhorn destination, which requires Bullhorn Support involvement for custom object provisioning. We scope additional time for this discovery iteration and flag any fields discovered after schema deployment as post-migration additions.

  • Bullhorn does not migrate workflows or approval chains

    Factorial workflows and approval chains do not export as data and cannot be imported into Bullhorn. Bullhorn Automation (a separate licensing tier) provides workflow capabilities but uses a different trigger, condition, and action model. We document the existing workflow structure in a written handoff deliverable, but rebuilding workflows in Bullhorn Automation or through a Bullhorn Partner integration is outside the migration scope and requires the customer's admin team or a separate Bullhorn implementation engagement.

Migration approach

Six steps for a successful Factorial to Bullhorn ATS & CRM data migration

  1. Discovery and edition assessment

    We audit the source Factorial instance covering active employee count, contract types, custom fields (enumerated via employee and contract endpoints since no schema API exists), document archive size, absence record count and types, time entry volume, compensation history depth, payroll run records, and organizational hierarchy. We pair this with a Bullhorn edition assessment: Bullhorn ATS ($99-$129/user/month) covers basic candidate and job management; Bullhorn One ($150-$250+/user/month) includes Automation, business intelligence, and marketplace integrations. The discovery output is a written migration scope, a Bullhorn edition recommendation, and a list of Factorial data that has no Bullhorn equivalent requiring custom object or custom field design.

  2. Bullhorn custom object and field provisioning

    We design the destination Bullhorn schema to accommodate Factorial data that lacks a native equivalent. This includes provisioning Absence__c, CompensationHistory__c, TimeEntry__c, EmergencyContact__c, BankDetails__c, and any department or cost-center objects the customer requires. Bullhorn requires Support to provision custom objects; we submit the Custom Object Setup Sheet (provided by Bullhorn KB) with field definitions including edit types, required flags, and hint text. Custom fields on Candidate and ClientCorporation are provisioned via Bullhorn Admin Field Mappings. Schema deployment happens in a Bullhorn sandbox or staging environment first for validation.

  3. Sandbox migration and reconciliation

    We run a full migration into the Bullhorn staging environment using production-equivalent data volume. The customer's Bullhorn admin reconciles record counts (Candidates in, ClientCorporations in, custom object records in), spot-checks 25-50 random Candidate records against Factorial source data, validates that absence balances, compensation history, and time entries are correctly linked to the parent Candidate, and confirms document file names and attachment associations. Any mapping corrections happen in staging before production migration begins. This step also validates that Bullhorn's field-level security, validation rules, and picklist value restrictions do not reject incoming records.

  4. Document archive migration

    We migrate Factorial employee documents in parallel with record migration. Because Factorial has no bulk download endpoint, we paginate the documents list, download each file individually, and associate each file with the corresponding Bullhorn Candidate via ContentDocumentLink. For large archives, we run document transfer as a separate parallel workstream to avoid blocking record migration. We validate document counts, file integrity (checksum), and attachment linkage post-transfer. Documents that fail download (Factorial may return errors for files exceeding size limits) are flagged for manual retrieval or alternative transfer methods.

  5. Production migration in dependency order

    We run production migration in record-dependency order: ClientCorporations (for Factorial companies or legal entities that map to clients), Candidates (with all custom field mappings resolved), custom object records (Absence, Compensation, Time, EmergencyContact, BankDetails) linked to the parent Candidate, and documents (ContentDocument + ContentDocumentLink). Each phase emits a row-count reconciliation report. We freeze Factorial write access during cutover, run a final delta migration for any records modified during the window, and validate total record counts match pre-migration discovery figures before declaring cutover complete.

  6. Cutover, validation, and workflow handoff

    We enable Bullhorn as the system of record after cutover validation. We deliver the Factorial workflow and approval chain inventory document to the customer's Bullhorn admin team, with recommended Bullhorn Automation equivalents for each workflow trigger and action type. We do not rebuild Factorial workflows in Bullhorn Automation as part of the migration scope; that work requires the customer's admin or a Bullhorn Partner implementation. We support a one-week hypercare window where we resolve reconciliation issues raised by the customer's team. We do not provide post-migration admin training, ongoing workflow management, or payroll processor integration as standard scope.

Platform deep dives

Context on both ends of the pair

Factorial logo

Factorial

Source

Strengths

  • Clean, intuitive UI that reduces onboarding friction for both administrators and employees across all modules.
  • Strong time-tracking and absence management with flexible accrual rules and clear employee self-service flows.
  • Modular pricing structure allows incremental adoption without paying for unused functionality upfront.
  • Built-in compliance features tuned to Spanish, Brazilian, and Mexican labor regulations reduce payroll risk.
  • Active product development with regular module additions including IT inventory and AI-assisted workflows.

Weaknesses

  • Limited advanced payroll features force many customers to maintain a separate payroll tool or export to third-party payroll processors.
  • Reporting and analytics are constrained by available templates with limited customization for complex HR queries.
  • API documentation is sparse and bulk export capabilities are absent, making programmatic data extraction difficult without FlitStack AI.
  • Payroll module quality lags behind the rest of the platform, creating a gap in the all-in-one promise.
  • Limited customization for workflows, approval rules, and advanced HR processes beyond the core employee lifecycle.
Bullhorn ATS & CRM logo

Bullhorn ATS & CRM

Destination

Strengths

  • Unified ATS and CRM on one platform purpose-built for staffing agencies, eliminating separate tools for candidates and clients.
  • Automated resume parsing extracts structured candidate data—contact details, work history, skills—into searchable profiles instantly.
  • Native placement and split-billing model handles contract staffing workflows including start/end dates and overtime rules.
  • Bullhorn Recruitment Cloud Marketplace offers 100+ pre-validated third-party integrations spanning the full recruiting lifecycle.
  • 24/7 global support coverage from 350+ support staff with dedicated account management included at all tiers.

Weaknesses

  • Widely regarded as old and bloated with an unintuitive interface and steep learning curve for new recruiters.
  • Slow page loads and performance lag cited in over 200 verified G2 reviews during high-volume recruiting periods.
  • Pricing is opaque—custom-negotiated per organization with significant upfront implementation fees that vary by deal.
  • ATS Growth edition excludes API access entirely, preventing automated data export without upgrading first.

Complexity grading

How hard is this migration?

Standard HRMS migration. All 7 core objects map 1:1 between Factorial and Bullhorn ATS & CRM.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Factorial and Bullhorn ATS & CRM.

  • Object compatibility

    A

    All 7 core objects map 1:1 between Factorial and Bullhorn ATS & CRM.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    7-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    C

    Factorial: 200 requests per minute for POST requests per Factorial's published API docs. GET-side limits are not separately enumerated; we tune extraction concurrency conservatively against the customer's tenant during scoping..

  • Data volume sensitivity

    B

    Factorial doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Factorial to Bullhorn ATS & CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Factorial to Bullhorn ATS & CRM data migrations

Answers to the questions buyers ask most during Factorial to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Factorial to Bullhorn ATS & CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most Factorial to Bullhorn migrations land between four and eight weeks for organizations with fewer than 2,000 employees, fewer than 50,000 documents, and no complex multi-country compensation or absence data. Migrations with large document archives (Bullhorn downloads each file individually via Factorial's paginated API), multi-country employment records requiring custom salary and rate fields across multiple legal entities, or organizations with extensive time-entry histories move to ten to sixteen weeks because of per-file document transfer time, custom object provisioning coordination with Bullhorn Support, and absence/time data modeling complexity.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Factorial.
Land in Bullhorn ATS & CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day