HRMS migration
Field-level mapping, validation, and rollback between Teamdoor and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Teamdoor
Source
Bullhorn ATS & CRM
Destination
Compatibility
15 of 15
objects map 1:1 between Teamdoor and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Teamdoor and Bullhorn serve different segments of the recruitment market, and the migration between them reshapes how candidate and job data are structured. Teamdoor organizes recruitment as a kanban board — each job candidate is a draggable card with stage-based columns (Applied, Screening, Interview, Offer, Hired) and a centralized talent pool for passive sourcing. Bullhorn uses a different entity model: candidates are the central record, job orders represent open positions, job submissions link candidates to jobs, and placements track successful hires. FlitStack AI maps Teamdoor's kanban card data (candidate profile, pipeline stage, job association, notes) into Bullhorn's Candidate, JobSubmission, and Placement entities, preserving original create dates, stage-transition timestamps, and owner assignments. We handle the API export from Teamdoor, the custom field creation in Bullhorn (using Admin > Field Mappings), and the bulk import via Bullhorn's REST API or CSV ingestion tools. Because Bullhorn caps custom fields at 55 per entity and charges per user at tiers starting at $99/user/month, the migration plan accounts for field consolidation and user-seat planning as part of the project scope. Workflows, email templates, and employer branding pages from Teamdoor do not transfer — those require manual rebuild in Bullhorn.
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 Teamdoor 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.
Teamdoor
Candidate (Job Seeker)
Bullhorn ATS & CRM
Candidate
1:1Teamdoor's candidate record maps directly to Bullhorn's Candidate entity. The candidate's profile (name, email, phone, resume, skills, work history) transfers as Bullhorn Candidate fields. Bullhorn parses the resume on import using its built-in resume parser. The candidate's original source (job board, referral, career site) is preserved in Bullhorn's source field.
Teamdoor
Job Posting
Bullhorn ATS & CRM
JobOrder
1:1Teamdoor's job posting (title, description, requirements, location, employment type, salary range) maps to Bullhorn's JobOrder entity. Bullhorn JobOrder includes address, pay rate, employment type, and status fields that correspond directly to Teamdoor's job configuration. The job's published/unpublished status maps to Bullhorn's JobOrder 'isOpen' field.
Teamdoor
Pipeline Stage / Kanban Card
Bullhorn ATS & CRM
JobSubmission (with status mapping)
1:1Teamdoor's kanban card represents a candidate applied to a specific job with a pipeline stage. FlitStack AI splits this into a Bullhorn JobSubmission record linked to the Candidate and JobOrder, with the JobSubmission status mapped from the Teamdoor stage name (Applied, Screening, Interview, Offer, Hired). Bullhorn's JobSubmission status field is used to track the application workflow.
Teamdoor
Talent Pool
Bullhorn ATS & CRM
Candidate (tagged)
1:1Teamdoor's Talent Pool stores candidates not attached to an active job. These migrate as Bullhorn Candidate records tagged with a custom 'Talent_Pool__c' field set to true. Bullhorn has no native talent pool concept — all candidates are in one candidate database, so tagging with a custom field distinguishes passive-sourced candidates from active applicants.
Teamdoor
Employer Brand Page
Bullhorn ATS & CRM
No equivalent (Bullhorn Career Portal)
1:1Teamdoor's customizable employer branding pages (career site with company logo, banner, job listings) have no direct equivalent in Bullhorn. Bullhorn offers a Career Portal module but it must be configured separately from the ATS data. FlitStack preserves the page content as a structured export so Bullhorn admins can recreate the branding in Bullhorn's career portal builder.
Teamdoor
Interview Schedule / Calendar Event
Bullhorn ATS & CRM
Note (interview type)
1:1Teamdoor interview schedules with candidate name, job, date/time, interviewer, and location map to Bullhorn Notes of type 'Interview'. Bullhorn does not have a native interview scheduling entity — calendar integration with Outlook/Gmail is managed separately. The interview details (interviewer name, interview type, notes) are preserved as Bullhorn Note records linked to the Candidate and JobSubmission.
Teamdoor
Company / Client
Bullhorn ATS & CRM
ClientCorporation
1:1Teamdoor companies (employer clients with name, industry, contact info, size) map to Bullhorn's ClientCorporation entity. Bullhorn ClientCorporation stores the client name, address, industry, website, and a list of associated contacts. The client corporation is the parent entity for JobOrders and Placements in Bullhorn's data model.
Teamdoor
Placement / Hire
Bullhorn ATS & CRM
Placement
1:1When Teamdoor's pipeline reaches the 'Hired' stage, FlitStack creates a Bullhorn Placement record linking the Candidate, JobOrder, and ClientCorporation. Bullhorn Placement includes start date, end date, pay rate, bill rate, and employment type — these map from Teamdoor's offer details and the job posting's compensation fields.
Teamdoor
Custom Field (Candidate-level)
Bullhorn ATS & CRM
Custom Field on Candidate
1:1Teamdoor custom fields at the candidate level (e.g., clearance level, certification expiry, preferred location, availability date) require Bullhorn custom fields. Bullhorn allows up to 55 custom fields per entity (Front Office Growth/Enterprise tier). FlitStack creates these via Bullhorn Admin > Field Mappings before data loads and maps field values value-by-value. Fields exceeding the Bullhorn per-entity limit must be consolidated or stored on a Bullhorn custom object.
Teamdoor
Custom Field (Job-level)
Bullhorn ATS & CRM
Custom Field on JobOrder
1:1Teamdoor job-level custom fields (e.g., security clearance requirements, travel percentage, remote policy) map to Bullhorn JobOrder custom fields. Bullhorn JobOrder custom fields are created in the same Admin > Field Mappings interface. Bullet points from Teamdoor job descriptions that contain structured data (e.g., 'Remote: Yes') can be parsed into Bullhorn custom fields if the data is consistently formatted.
Teamdoor
Note / Comment on Candidate
Bullhorn ATS & CRM
Note
1:1Teamdoor notes attached to a candidate record (recruiter comments, interview feedback, screening notes) migrate as Bullhorn Note records linked to the Candidate. Bullhorn Note includes the note body, author (mapped by email to Bullhorn User), and create date. Original timestamps are preserved for audit continuity.
Teamdoor
Email / Communication History
Bullhorn ATS & CRM
Note (communication type)
1:1Teamdoor email threads and communication history attached to candidates map to Bullhorn Notes of type 'Communication'. Bullhorn does not store raw email threads as a native object — communication history is surfaced through the Candidate's activity feed. We preserve the sender, recipient, subject, and body as Bullhorn Note records for reference.
Teamdoor
Analytics Report / Stage Conversion Data
Bullhorn ATS & CRM
No equivalent
1:1Teamdoor's analytics dashboard (channel-level conversion rates, pipeline stage drop-off, time-in-stage metrics) is a reporting construct that does not transfer. Bullhorn's Reports module rebuilds analytics from migrated data — but historical conversion rates calculated by Teamdoor's engine are not available post-migration. FlitStack exports Teamdoor's report snapshots as CSV reference files for Bullhorn admins to use as benchmarks when configuring Bullhorn reports.
Teamdoor
Recruiter / User
Bullhorn ATS & CRM
User
1:1Teamdoor users (recruiters, HR admins) are matched to Bullhorn Users by email address. Bullhorn User records include firstName, lastName, email, and role (internal employee or external recruiter). Unmatched Teamdoor users are flagged before migration — your Bullhorn admin either creates a Bullhorn User record first or assigns the records to a fallback owner.
Teamdoor
Candidate Tag / Skill Label
Bullhorn ATS & CRM
Candidate Specialty (text field) or Custom Field
1:1Teamdoor skill tags and candidate labels (e.g., 'Python', 'CPA', ' bilingual') map to Bullhorn's Candidate Specialty field for standard skills, or to a custom multi-select field if Teamdoor uses structured tag categories. Bullhorn's Candidate entity has a 'specialty' text field; for multi-value tags, a custom pick-list field is created and populated with Teamdoor's tag values.
| Teamdoor | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Candidate (Job Seeker) | Candidate1:1 | Fully supported | |
| Job Posting | JobOrder1:1 | Fully supported | |
| Pipeline Stage / Kanban Card | JobSubmission (with status mapping)1:1 | Fully supported | |
| Talent Pool | Candidate (tagged)1:1 | Mapping required | |
| Employer Brand Page | No equivalent (Bullhorn Career Portal)1:1 | Fully supported | |
| Interview Schedule / Calendar Event | Note (interview type)1:1 | Fully supported | |
| Company / Client | ClientCorporation1:1 | Fully supported | |
| Placement / Hire | Placement1:1 | Fully supported | |
| Custom Field (Candidate-level) | Custom Field on Candidate1:1 | Fully supported | |
| Custom Field (Job-level) | Custom Field on JobOrder1:1 | Fully supported | |
| Note / Comment on Candidate | Note1:1 | Fully supported | |
| Email / Communication History | Note (communication type)1:1 | Fully supported | |
| Analytics Report / Stage Conversion Data | No equivalent1:1 | Fully supported | |
| Recruiter / User | User1:1 | Fully supported | |
| Candidate Tag / Skill Label | Candidate Specialty (text field) or Custom Field1: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.
Teamdoor gotchas
API access requires Pro tier or higher
Talent Pool OCR limits vary by plan
Pipeline stage schemas differ per job opening
Resume attachments are URL-referenced, not embedded
Employer branding pages cannot be migrated
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
Export Teamdoor data via API and audit schema
FlitStack connects to Teamdoor using your Teamdoor API credentials (Pro and Enterprise plans include API access). We extract all candidate records, job postings, talent pool entries, pipeline stage history, notes, and custom field values. We also export employer branding page content as HTML. Before mapping, we audit the schema — counting custom fields per entity, identifying non-standard pipeline stage names, and flagging any candidate records without an email address (Bullhorn requires an email for Candidate records). The audit report is shared with your team for review before field mapping begins.
Create Bullhorn custom fields and configure entity schema
Bullhorn admins create the custom fields identified in the audit — using Admin > Field Mappings in Bullhorn. FlitStack provides a field creation checklist including field names, data types, pick-list values, and the custom field name to use in Bullhorn's interface. For custom fields that exceed Bullhorn's 55-field per-entity limit, we propose a consolidation plan. Bullhorn User records are also verified at this stage — any Teamdoor recruiter without a corresponding Bullhorn User account is flagged for the admin to create or assign a fallback owner before migration.
Run a sample migration with field-level diff
A representative slice of records — typically 200–500 candidates spanning multiple jobs, pipeline stages, talent pool entries, and notes — migrates into Bullhorn first. FlitStack generates a field-level diff report comparing source values in Teamdoor against the destination values in Bullhorn for every mapped field. Your team reviews the diff to verify talent pool tagging, pipeline stage mapping, owner resolution, and custom field population. This step catches value-mapping gaps and Bullhorn validation errors (e.g., required fields without data) before the full run commits.
Execute full migration with delta-pickup window
After sample migration sign-off, FlitStack runs the full migration using Bullhorn's bulk import tools and REST API, importing candidates, job orders, talent pool records, client corporations, and notes in dependency order (ClientCorporation → JobOrder → Candidate → JobSubmission → Placement). A delta-pickup window of 24–48 hours captures any records modified or created in Teamdoor during the cutover. All operations are logged in an audit report. One-click rollback is available if reconciliation fails — this reverts Bullhorn to its pre-migration state using the audit log.
Post-migration reconciliation and rebuild handoff
FlitStack runs a reconciliation report comparing record counts, field population rates, and a random-sample data accuracy check across migrated entities. Candidate and job order totals are validated against Teamdoor exports. For the items that do not migrate — Bullhorn Career Portal content, Teamdoor workflows, email templates, and analytics report snapshots — we deliver structured export files and rebuild reference documents so your Bullhorn admin can recreate them. Teamdoor access is retained in read-only mode for 30 days post-migration as a cross-reference.
Platform deep dives
Teamdoor
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between Teamdoor and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Teamdoor and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between Teamdoor and Bullhorn ATS & CRM.
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
Teamdoor: Not publicly documented.
Data volume sensitivity
Teamdoor 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 Teamdoor to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Teamdoor 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 Teamdoor
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.