HRMS migration

Migrate from Softgarden to Bullhorn ATS & CRM

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

Softgarden logo

Softgarden

Source

Bullhorn ATS & CRM

Destination

Bullhorn ATS & CRM logo

Compatibility

83%

10 of 12

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

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Softgarden and Bullhorn serve different recruiting market segments and use fundamentally different entity models. Softgarden organizes around Bewerber (Applicant), Bewerbung (Application), and Stellen (Position) with a German-language catalog structure and per-record API calls. Bullhorn uses a unified Candidate entity linked to ClientCorporation and JobOrder, with Opportunities tracking placement progress and a REST API designed for staffing workflows. The migration requires translating Katalogwerte into Bullhorn picklist values, resolving the status-triggered export gap that excludes candidates who passed the trigger status before integration setup, and mapping Softgarden's application workflow stages into Bullhorn's Opportunity stages and placement status. Bullhorn's included 15,000-record data import in its standard onboarding tier covers many mid-market migrations, but exports exceeding that threshold require FlitStack AI to run the API-based migration with per-record inserts, chunking, and parent-record resolution. We do not migrate Softgarden Workflows or Absence.io personnel data—Absence.io sits in a separate product instance post-acquisition and is not accessible via the ATS API.

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

Softgarden logo

Softgarden

What's pushing teams away

  • Customers report the solution is complex to ramp up on—internal Glassdoor reviews note 'ramp up, solution is complex' as a challenge, suggesting onboarding friction for non-technical teams.
  • Some users express frustration that pricing is not self-serve or transparently published, requiring a sales quote and making budget validation difficult before committing.
  • A subset of reviewers rate features lower (4.3 on Software Advice) indicating that while the core ATS works well, some advanced or enterprise-grade features may lag competitors.
  • When moving to platforms like BambooHR or Rippling, customers cite desire for more integrated HCM suites covering payroll and broader HR beyond recruitment.

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 Softgarden objects map to Bullhorn ATS & CRM

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

Softgarden

Bewerber (Applicant)

maps to

Bullhorn ATS & CRM

Candidate

1:1
Fully supported

Softgarden's Bewerber maps directly to Bullhorn Candidate. Base fields—firstName, lastName, email, phone, address—are mapped to Bullhorn's CandidateName, Email, Phone, and Address composite. Softgarden's applicant status (Bewerbungsstatus) does not map directly; we preserve it as a custom field sg_original_status__c since Bullhorn derives candidate status from Opportunity and Placement records. Candidate attachments (CVs, profile pictures) migrate via Bullhorn's CandidateAttachment API endpoint. German-language name formatting (titles, double-barreled names) maps to Bullhorn's name component fields with validation against Bullhorn's formatting rules.

Softgarden

Bewerbung (Application)

maps to

Bullhorn ATS & CRM

Opportunity

1:1
Fully supported

Softgarden's Bewerbung (the junction between Bewerber and Stellen) maps to Bullhorn Opportunity. The Softgarden application date maps to Bullhorn dateAdded; current workflow stage maps to Opportunity currentState with OpportunityHistory entries capturing stage transitions. Softgarden's Bewerbungs-ID becomes a custom field sg_application_id__c for reconciliation. Note that Bullhorn's Opportunity is used for candidate pipeline tracking even before a placement is made—Softgarden customers accustomed to a separate Application object should plan for this model shift during admin configuration.

Softgarden

Stellen (Position)

maps to

Bullhorn ATS & CRM

JobOrder

1:1
Fully supported

Softgarden's Stellen (job postings) map to Bullhorn JobOrder. Position title, description, department, and employment type map to Bullhorn's title, description, occupation, and employmentType fields. Publication status in Softgarden (published, archived, draft) maps to JobOrder status (Open, PAUSED, Closed) with a status mapping matrix created during scoping. Active and archived positions are distinguished by the isActive flag.

Softgarden

Katalogwerte (Catalog Values)

maps to

Bullhorn ATS & CRM

Picklist Values (custom fields)

lossy
Fully supported

Softgarden's Katalogwerte drive dropdown fields for location, department, employment type, and source channels. Bullhorn does not have a native catalog value system—these become custom picklist fields on Candidate, JobOrder, or Opportunity. We query Softgarden's catalog endpoint during discovery, extract all active Katalogwerte, and create equivalent Bullhorn picklist values in the destination org. Catalog structure is flattened during migration: each Katalogwert becomes a discrete picklist entry. Custom catalog values (customer-defined) require additional discovery to map without a pre-built enumeration endpoint.

