13.3 Position Code Generation, Position Workflows, Right to Return Setup, and Rule Functions

Key Takeaways

  • Automatic position codes need a sequence, a Rules for MDF Based Objects rule under Save Rules, a read-only code field, and the onSave code-generation setting set to Yes.
  • Position workflows use a Rules for MDF Based Objects rule with purpose Workflow, assigned as an onSave (Save) rule, plus Pending Data = Yes.
  • Workflows on positions run only after all Save and Validate rules, so the code-generation rule runs first.
  • Advanced To-do Key Details can show up to four position fields, and only one instance is allowed per company.
  • Position rule functions include Get Incumbent By Position, Get Next Available Manager By Position, and Get Pay Range By Position.
Last updated: September 2026

13.3 Position Code Generation, Position Workflows, Right to Return Setup, and Rule Functions

Quick Answer: Generate position codes from MDF sequences with a Rules for MDF Based Objects rule under the Position object's Save Rules, and set Position External Code Generation by onSave rule = Yes. Protect position changes with workflow rules (purpose Workflow, assigned onSave, with Pending Data = Yes). Register right to return rules in PM Settings. Use PM rule functions such as Get Incumbent By Position in conditions.

Generating Position Codes Automatically

Automatic codes keep codes consistent and avoid entry errors. They can vary by attribute, for example by the country of the position's company (US_POS10, DEU_POS25…).

  1. Create sequences in Manage Sequence, Manage Data, or Import and Export Data. Each has a start value and a step. THR79's example uses PTSeqPos starting at 1000 with step 125 for Portugal, and another starting at 106 with step 10 for others. The current value is transient.
  2. Create the rule: Rules for MDF Based Objects, Base Object Position, Purpose Evaluate. The THEN sets the code from a format template and a sequence. Formats use Java format string syntax. For example, 1%07d gives an 8-digit number starting with 1. SAP's example uses PTPosID_%d for Portugal and PosID%d otherwise.
  3. Assign the rule under Save Rules in the Position object.
  4. Set the code field (externalCode) to Read Only.
  5. Position Management Settings > General > Position External Code Generation by onSave rule = Yes.

Creating a position in Manage Positions now shows a read-only code that is generated on save (PosID_1, PosID_2…). The Check Tool flags inconsistencies, such as the setting being Yes while the code is editable or no rule is assigned.

Workflows for Position Creation and Changes

Managers may be allowed to create positions for their teams. Even with fine-grained RBP, approval is often required.

  1. Create the workflow record(s) in Manage Organization, Pay and Job Structures with approvers, contributors, and CC roles.
  2. Create the rule: Rules for MDF Based Objects, Base Object Position, Purpose Workflow. IF or ELSE IF define when. THEN sets the wfConfig field (Workflow Context.Workflow Configuration).
  3. Assign it as an onSave rule (under Save Rules) in Configure Object Definitions > Position.
  4. Set Pending Data = Yes on the Position object, so records are not visible until approved. This is a prerequisite for position workflows.
  5. For the latest home page, the To Do Category is Generic Object Change Requests (read-only).

Unless you use position types, you cannot run a workflow on Job Information changes if position changes must sync to incumbents.

Order of execution: workflows trigger only after all MDF Save and Validate rules have run, so the code-generation rule runs first. To target only new positions, test Original Record.Position Code is equal to Null.

Worked Example (THR79)

WorkflowSteps
NewPositionUSDynamic Role Finance Controller (Context Source) → Dynamic Role HR Approval
NewPosWFNonUSDynamic Group Talent Approval → Position Relationship Parent Parent Position (Context Target, Relationship to Approver Position) → Dynamic Role HR Approval

Rule New_Position_WFL: IF Original Record.Position Code = Null and Position.Company.Country = USA → wfConfig = NewPositionUS; ELSE IF … Country ≠ USA → NewPosWFNonUS. Assign it under Save Rules, then test by adding a US position and a non-US lower-level position.

Managing Position Workflow Requests

Approvers act from Home Page engagement cards: quick approval with or without comments, drill-down, update transaction, post a comment, send back, and assign to me for group approvers. View Pending Workflows leads to My Workflow Requests, which requires Manage Workflows > Professional Edition Manage Workflow Requests.

Advanced To-do Key Details customizes the Key Details column for position requests. In Manage Data > Create New > Advanced To-do Key Details, choose the Position object and up to four fields, for example externalName, company, businessUnit, and jobCode. Only the Position object supports this, and each company can have only one instance. Edit it, or delete and recreate it.

Right to Return Setup

In Position Management Settings > Right to Return (global assignment example):

SettingValue
Unassign from PositionRule from Unassigned Incumbent from Position for Right to Return
Create Right to ReturnRule from Create Right to Return for Incumbent
Event Reason for unassigned PositionAway on Global Assignment (AGA)
Event Reason for assign PositionBack from Global Assignment (BGA)

THR79's test adds a long-term global assignment to Ace Germany on the Sales Director, Europe position, with a workflow approved by a Talent Approval member. The host position shows the Global Assignment icon and becomes fully staffed. The home position shows Away on Global Assignment. After the planned end date, the host position returns to TBH and the icon disappears.

Rule Functions for Position Management

FunctionReturnsInputs
Get Incumbent By PositionThe incumbent's user ID; only one if severalPosition code and start date
Get Next Available Manager By PositionThe next available manager in the position hierarchyPosition code and start date
Get Matrix Position Code By TypeThe matrix position of a given typePosition code, date, matrix relationship type
Get Number of Child PositionsThe count of child positionsPosition code, date, include inactive?
Get Pay Range By PositionThe pay range for a positionPosition data
Get Pay Range AttributesMinimum, maximum, midpoint, currency, frequencyPay range, field, date
Is Position Below User's Position in Hierarchy (New Version)Whether a position is in and below the user's hierarchyCan be used for new positions
Test Your Knowledge

Which steps are needed so position codes are generated automatically on save?

A
B
C
D
Test Your Knowledge

A rule triggers a workflow for new positions, and a code-generation rule also runs on save. Why does THR79 check that the position code is not empty, or test the Original Record code for null?

A
B
C
D
Test Your Knowledge

Which rule function returns the user ID of the person occupying a given position on a date?

A
B
C
D