HRMS migration
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
Source
Bullhorn ATS & CRM
Destination
Compatibility
10 of 12
objects map 1:1 between Softgarden and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
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.
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 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)
Bullhorn ATS & CRM
Candidate
1:1Softgarden'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)
Bullhorn ATS & CRM
Opportunity
1:1Softgarden'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)
Bullhorn ATS & CRM
JobOrder
1:1Softgarden'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)
Bullhorn ATS & CRM
Picklist Values (custom fields)
lossySoftgarden'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
Bullhorn ATS & CRM
Candidate source field (custom or standard)
1:1Softgarden 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
Bullhorn ATS & CRM
Opportunity Stage + OpportunityHistory
lossySoftgarden'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)
Bullhorn ATS & CRM
CandidateAttachment
1:1Softgarden 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)
Bullhorn ATS & CRM
Custom Fields on Opportunity
1:1Softgarden 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)
Bullhorn ATS & CRM
Custom Fields on JobOrder
1:1Softgarden 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)
Bullhorn ATS & CRM
Bullhorn User
1:1Softgarden 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
Bullhorn ATS & CRM
Not migrated
1:1Softgarden 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
Bullhorn ATS & CRM
Not migrated
1:1Softgarden'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.
| Softgarden | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Bewerber (Applicant) | Candidate1:1 | Fully supported | |
| Bewerbung (Application) | Opportunity1:1 | Fully supported | |
| Stellen (Position) | JobOrder1:1 | Fully supported | |
| Katalogwerte (Catalog Values) | Picklist Values (custom fields)lossy | Fully supported | |
| Application Source | Candidate source field (custom or standard)1:1 | Fully supported | |
| Application Workflow Stages | Opportunity Stage + OpportunityHistorylossy | Fully supported | |
| Applicant Attachments (CV, documents) | CandidateAttachment1:1 | Fully supported | |
| Custom Fields (Application) | Custom Fields on Opportunity1:1 | Fully supported | |
| Custom Fields (Position) | Custom Fields on JobOrder1:1 | Fully supported | |
| Owner (Bewerber/Bewerbung owner) | Bullhorn User1:1 | Fully supported | |
| Absence.io Data | Not migrated1:1 | Fully supported | |
| Softgarden Workflows | Not migrated1: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.
Softgarden gotchas
Applicant Data Export only captures data from setup point onward
No publicly documented bulk API—migrations run per-record
German-language field labels require translation mapping
Applicant PDF export is status-triggered, not on-demand
No public API documentation for custom field registry
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 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.
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.
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.
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.
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.
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
Softgarden
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 Softgarden 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
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
Softgarden 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 Softgarden to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Softgarden
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.