Movements Reference Public

Daily Operations

Step-by-step SOPs for the Movements module: record and reverse employee movements, publish internal openings, run the candidate pipeline, and apply through the staff internal job portal.

Guide version: r1 Module version: 1.1.0 Updated: 2026-07-22 Estimated time: 7 min 1 views
Guides

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

????
Who: HR with movements_create. When: a change is decided outside the internal-hiring flow (a lateral transfer, a correction to onboarding, an off-cycle raise).
  1. Open the recorder

    On the Employee Movement page, click Record movement.

  2. 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.

  3. 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.

  4. 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.

ℹ️
Recording ≠ changing the employee. A manual movement documents a change in the audit trail; it does not itself rewrite the Employee Master. (Candidate selection in Internal Hiring is the flow that updates the employee record and records the movement together.)

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.

  1. Open the movement

    Click the eye icon to view the movement's details.

  2. 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.

  3. 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_delete and 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

Draft
Created, editable
Pending Approval
Submitted
Published
Visible on portal
Closed / Filled
No new applications
Cancelled
Withdrawn

Status changes are server-validated — only the allowed next steps are accepted. Publishing requires internal_hiring_publish.

Create and publish an opening

  1. 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.

  2. 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.

  3. 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.

????
An opening can be deleted only while it is still a Draft. Once published, it is part of the pipeline record — close or cancel it instead.

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.

Applied
Submitted
Screening
Initial review
Assessment
Tests / tasks
Interview
Panel
Offer
Approval
Selected
Final
  1. 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.

  2. 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.)

  3. Reject when needed

    Use Reject application to end a candidacy; it is recorded in the stage history.

Select a candidate (the one-transaction step)

⚙️
Selection does five things atomically. With 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.
  1. Open the selection form

    On a submitted application, click Select candidate.

  2. 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.

  3. 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 Portalno HR permission needed. It shows the openings visible to them, their live eligibility, and their own applications.

????
Your identity is taken from your session. Every portal action resolves you from the signed-in account — the page never trusts an employee id from the browser, and you can only act on your own applications.

Apply for an opening

  1. Browse

    Open the portal and pick an opening you're interested in. Click View details.

  2. 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.

  3. 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 movements permission) 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.

Next steps

Was this guide helpful?

Report a content problem