Skip to main content
An appraisal cycle is one round of performance reviews — “who is being appraised, against what, and over which period”. It is the container that pulls a set of employees together, attaches an appraisal template to each of them, generates their individual appraisals, and tracks the round through to completion. Think of it as the project plan for a quarterly or annual review; the individual scoring happens on the appraisals it spawns. This page covers creating a cycle, fetching the employees who belong in it, generating their appraisals, and moving the whole round from Not Started through to Completed. You’ll find this at: /hr/performance/cycles (the list) and /hr/performance/cycles/:id (a single cycle).
Hitaji 360 is multi-business: appraisal cycles, their employees, templates, and appraisals are isolated per business. Cycle names must be unique within a business, not across all of them. Before you create or change a cycle, confirm the correct business is selected in the switcher at the top of the app — a cycle created in the wrong business pulls in the wrong employees.
📷 Screenshot: Appraisal Cycles list with the status filter and the “New Cycle” button — to be added.

The cycle lifecycle (statuses)

Every cycle carries a status that controls what you can do with it. Two things to keep in mind:
  • Fetching employees implicitly moves a Not Started cycle to In Progress. If you pull eligible employees into a fresh cycle, the system starts it for you automatically (you don’t need to press Start first).
  • Editing locks up once the cycle starts. On the detail page, the Configuration tab and the appraisee actions (template combobox, remove button) are only active while the status is Not Started. Once the cycle is In Progress the configuration is shown as a read-only summary.

Creating a cycle

From the Appraisal Cycles list choose New Cycle.
📷 Screenshot: New Appraisal Cycle modal — to be added.
A cycle is created as Not Started. If your business uses a naming series, the cycle is also stamped with a generated identifier (e.g. HR-APC-2026-0001) alongside the name you typed.
⚠️ Current state: The org unit and designation scope filters exist on the cycle (they control who Fetch employees pulls in) but the create/edit modal does not currently expose them — the form collects name, dates, description, evaluation method, and the formula toggle only. Until the UI adds these fields, a cycle created from the screen pulls all eligible employees in the business when you fetch them. (Flagged for the team.)

Editing a cycle

Open a cycle and use the Configuration tab.
  • A Not Started cycle can be edited freely — change the name, dates, description, evaluation method, or formula and Save Changes.
  • Once the cycle is In Progress or Completed the configuration is shown read-only; the system rejects edits to a completed cycle outright.
  • The evaluation method is locked once any appraisals have been created. Even on a still-editable cycle, you cannot switch between Automated and Manual rating after appraisals exist — change it before you generate them.

Working with appraisees (the Appraisees tab)

The Appraisees tab is where you decide which employees this cycle covers and which template each will be appraised against. These actions are only available while the cycle is Not Started.
📷 Screenshot: Appraisees tab with the “Fetch Employees” control and the per-row template picker — to be added.

Fetch employees

Choose Fetch Employees to pull every eligible employee into the cycle as an appraisee. Eligibility is determined by the cycle’s org-unit / designation scope (so, today, typically all employees in the business — see Current state above). Each fetched employee is assigned a template using this order of preference:
  1. the default template you picked in the Default template (optional) box before fetching, otherwise
  2. the employee’s designation default template, otherwise
  3. no template (you’ll need to assign one before appraisals can be created for them).
Fetching is additive and safe to repeat — employees already on the cycle are skipped, so re-fetching only adds anyone newly eligible. Remember, fetching on a Not Started cycle also starts it.

Assign or change a template per appraisee

Each appraisee row has a Template picker. Assign or swap the template for one person directly there. An appraisee with no template will be skipped when you create appraisals (and counted as missing template).

Remove an appraisee

Use the remove (bin) action on a row to take someone out of the cycle before appraisals are generated.

Creating appraisals

Once your appraisees have templates, choose Create Appraisals. This generates one appraisal per appraisee that has a template and is idempotent — re-running it skips anyone who already has an appraisal, so it’s safe to press again after fixing missing templates. The result is reported back to you as counts: Large cohorts run in the background. Above 30 appraisees the work is queued rather than run on the spot — the screen confirms “creating … in the background” and the Appraisals created figure on the summary cards climbs as the queue works through them. Refresh the summary to watch progress.
You must fetch employees first. Creating appraisals on a cycle with no appraisees is refused with “No appraisees on this cycle. Fetch employees first.”

The summary cards

The top of the cycle detail page shows four KPI cards, fed live from the cycle summary: (The summary also tracks appraisals created and appraisals submitted, which is what the background-creation progress and the completion guard below rely on.)

Starting and completing a cycle

  • Start Cycle (shown on a Not Started cycle) moves it to In Progress. If you fetched employees first, the cycle is already started and this button won’t appear.
  • Complete Cycle (shown on an In Progress cycle) closes the round. A confirmation dialog reminds you that employees with unsubmitted appraisals may be left out of final scores.
Completion is guarded. The system refuses to complete a cycle unless:
  1. it has at least one appraisal, and
  2. every appraisal has been submitted — if any are still in draft/unsubmitted, completion is refused with a message naming how many remain (e.g. “Cannot complete the cycle — 3 appraisal(s) are not yet submitted.”).
Once completed, the cycle is read-only.

Deleting a cycle

A cycle with no appraisals can be deleted (it is soft-deleted, so it disappears from the list). A cycle that has appraisals cannot be deleted — the system refuses with “Cannot delete a cycle that has appraisals. Cancel the appraisals first.” Delete or cancel the appraisals first, then delete the cycle.
⚠️ Current state — the old “stuck cycle” deadlock (now fixed): A cycle used to be able to get permanently stuck. A Submitted appraisal that had issued no reward could not be deleted; because the cycle in turn refused to delete while it had any appraisals, the whole cycle became a dead end. This is fixed: a submitted appraisal that carries no issued reward can now be purged, which clears the deadlock. In plain terms — if a cycle ever looks stuck because of old submitted appraisals that never produced a reward, those appraisals can now be deleted, freeing the cycle for deletion. (See Appraisals and Appraisal rewards.)

Permissions

Actions on cycles are gated by these permission slugs (your role may have some and not others). Everything is tenant- and business-scoped; requests outside your current business fail closed.

Behind the scenes

A cycle is stored against your tenant and business; reads, updates, fetch-employees, appraisal creation, and deletes are all re-checked against the business in your X-Business-Id context, so a cycle from another business can never be read or mutated by spoofing an ID. When you fetch employees, the system resolves the cycle’s org-unit / designation scope to a list of eligible employees, skips anyone already enrolled, and inserts the rest as appraisees — snapshotting each person’s name, department, and designation onto the appraisee row for fast list rendering. When you create appraisals, it loops over those appraisees and asks the appraisal service to build one appraisal each from the assigned template; small batches run immediately and large ones (over 30) are handed to a background queue. The complete guard reads the same summary counts the cards show, so the numbers you see are exactly what the guard checks.