Daily Operations
The click-by-click procedures for every Movements surface — written first for the HR operator, then for the employee using the self-service portal. Each SOP names who does it and what the system does behind the scenes.
Employee Movement
The movement audit table (HR Operations → Employee Movement) is the tamper-evident
history of every department, position, manager and salary change. Rows are immutable: you
can record, view, reverse, or delete — but never edit.
Record a movement manually
movements_create. When: a change is decided outside the
internal-hiring flow (a lateral transfer, a correction to onboarding, an off-cycle raise).
-
Open the recorder
On the Employee Movement page, click Record movement.
-
Pick the employee
Choose the person. The form pulls their current department, position and (if you have the salary permission) salary from the Employee Master and pre-fills the "from" side — so you only fill in the "to" side.
-
Choose the movement type and the new values
Select a type (Promotion, Transfer, Salary Adjustment, Role Change, Manager Change, New Hire or Separation), then set the new department, position, and — if permitted — the new salary. Add notes explaining the change.
-
Save
The row appears immediately on the table and on the employee's profile. The "from" values are re-resolved on the server for accuracy, and the row is stamped with an idempotency key so an accidental double-submit does not create a duplicate.
Correct a mistake — record a reversal
Because history is immutable, you fix a wrong movement by recording a reversal: a correction row that swaps the from/to values of the original and links back to it.
Open the movement
Click the eye icon to view the movement's details.
Reverse it
With
movements_update, choose Reverse (correction), add a note explaining why, and confirm. A new Correction-type row is created that points at the original.Verify
Both rows remain visible — the original is never removed. The trail now shows the change and its correction.
View, filter and delete
- Filter the table by movement type, source (Manual, Internal Hiring, Auto Capture, Offboarding, Legacy Backfill) and department.
- Salary columns show only if you hold
movements_view_salary; otherwise they read Hidden. - Delete is available only with
movements_deleteand is a last resort for a row created entirely in error — prefer a reversal so the trail is preserved.
Internal Hiring
The Internal Hiring workspace (HR Operations → Internal Hiring) has three tabs —
Openings, Applications and Policy Overrides — and is where HR posts roles and
moves candidates from applied to selected.
The opening lifecycle
Status changes are server-validated — only the allowed next steps are accepted. Publishing
requires internal_hiring_publish.
Create and publish an opening
-
Create the opening
On the Openings tab click Create opening. Give it a title; set the target department and position, the hiring manager, the number of slots, work arrangement and location; write the description, responsibilities and one eligibility requirement per line. A unique code (for example
IJP-0001) is assigned automatically. -
Set audience and publication options
Choose the audience — all active employees or selected departments — and whether publishing should post to Announcements and/or the Timeline. If you can view salary, optionally set a salary range and tick Show salary range to reveal it to applicants. Save; the opening starts as a Draft.
-
Submit and publish
Open the opening's detail page and move it to Pending Approval, then Publish (requires the publish permission). On publish, the audience-scoped announcement and/or timeline post are created (subject to the auto-post settings), and the opening becomes visible on the portal.
Run the candidate pipeline
Each application on a published opening walks an ordered set of stages. Open an opening to see its applicants, or use the Applications tab across all openings.
Review an application
Click the eye icon to see the applicant, their cover note, the policy snapshot taken at submission (so you can see they were eligible), and the full stage history.
Advance a stage
Use Change stage to move the application forward and add notes. Every move is written to the stage history with who did it and when. (You cannot jump straight to "Selected" from here — that has its own controlled step below.)
Reject when needed
Use Reject application to end a candidacy; it is recorded in the stage history.
Select a candidate (the one-transaction step)
internal_hiring_select, confirming
a selection: (1) marks the application Selected and logs the stage, (2) updates the
employee's position/salary, (3) moves their department membership, (4) records the employee
movement, and (5) fills a slot on the opening. If any step fails, all of them roll
back — you never get a half-applied selection.
Open the selection form
On a submitted application, click Select candidate.
Confirm the effective values
The form defaults to the opening's target department and position; adjust if needed, set the new salary (if permitted), and set the effective date. Add notes.
Confirm
The server re-checks the mobility policy (excluding this application's own count), then commits everything in one transaction. The employee record now reflects the move, and a movement row appears in the audit trail with source Internal Hiring.
Decide policy overrides
When an employee is blocked by policy and requests an exception, it lands on the Policy
Overrides tab as Pending. With mobility_override, review the failed rule(s)
and the reason, then Approve or Reject. An approved, unexpired override lets that
employee bypass the policy rules for that opening (but never the structural rules — the opening
must still be open and they cannot double-apply).
Internal Job Portal (for employees)
Every active staff member can open HR Operations → Internal Job Portal — no HR permission needed. It shows the openings visible to them, their live eligibility, and their own applications.
Apply for an opening
Browse
Open the portal and pick an opening you're interested in. Click View details.
Check your eligibility
The Your eligibility panel is computed by the server. It shows your mobility usage (for example "1 of 3 used"), your tenure, and whether any rule blocks you.
Apply
If eligible, add an optional cover note and click Apply now. The server re-runs the eligibility check on submit, records your application at the Applied stage, and confirms with your updated usage.
Withdraw an application
On the portal (or the "My Internal Applications" profile tab), open one of your submitted applications and click Withdraw. Depending on policy, a withdrawal may still count toward your limit — unless your company set a grace window and you withdraw within it, in which case the count is released.
Request a policy exception
If you're blocked by a policy rule (for example you've hit your limit) and overrides are enabled, the opening offers a Request exception button. Enter a reason and submit; it goes to HR as a pending override. You cannot have two pending requests for the same opening, and you can't request an exception for a structural block (the opening being closed, or an application you already have).
Working from the employee profile
Two more surfaces live on the team-member profile page:
- Employee Movement tab — HR (with the
movementspermission) sees the viewed employee's full movement history in place. - My Movement History and My Internal Applications — self-service tabs on your own profile. What you can see about your own salary changes follows the salary-visibility setting; applications are yours and yours only.