Softgarden

Application Source

maps to

Bullhorn ATS & CRM

Candidate source field (custom or standard)

1:1
Fully supported

Softgarden tracks application source (job board, direct, referral) as a catalog value on each Bewerbung. Bullhorn Candidate has a standard source field (source) and a secondary source field (secondarySource). We map the primary Softgarden application source to Bullhorn source. If the customer uses multiple source categories, we create a custom field sg_application_source__c and migrate both primary and secondary values there. Source channel normalization is applied during transformation since Softgarden's source taxonomy (driven by its multiposting channels) may include values not present in Bullhorn's standard list.

Softgarden

Application Workflow Stages

maps to

Bullhorn ATS & CRM

Opportunity Stage + OpportunityHistory

lossy
Fully supported

Softgarden's configurable pipeline stages (New, Screening, Interview, Offer, Hired, Onboarding) map to Bullhorn Opportunity Stage values. Each Softgarden stage becomes a Bullhorn stageName entry with a corresponding probability. Bullhorn's OpportunityHistory automatically timestamps each stage change; we supplement this with sg_stage_entered_date__c custom fields from Softgarden's stage transition timestamps. Stage probability percentages migrate with rounding to Bullhorn's supported integer range. If Softgarden uses custom stage names beyond the standard six, we create custom Opportunity Stage values during Bullhorn configuration.

Softgarden

Applicant Attachments (CV, documents)

maps to

Bullhorn ATS & CRM

CandidateAttachment

1:1
Fully supported

Softgarden attachments (CVs, cover letters, profile pictures, general documents) migrate via Bullhorn's CandidateAttachment API. We extract attachments from Softgarden's attachment endpoints and upload to Bullhorn using the Candidate ID as the parent reference. Softgarden's system-generated applicant PDF (a composed summary of all attachments) is not reliably available via the API for candidates in early pipeline stages because it is status-triggered—we migrate the raw attachment files instead and note that the composed PDF is not available for candidates pre-trigger status.

Softgarden

Custom Fields (Application)

maps to

Bullhorn ATS & CRM

Custom Fields on Opportunity

1:1
Fully supported

Softgarden exposes custom fields on Bewerbung records but does not publish a dedicated custom field registry endpoint. We discover active custom fields during the discovery phase by sampling a representative record set and inferring field names, types, and presence across the dataset. Discovered custom fields become custom Opportunity fields in Bullhorn with equivalent data types (text, number, date, picklist). Custom field discovery adds one to two days to scoping but does not block migration.

Softgarden

Custom Fields (Position)

maps to

Bullhorn ATS & CRM

Custom Fields on JobOrder

1:1
Fully supported

Softgarden custom fields on Stellen (position-level custom fields) map to Bullhorn custom fields on JobOrder. Same discovery methodology applies: we sample position records, infer schema from field presence, and create equivalent Bullhorn custom fields. Position-level custom fields are typically fewer than application-level custom fields and map cleanly to Bullhorn's extensible JobOrder schema.

Softgarden

Owner (Bewerber/Bewerbung owner)

maps to

Bullhorn ATS & CRM

Bullhorn User

1:1
Fully supported

Softgarden assigns owners (recruiters or hiring managers) to Bewerber and Bewerbung records. Bullhorn User records are the owner reference. We resolve Softgarden owners by email match against Bullhorn's User table. Any Softgarden owner without a matching Bullhorn User goes to a reconciliation queue for the customer's Bullhorn admin to provision before record import resumes. Owner assignment on Candidate, JobOrder, and Opportunity must be resolved before bulk insert.

Softgarden

Absence.io Data

maps to

Bullhorn ATS & CRM

Not migrated

1:1
Fully supported

Softgarden acquired absence.io in 2021 to offer personnel files, absence management, and time recording as a separate module. This data lives in a separate absence.io product instance not accessible via the Softgarden ATS API. We do not migrate absence.io data as part of a Softgarden-to-Bullhorn ATS migration. If the customer requires absence.io data migrated to a separate HR system, that is a distinct engagement.

Softgarden

Softgarden Workflows

maps to

Bullhorn ATS & CRM

