メインコンテンツまでスキップ

Hiring Plans

Hiring Plans manage the full lifecycle of resource requisitions, from initial proposal through approval and recruitment to final fulfillment. Plans can be created manually or auto-generated from capacity plan hiring triggers.

Overview​

When capacity planning reveals persistent resource gaps, the organization needs a structured process to fill those gaps. ProBeya hiring plans provide a governed requisition pipeline with clear status transitions, approval gates, and traceability back to the capacity plan that triggered the need. Each plan tracks the target role, headcount, salary estimates, justification, and the eventual hired resource.

Getting Started​

  1. Navigate to PPM > Hiring Plans to see the requisition pipeline.
  2. Click + New Hiring Plan or use Auto-Generate from Capacity Plan to create plans for all under-resourced roles.
  3. Fill in the role, requested headcount, target start date, and justification.
  4. Submit for approval — an authorized approver reviews and approves the requisition.
  5. Track the plan through recruitment until the position is filled.

How It Works​

Requisition Lifecycle​

Hiring plans follow a strict state machine with validated transitions:

proposed --> approved --> in_recruitment --> filled
\ \ \
--> cancelled --> cancelled --> cancelled
StatusDescription
ProposedInitial request — can be edited before approval
ApprovedManagement has authorized the hire
In RecruitmentActive recruiting is underway
FilledPosition has been filled and linked to the hired user
CancelledRequisition withdrawn at any non-terminal stage

Valid Transitions:

FromAllowed To
proposedapproved, cancelled
approvedin_recruitment, cancelled
in_recruitmentfilled, cancelled
filled(terminal state)
cancelled(terminal state)

Attempting an invalid transition (e.g., jumping from proposed directly to in_recruitment) returns a BAD_REQUEST error with a descriptive message.

Creating a Hiring Plan​

The create mutation requires:

FieldTypeRequiredDescription
roleIdstringYesReference to an organization role definition (validated)
requestedHeadcountnumberYesNumber of positions to fill
startDatestring (date)YesTarget start date for the hire
justificationstringYesBusiness case for the hire
linkedCapacityPlanIdstringNoReference to originating capacity plan
salaryEstimateMinnumberNoLower bound of salary range
salaryEstimateMaxnumberNoUpper bound of salary range

The role must exist in the organization's role definitions before it can be referenced.

Auto-Generation from Capacity Plans​

The autoGenerate mutation reads a capacity plan and creates one hiring plan per role in the organization's role definitions. Each auto-generated plan includes:

  • The target role from the capacity plan
  • A default headcount of 1 (adjustable before approval)
  • A justification referencing the originating capacity plan by name
  • A link back to the capacity plan via linkedCapacityPlanId

This bulk-creation feature saves significant time compared to manually creating individual requisitions for each under-resourced role.

Updating Plans​

Plans can only be updated while in proposed status. Once approved, the plan details are locked to maintain governance integrity. The update supports partial modification of:

  • Requested headcount
  • Start date
  • Justification
  • Salary estimate range
  • Role assignment

Approval Workflow​

The approve mutation transitions a plan from proposed to approved. It records:

  • The approver's user ID (approvedById)
  • The approval timestamp (approvedAt)

Only users with Admin role can approve hiring plans.

Recruitment Tracking​

The markInRecruitment mutation moves an approved plan into active recruitment. This signals to the team that the position is being actively sourced.

Fulfillment​

When a hire is completed, the markFilled mutation:

  • Sets the status to filled
  • Links the hired user's profile via linkedUserId
  • Records the fulfillment timestamp (filledAt)

This closes the loop from demand identification through capacity gap to staffing resolution.

Cancellation​

The cancel mutation withdraws a requisition from any non-terminal status (proposed, approved, or in_recruitment). Cancellation is a terminal state and cannot be reversed.

Salary Estimates​

Salary values are stored as text (numeric strings) in the database for precision with large currency amounts. Each plan can optionally include:

  • salaryEstimateMin — lower bound of the expected salary range
  • salaryEstimateMax — upper bound of the expected salary range

These help budget owners assess the financial impact of approved hires before committing to recruitment.

Listing and Filtering​

The list query supports optional filters:

FilterTypeDescription
statusenumFilter by current status (proposed, approved, in_recruitment, filled, cancelled)
roleIdstringFilter by specific role

Results are ordered by creation date descending and include the role name and code via a left join to the role definitions table.

Configuration​

  • Roles — must exist in the organization's role definitions before a plan can reference them
  • Capacity plan link — optional reference to the capacity plan that triggered the hire
  • Salary currency — follows the organization's default currency settings

Permissions​

ActionRequired Role
View hiring plansAny member
Create or update proposed plansEditor or Admin
Approve a planAdmin
Advance to recruitment or filledAdmin
Cancel a planAdmin
Auto-generate from capacity planAdmin

API Reference​

ProcedureTypeDescription
ppmHiringPlans.createMutationCreate a new hiring plan
ppmHiringPlans.autoGenerateMutationBulk-create plans from a capacity plan
ppmHiringPlans.updateMutationUpdate a proposed plan's details
ppmHiringPlans.approveMutationTransition from proposed to approved
ppmHiringPlans.markInRecruitmentMutationTransition from approved to in_recruitment
ppmHiringPlans.markFilledMutationTransition to filled with hired user link
ppmHiringPlans.cancelMutationCancel from any non-terminal status
ppmHiringPlans.listQueryList plans with optional status/role filters
ppmHiringPlans.getByIdQueryGet a single plan with role details

Tips & Best Practices​

ヒント

Use the auto-generate feature after approving a capacity plan. It creates draft requisitions for every under-resourced role in a single action, saving significant time compared to manual creation.

ヒント

Always include a clear justification that references specific project demand. Requisitions with vague justifications are more likely to be questioned during approval and budget review cycles.

ヒント

Monitor the pipeline view regularly. Plans stuck in proposed for more than two weeks may indicate a bottleneck in the approval process that needs management attention.