Business Scenario
Some organizations adopt job rotation as a common practice for the professional development of their employees.
The main objective of this process is to provide their employees the opportunity to work on other areas beyond their responsibility.
A job rotation process usually involves multiple employees at the same time, where an employee moves to the position of another one in a sequential order, forming a cycle. For instance, if we have 3 employees involved in a job rotation process as detailed below, before the job rotation:
- Employee A occupying Position A
- Employee B occupying Position B
- Employee C occupying Position C
The job rotation would result in the following scenario:
- Employee A occupying Position B
- Employee B occupying Position C
- Employee C occupying Position A
The Figure 1 below shows this scenario in a visual manner:
Depending on the volume of job rotations during a period and the number of employees involved on each process, the system maintenance can be very challenging, especially if the company uses a 1 to 1 relationship between employee and position.
Solution Overview and Concepts
The solution proposed in this blog considers the following steps:
- The manager requests a job rotation providing details of the positions involved in the process. The selected positions should be occupied by employees. Note: It is also possible to create an alternative solution where the manager selects the employee, rather than the position, but here we will consider the position as the selection entity for the job rotation.
- An HR administrator reviews the request and approves or sends back the job rotation proposal to the manager for any necessary updates.
- A scheduled job in Integration Center runs to update the job rotation data for the involved employees.
The solution presented here will consider that a maximum of 5 positions (occupied by employees) can be included in a single job rotation process. However, the solution can be extended to allow a greater number of positions.
A high-level process diagram is depicted in Figure 2:
Detailed Solution
Solution Configuration Steps
This solution will require a couple of configuration steps:
- Create a custom Job Rotation MDF object, which will be used by managers to request the job rotation.
- Create business rules for validations and to bring additional information on Job Rotation MDF object to help managers when they are providing the data of the positions involved in the process.
- Create an optional workflow for Job Rotation MDF approval.
- Create the UI for the Job Rotation MDF object.
- Create a new section for People Profile and add supporting links for the manager.
- Create an Event Reason for the job rotation process to be used when the Job Information records of the selected employees are updated.
- Create multiple integrations in Integration Center, depending on the possible variations on the number of positions involved in the job rotation.
- Schedule the integrations configured in Integration Center.
Step1: Create an MDF Object for the Job Rotation Requisition by Managers
This MDF object will have the following fields:
- externalCode:
- Data Type = User
- effectiveStartDate:
- Data Type = Date
- cust_Z_instructions, containing instructions on the job rotation process for the managers. The instructions are defaulted by a Business Rule, which populates the text based on another custom MDF object. The reason why the solution was designed this way is because the Default Value attribute of a field has a limit of 255 characters in length. Another advantage using another object to add the instructions is because it is possible to add Line Feed and Carriage Returns, making the text easier to read:
- Data Type = String, with Maximum Length = 4,000. It cannot be a Translatable Data Type, because, on Manage Configuration UI, at least as of b2211, it is not possible to configure the attribute “Display As” for the field (to configure as Large Input Field), like in the Figure 3 below:
- Sample content for the Instructions:
(1) Select the number of employees involved in Job Rotation.
(2) In Position 1, select the position of the employee who will be moved to Position 2.
(3) In Position 2, select the position of the employee who will be moved to Position 3, and so on.
(4) In the last Position, select the position of the employee who will be moved to Position 1, closing the cycle.
- cust_Z_numberOfEmployees, for the number of employees that will be involved in the job rotation request:
- Data Type = Picklist
- Valid Values Source = Z_numberOfEmployees
- cust_Z_position1, for the position of the first employee involved in Job Rotation:
- Data Type = Generic Object
- Valid Values Source = Position
- cust_Z_employeeName1, for the name of the first employee involved in Job Rotation:
- Data Type = User
- cust_Z_department1, for the department of the first employee involved in Job Rotation:
- Data Type = Generic Object
- Valid Values Source = Department
- cust_Z_userId1, for the userId of the first employee involved in Job Rotation. This field can be hidden from the UI, but is important for the actual update of the Job Information entity:
- Data Type = String
- cust_Z_position2, for the position of the second employee involved in Job Rotation:
- Data Type = Generic Object
- Valid Values Source = Position
- cust_Z_employeeName2, for the name of the second employee involved in Job Rotation:
- Data Type = User
- cust_Z_department2, for the department of the second employee involved in Job Rotation:
- Data Type = Generic Object
- Valid Values Source = Department
- cust_Z_userId2, for the userId of the second employee involved in Job Rotation. This field can be hidden from the UI, but is important for the actual update of the Job Information entity:
- Data Type = String
- Note: create similar fields for 3, 4 and 5 positions.
The solution detailed here considers the possibility of selecting up until 5 positions in a single job rotation request. However, it is possible to have more positions by just adding more fields in the MDF object.
The object should be created with Effective Dating = Basic, to keep the historical data of job rotation requisitions by the managers.
For the Security section, at the bottom of the object definition, set Permission Category = Miscellaneous Permissions.
The Figure 4 shows the definition of Job Rotation MDF object.
To improve the user experience, the visibility of the fields “Position X”, “Employee Name X”, “Department X” and “UserId X” can be controlled using the Conditional Fields feature of MDF objects. So, for instance, if the manager selects 2 as the number of employees for job rotation, only the “Position 1”, “Employee Name 1”, “Department 1”, “UserId 1”, “Position 2”, “Employee Name 2”, “Department 2” and “UserId 2” should be displayed. This feature can be accomplished with a configuration like the one in Figure 5 below for each of those fields:
Permission should be granted to this object through: Manage Permission Roles –> –> Permission –> Miscellaneous Permissions (Figure 6).
The picklist values for Z_numberOfEmployees can be defined as in Figure 7 below:
Step 2: Create Business Rules for Data Propagation, Validation and Approval Workflow
In order to populate the “Instructions” field, an MDF object should be created:
- externalCode:
- Data Type = Auto Number
- externalName, to define the language (for instance, en_US and pt_BR). With this, the object can be used to define Instructions in multiple languages:
- Data Type = String
- cust_Z_instructionsForJobRotation, for the content of Instructions:
- Data Type = String
- Maximum Length = 4,000
Figure 8 shows the contents of the Instructions MDF object in English and Portuguese as an example:
The instructions can be defaulted through a Business Rule assigned to Effective Start Date field of Job Rotation MDF object (Figure 9):
It is also important to have a Business Rule to initialize the fields for job rotation, because multiple requests can be created over time by a manager (Figure 10):
For each Position field (1 through 5 in our example), create a Business Rule to default the other attributes, Employee Name, Department and User Id (Figure 11):
Another interesting Business Rule that can be created is one to raise a warning message to the manager in the case the selected position is from another hierarchy. Depending on the customer scenario, it can be configured as an error message to prevent the manager to move forward with the job rotation request if he/she selects a position out of his/her own hierarchy. This Business Rule should also be assigned to the corresponding Position field (Figure 12):
Note: If the customer wants the manager to be able to access positions only under his/her hierarchy, there is a setting in Provisioning to restrict the Value Help of the Position to his/her own structure (Figure 13). However, this setting applies for all Generic Object type fields, which might be inconvenient for the customer.
Another Business Rule proposed with this solution is one to trigger a workflow for the validation of the job rotation request, e.g., by an HR person (Figure 14):
Step 3: Create the UI for Job Rotation MDF Object
Use the “Manage Configuration UI” tool to create the UI for Job Rotation MDF object created before. It is recommended to use Groups to have the screen presented in a more structured way for the end-user. The “Last Modified By” and “Last Modified Date” fields were added for validation and auditing purposes (Figure 15):
The “Flow” Layout was used for each of the Groups created before (Figure 16):
Step 4: Create a New Section on People Profile and Add Supporting Links
Create a new section on People Profile and add links to provide support/help for the end-user (Figure 17). The links can be used, for instance, to direct the user to a detailed guide (not included in this blog) on how to use the Job Rotation section and also to open another page with the Position Org Chart (Figures 18, 19 and 20):
Step 5: Create an Event Reason for the Job Rotation Process
Create an Event Reason to be used for the job rotation process through “Manage Organization, Pay and Job Structures” tool (Figure 21):
Step 6: Create and Schedule the Integrations Configured with Integration Center Tool
In this step, the integrations to effectively rotate the employees will be created through Integration Center tool:
- For each number of employees involved in job rotation process, an integration should be configured in Integration Center.
- In this blog, we are considering a maximum of 5 employees taking part in a job rotation process simultaneously. So, 4 integrations should be configured (one for 2 employees, one for 3 employees, one for 4 employees and one for 5 employees).
- The integrations will basically do the following:
- Change “Mass Position” attribute of the selected positions to “Yes”.
- Change “FTE” attribute of the selected positions to “2”.
- Update the Job Information record of the employees included in job rotation.
- Change “Mass Position” attribute of the selected positions back to “No”.
- Change “FTE” attribute of the selected positions back to “1”.
- Schedule the integrations
As an example, let’s see the screen shots related to the integration configuration considering 3 employees:
General information of the integration (Figure 22):
Field mapping (Figure 23):
Detailed field mapping for Position object – changing “Mass Position” to “Yes” and “FTE” to “2” (Figure 24):
Detailed Field Mapping for Job Information (Figure 25):
Detailed field mapping for Position object – changing back “Mass Position” to “No” and “FTE” to “1” (Figure 26):
Filter settings (Figure 27):
Scheduling example (Figure 28):
Integration Configuration Summary Page (Figure 29):
End-User Experience
Once the solution is configured as explained before, the Manager will be the main role for the job rotation process. Let’s take an example, considering a job rotation consisting of 3 employees.
Manager: Claire James (Position1526)
Employees/Positions for Job Rotation:
- Fiona Marston (Position1533)
- Aurie Cooper (Position1527)
- Thomas Soames (Position1530) à other hierarchy
Effective Start Date for Job Rotation: 05/25/2023
Position Org Chart before the job rotation process (Figure 30):
Job Rotation Request Information content for this scenario (Figure 31):
Position Org Chart after the job rotation process (Figure 32):