Not migrated

1:1
Fully supported

Softgarden's configurable workflow stages (pipelines, stages, triggers) are a configuration layer, not a data migration target. Bullhorn's Opportunity stage model and placement workflow serve as the equivalent. We document the Softgarden workflow stage structure and map it to Bullhorn's Opportunity stage configuration during the schema design phase. Active workflow automation (email triggers, status-change notifications) is not migrated—we deliver a written inventory of these for the customer's Bullhorn admin to rebuild in Bullhorn's workflow or task automation tools.

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.

Softgarden logo

Softgarden gotchas

High

Applicant Data Export only captures data from setup point onward

Medium

No publicly documented bulk API—migrations run per-record

Low

German-language field labels require translation mapping

Medium

Applicant PDF export is status-triggered, not on-demand

Low

No public API documentation for custom field registry

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

  • Status-triggered export permanently excludes historical applicants

    Softgarden's PUSH export interface only transmits applicant data for candidates who enter the configured trigger status after the export integration is set up. Any applicant who reached 'Onboarding,' 'Hired,' or the configured trigger status before export configuration is permanently excluded from automated retrieval. We identify this gap during scoping and explicitly ask whether historical candidates past the trigger status require manual extraction from Softgarden's admin interface or alternative retrieval before migration begins. Bullhorn's API allows full historical extraction without this constraint, but the source-side limitation must be resolved before we can guarantee complete historical coverage.

  • German-language field labels require translation mapping

    Softgarden's Frontend API v3 uses German-language identifiers throughout: Bewerbung for Application, Bewerber for Applicant, Stellen for Position, Katalogwerte for catalog values, and Bewerbungsstatus for application status. We normalize these to standard English equivalents during field mapping, but the discovery phase must correctly read and interpret German-language field labels. Bullhorn uses English field names throughout. The translation layer adds a discovery step but is deterministic once the mapping matrix is established.

  • No bulk API in Softgarden—migrations run as per-record inserts

    Softgarden's Frontend API v3 operates exclusively on individual record endpoints: retrieve a single applicant, upload a single attachment, resolve a single catalog value. There is no documented batch or bulk endpoint. For migrations with 5,000+ application records, this means longer migration windows than platforms with bulk export capabilities. We handle this by throttling requests appropriately, chunking large record sets, and sequencing parent-record resolution (Positions before Applications before Attachments) to avoid failed inserts from missing foreign keys. Customers with 10,000+ application records should expect migration windows of six to ten weeks rather than the two to four week timeline typical for smaller datasets.

  • Bullhorn's Candidate-ClientCorporation model differs from Softgarden's structure

    Bullhorn separates Candidates (people) from ClientCorporations (employer clients) with a distinct relationship model. Softgarden does not have an equivalent ClientCorporation entity—Positions (Stellen) are tied directly to applications without a separate client-of-record. Bullhorn requires JobOrders to be linked to a ClientCorporation, and Placements to be linked to both the Candidate and the ClientCorporation. Migrations from Softgarden must establish the ClientCorporation entity during Bullhorn configuration; this is either derived from the customer's own employer brand (if Softgarden tracked internal hires) or created as a placeholder entity. The Bullhorn admin defines this during schema design.

  • Applicant PDFs are status-triggered, not on-demand

    Softgarden generates a system-composed applicant summary PDF that includes all uploaded attachments. This PDF is only available via the Applicant Data Export PUSH interface when a candidate enters the configured trigger status. For candidates still in early pipeline stages, the composed PDF does not yet exist in exportable form. We migrate raw attachment files (individual CVs, documents) directly from the attachment API instead of relying on the composed PDF. The composed PDF itself is not available for pre-trigger candidates and is flagged to the customer during scoping.

