How-to

Position lifecycle: freeze, close, reopen

Open → Filled (auto on hire) → Open (auto on termination + keep_position_open). Freeze for cost-control hiring pauses. Close for true headcount cuts.

1 min readLast updated 25 May 2026
Jump to section

States

StateMeaning
openBudgeted, vacant, recruitable
filledHas an active contract pointed at it
frozenTemporarily paused (cost-control); recruitment can't target
closedPermanently gone; not in current headcount

Transitions

  • open → filled — automatic when an offer is accepted (atomic hire) and links to this position
  • filled → open — automatic when the employee is terminated WITH keep_position_open=true
  • filled → closed — when termination has keep_position_open=false (true headcount reduction)
  • open → frozen — manual, via Freeze button
  • frozen → open — manual, via Unfreeze
  • closed → open — manual, via Reopen

Freezing

  1. Open the position detail page.
  2. Click Freeze.
  3. Add an optional reason (cost control, restructure pending, etc.).

Frozen positions are excluded from the Vacancies view and recruitment can't create new jobs against them.

Closing

  1. Position detail > Close.
  2. Optional reason.

If the position has child positions reporting to it, the children's reports_to_position_id cascades up to the grandparent. No orphan subtrees.

Reopening

  1. Position detail > Reopen (only shown when status=closed).
  2. The position goes back to open and can recruit again.

Audit trail

Every transition writes an audit log entry with actor, old status, new status, reason.

Still stuck? Email support or open the support widget in the bottom-right.