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.
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…).
- 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.
- 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.
- Assign the rule under Save Rules in the Position object.
- Set the code field (externalCode) to Read Only.
- 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.
- Create the workflow record(s) in Manage Organization, Pay and Job Structures with approvers, contributors, and CC roles.
- 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).
- Assign it as an onSave rule (under Save Rules) in Configure Object Definitions > Position.
- Set Pending Data = Yes on the Position object, so records are not visible until approved. This is a prerequisite for position workflows.
- 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)
| Workflow | Steps |
|---|---|
| NewPositionUS | Dynamic Role Finance Controller (Context Source) → Dynamic Role HR Approval |
| NewPosWFNonUS | Dynamic 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):
| Setting | Value |
|---|---|
| Unassign from Position | Rule from Unassigned Incumbent from Position for Right to Return |
| Create Right to Return | Rule from Create Right to Return for Incumbent |
| Event Reason for unassigned Position | Away on Global Assignment (AGA) |
| Event Reason for assign Position | Back 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
| Function | Returns | Inputs |
|---|---|---|
| Get Incumbent By Position | The incumbent's user ID; only one if several | Position code and start date |
| Get Next Available Manager By Position | The next available manager in the position hierarchy | Position code and start date |
| Get Matrix Position Code By Type | The matrix position of a given type | Position code, date, matrix relationship type |
| Get Number of Child Positions | The count of child positions | Position code, date, include inactive? |
| Get Pay Range By Position | The pay range for a position | Position data |
| Get Pay Range Attributes | Minimum, maximum, midpoint, currency, frequency | Pay range, field, date |
| Is Position Below User's Position in Hierarchy (New Version) | Whether a position is in and below the user's hierarchy | Can be used for new positions |
Which steps are needed so position codes are generated automatically on save?
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?
Which rule function returns the user ID of the person occupying a given position on a date?