Migration approach

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

  1. Discovery and data audit

    We audit the source Softgarden account across Bewerber (applicant) records, Bewerbung (application) records, Stellen (position) records, attachment volume, custom field usage, workflow stage configuration, and application source catalog values. We explicitly probe for the status-triggered export gap by asking whether any applicants reached final status before the export integration was configured. We also identify any candidates who passed the trigger status and are therefore excluded from PUSH export, requesting a manual extraction path for those records. The discovery output is a written migration scope document covering record counts, field inventory, and any known data gaps.

  2. German-field normalization and catalog mapping

    We normalize all Softgarden German-language field labels (Bewerbung, Bewerber, Stellen, Katalogwerte) to standard English equivalents during field mapping. We query Softgarden's catalog value endpoints to enumerate all active Katalogwerte for location, department, employment type, and application source. Each Katalogwert becomes a Bullhorn picklist entry on the corresponding field. Custom catalog values (customer-defined) are inferred from record sampling and added to the Bullhorn schema as custom picklist fields. The output is a field-mapping matrix covering every standard and custom Softgarden field.

  3. Bullhorn schema design and ClientCorporation setup

    We configure the Bullhorn destination org: custom fields on Candidate, JobOrder, and Opportunity to receive Softgarden source data; picklist values populated from the Katalogwerte enumeration; Opportunity Stage values matching Softgarden's workflow stages with corresponding probabilities; and ClientCorporation entities derived from the customer's context (internal recruiting employer brand or a placeholder entity). Bullhorn configuration is deployed to a Sandbox org first for validation before any production migration begins.

  4. Owner reconciliation and User provisioning

    We extract every distinct Softgarden owner (recruiter or hiring manager) referenced on applicant, application, and position records and match by email against the Bullhorn destination org's User table. Owners without a matching Bullhorn User are listed in a reconciliation queue. The customer's Bullhorn admin provisions any missing Users (active or inactive depending on whether the original Softgarden user is still active). Migration cannot proceed past this step because OwnerId references are required on JobOrder and Opportunity records.

  5. Migration in dependency order with per-record API inserts

    We run the migration in record dependency order: ClientCorporations (first, to establish the employer entity), JobOrders (from Softgarden Stellen), Candidates (from Softgarden Bewerber), Opportunities (from Softgarden Bewerbung, with CandidateId and JobOrderId resolved at insert time), and Attachments (uploaded against resolved Candidate records). Each object uses Softgarden's per-record API endpoints with appropriate throttling. We maintain a sg_source_id__c field on each Bullhorn record for reconciliation back to the Softgarden source system. Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and workflow inventory delivery

    We freeze Softgarden 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 a written inventory of Softgarden workflow configurations (stage names, transition logic, and any email trigger rules) for the customer's Bullhorn admin to rebuild using Bullhorn's workflow tools. We support a one-week hypercare window for reconciliation issues. We do not rebuild Softgarden Workflows as Bullhorn automation inside the migration scope; that is a separate engagement or an internal admin task.

Platform deep dives

Context on both ends of the pair

Softgarden logo

Softgarden

Source

Strengths

  • Integrated multiposting to 1,200+ job boards and social media from a single job ad creation interface.
  • User-friendly interface and customizable job ad design confirmed across G2 and Capterra reviews.
  • German-market-focused ATS with local-language support and DACH-region compliance awareness.
  • End-to-end recruiting lifecycle from job posting through onboarding in one platform.
  • 65+ automated integrations to common ERP and HR systems via a marketplace.

Weaknesses

  • Pricing is not publicly documented—quote-based only, making cost comparison and budgeting difficult.
  • No publicly documented API rate limits or bulk/batch endpoints; integrations rely on per-record API calls.
  • Data export only captures records from the point of integration setup; historical candidates already past the trigger status are excluded.
  • German-language API documentation and field labels may require translation mapping in cross-border migrations.
  • Absence.io personnel file and time-recording data sits in a separate product instance not accessible via the main ATS API.
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. 1 of 7 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

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

  • Object compatibility

    B

    1 of 7 objects need a mapping; the rest are 1:1.

  • 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

    B

    Softgarden: Not publicly documented by Softgarden. The API documentation does not specify rate limits, so we default to conservative request pacing and monitor for 429 responses to adjust dynamically..

  • Data volume sensitivity

    B

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

Estimator

Estimate your Softgarden 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 Softgarden to Bullhorn ATS & CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Migrations under 5,000 application records with no historical export gaps typically complete in two to four weeks. Migrations between 5,000 and 15,000 records move to four to eight weeks because of per-record API chunking in Softgarden and catalog value reconciliation. Migrations exceeding 15,000 records, with active custom field discovery, or requiring historical candidate retrieval from alternative sources extend to eight to ten weeks. Bullhorn's standard onboarding tier includes 15,000 records; we handle migrations above that threshold or those with complex schema mapping that falls outside Bullhorn's standard import scope.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Softgarden.
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