> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hitaji360.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Job requisitions

> A job requisition is the formal request to hire. Before you advertise a role, someone in the business raises a requisition that says what the role is, how…

A job requisition is the formal *request to hire*. Before you advertise a role, someone in the business raises a requisition that says what the role is, how many people are needed, what it should pay, and why. It then goes through approval, and once approved it can be turned directly into a [job opening](/hr/user/recruitment/job-openings) that candidates can apply to. Think of it as the paper trail that gets a vacancy authorised before any advertising or interviewing begins.

This page covers raising a requisition, the approval workflow, the statuses it moves through, and how to convert an approved requisition into an opening.

**You'll find this at:** `/hr/recruitment/requisitions` (list), `/hr/recruitment/requisitions/new` (create), `/hr/recruitment/requisitions/:id` (detail)

> 📷 *Screenshot: Job Requisitions list with status filter and the "New Requisition" button — to be added.*

***

## Before you start

* **Which business am I in?** Requisitions belong to the business selected in the switcher at the top of the app. A requisition is only visible within the business it was created in.
* **Each requisition gets a reference number** automatically (a tenant-wide series, e.g. `HR-JREQ-2026-0001`). You don't type it.

***

## The requisition lifecycle (statuses)

| Status              | Meaning                             | What you can do                              |
| ------------------- | ----------------------------------- | -------------------------------------------- |
| **Pending**         | Just raised, awaiting a decision.   | Approve, Reject, or put On Hold.             |
| **Open & Approved** | Approved and authorised to recruit. | Create a job opening, or put On Hold.        |
| **On Hold**         | Paused.                             | Resume (Approve it back to Open & Approved). |
| **Rejected**        | Turned down.                        | Nothing further.                             |
| **Filled**          | The role has been filled.           | Nothing further. Time-to-fill is recorded.   |
| **Cancelled**       | Withdrawn.                          | Nothing further.                             |

The state machine is enforced on the server, so the buttons you see depend on the current status:

* **Pending** → can be **approved** (→ Open & Approved), **rejected** (→ Rejected), or **held** (→ On Hold).
* **Open & Approved** → can be turned into an opening, or **held**.
* **On Hold** → can be **resumed** by approving it again (→ Open & Approved).

Trying an action that isn't allowed for the current status is blocked with a clear message, e.g. *"Cannot approve a requisition in 'Rejected' status. Only 'Pending' requisitions can be approved."*

***

## Raising a requisition

From the list, choose **New Requisition** (you need `hr-recruitment:write`). The form is grouped into cards.

> 📷 *Screenshot: New requisition form — Position Details, Staffing & Compensation, Timeline & Requester — to be added.*

| Field                     | Required | Notes                                                                                                    |
| ------------------------- | -------- | -------------------------------------------------------------------------------------------------------- |
| **Designation**           | Yes      | The job title, e.g. "Senior Software Engineer" (up to 255 characters).                                   |
| **Department**            | No       | Pick an org unit; you can quick-create one inline.                                                       |
| **Position**              | No       | Pick a defined position from your [org structure](/hr/user/getting-started/org-structure).               |
| **Number of Positions**   | Yes      | How many people you need. Minimum 1; defaults to 1.                                                      |
| **Expected Compensation** | No       | A salary figure / expectation. Carried over to the opening as its salary range minimum when you convert. |
| **Posting Date**          | Yes      | When the requisition is dated. Defaults to today. The clock for *time to fill* starts here.              |
| **Expected By**           | No       | Target date you'd like the role filled by.                                                               |
| **Requested By**          | No       | The employee making the request (picked from your directory).                                            |
| **Description**           | No       | Rich-text job description — responsibilities, qualifications, skills.                                    |
| **Reason for Requesting** | No       | The business justification — team expansion, replacement, new project (up to 2,000 characters).          |

New requisitions are created as **Pending**.

> **Duplicate guard:** Hitaji 360 stops you raising a second active requisition for the *same designation, department, and requester* while one is still open. You'll see *"An active requisition already exists for designation '…' (REF). Cancel or fill the existing one first."* Cancel or fill the existing one before raising another.

***

## Approving, rejecting, and holding

Open a **Pending** requisition. If you have `hr-recruitment:approve`:

* **Approve** moves it to *Open & Approved* — it's now cleared to recruit.
* **Reject** moves it to *Rejected*. A small dialog lets you enter an optional reason.

If you have `hr-recruitment:write`, you can also **Put on Hold** to pause it. A held requisition can be resumed later by approving it again.

> ⚠️ **Current state:** The reject dialog asks for an optional reason, but the reason is **not stored** — the server discards it. Treat the field as a courtesy note only; if the reason matters, record it elsewhere. (Flagged for the team.)

***

## Turning a requisition into a job opening

Once a requisition is **Open & Approved**, open it and choose **Create Job Opening** (needs `hr-recruitment:write`). This creates a new [job opening](/hr/user/recruitment/job-openings) and copies across:

* **Job title** ← the requisition's designation
* **Number of positions**
* **Position** and **Department** (if set)
* **Salary range (minimum)** ← the expected compensation
* **Description**
* A back-reference so the opening "remembers" which requisition it came from

The new opening starts in **Open** status. The requisition itself **stays Open & Approved** — it is not changed by the conversion.

### How a requisition gets to "Filled"

You don't normally mark a requisition Filled by hand. When you **close the job opening** that was created from a requisition, Hitaji 360 automatically marks the linked requisition **Filled**, stamps its completion date, and records the **time to fill** (the gap between posting date and completion). This is what feeds the *average time to fill* figures on the dashboard. Requisitions already in a final state (Filled, Rejected, Cancelled) are left alone.

> ⚠️ **Current state:** On the requisition **detail** page, the "Time to fill" value is shown as a raw seconds count but labelled "days", so a role filled in 10 days reads as a very large number. The requisitions **list** shows it correctly in days. (Display bug, flagged for the team — the underlying data is correct.)

***

## Editing and cancelling

* A requisition can be **edited** at any time except once it is **Cancelled** (then editing is blocked).
* A requisition can be **cancelled** from any state except when it is already Cancelled.
* Deletion is a soft-delete — the record is hidden, not destroyed — and is gated by `hr-recruitment:write`.

***

## Permissions

| Action                                                 | Permission               |
| ------------------------------------------------------ | ------------------------ |
| View requisitions                                      | `hr-recruitment:read`    |
| Create, edit, hold, cancel, delete, create job opening | `hr-recruitment:write`   |
| Approve / reject                                       | `hr-recruitment:approve` |

***

## Related

* [Recruitment overview & dashboard](/hr/user/recruitment/overview) — where requisitions sit in the funnel
* [Staffing plans](/hr/user/recruitment/staffing-plans) — plan headcount before raising requisitions
* [Job openings](/hr/user/recruitment/job-openings) — the advertised role a requisition becomes
* [Org structure](/hr/user/getting-started/org-structure) — departments and positions
