Actions57
- Appointment Actions
- Candidate Actions
- Client Contact Actions
- Client Corporation Actions
- Job Order Actions
- Job Submission Actions
- Lead Actions
- Note Actions
- Opportunity Actions
- Placement Actions
- Task Actions
Placement → Create
AI-generatedSummary
Creates a placement in Bullhorn CRM. If a placement with the same candidate and jobOrder already exists (even if soft-deleted), the node restores and updates it before creating a new record, avoiding IMPROPERLY_STRUCTURED_ASSOCIATION errors.
Inputs
- candidate (required) — Candidate ID (number). Required field for create operation.
- jobOrder (required) — Job Order ID (number). Required field for create operation.
- status (required) — Status (string). Required field for create operation. Defaults to 'Placed'.
- dateBegin (required) — Date Begin (dateTime). Required field for create operation. Represents the start date of the placement.
- payRate (required) — Pay Rate (number). Required field for create operation. Hourly or unit pay rate.
- clientBillRate (required) — Client Bill Rate (number). Required field for create operation.
- dateEnd — Date End (dateTime). Optional field. End date of the placement.
- salary — Salary (number). Optional field.
- salaryUnit — Salary Unit (string). Optional field. e.g. 'Per Year', 'Per Hour'.
- fee — Fee (number). Optional field.
- jobSubmission — Job Submission ID (number). Optional field.
- additionalFields — Additional Fields (collection, placeholder 'Add Field'). Optional. Contains optional fields: dateEnd, salary, salaryUnit, fee, jobSubmission, customFields (json).
- customFieldValues — Custom Fields (fixedCollection, multipleValues). Optional. Set custom fields by their display name; only shows fields with user-assigned labels. Each entry has a fieldName (loaded via getCustomFields) and a fieldValue (string, auto-coerced to number if numeric).
Output shape
The created or restored placement entity data as returned by the Bullhorn API (PUT to entity/Placement). Includes all written fields and system-generated metadata.
On conflict (existing candidate+jobOrder pair), the node first checks for an active (non-deleted) record and updates it; if only a deleted record exists, it restores and updates that; otherwise, a new record is created.
Examples
Example 1: Create a new placement
Set candidate=123, jobOrder=456, status='Placed', dateBegin='2024-01-15', payRate=25, clientBillRate=50. Leave other optional fields at defaults.