In this blog post, I will be sharing an automated design concept for Spot Award Budget calculation and how to configure it.
About Spot Awards
A Spot Award is a non-recurring, compensation event that is based on a specific contribution or performance. It can be cash or stock and is generally subject to budget and guidelines. It can be peer-to-peer or delivered within a manager hierarchy.
Our key word here is budget.
So, how do we manage the budgets?
As per the system standard, the only way to maintain or manage the budget is to import the values via an admin tool by choosing any of the below methods and utilizing a data template;
- Overwrite existing budget: If you want to perform a full data replacement
- Add to existing budget: If you want to add to the existing budget data
The above methods do give you flexible management, there aren’t any restrictions other than the used values that need to be lower than the imported budget amounts which is an obvious one but the existing methods do not provide a dynamic way to calculate the budget automatically through time.
I will share an automated solution to calculate, simulate and distribute spot award budgets to the budget holders.
Scenario: When the employee becomes eligible to hold a budget (becoming a manager for the first time, being promoted to a specific title, having new direct reports, etc.) to nominate people within their organization, the system will calculate the respective amount as per the company policy and assign it to the holder.
Solution: There are multiple ways to calculate and approach this scenario but for this blog, I will be choosing the below method;
- Create a Spot Award Program. As a pre-requisite, you will need to have the necessary technical knowledge of the Reward & Recognition implementation. You can refer to the implementation document.
- Create the necessary custom MDF objects as per your policy requirements. As a pre-requisite, you will need to have the necessary technical knowledge of the Metadata Framework (MDF) implementation. You can refer to the implementation document.
- (Mandatory) Create a custom MDF object to calculate the budget as a simulated value, later on, this will be integrated with the standard “Spot Award Budget” object.
- (Optional) Create a custom MDF object to store the budget amount index to look up.
- (Optional) Create a custom MDF object (both a parent and a child object) to store the team member sizes per manager.
- If your policy dictates counting certain direct reports, you will need the child custom object.
- If your policy considers counting all of the direct reports, the parent object will suffice.
- (Optional) Create a custom MDF object to store additional budget values to input the values inside that calculations as exceptions to your generic calculation.
- Create the business rules based on your calculation scenarios. As a pre-requisite, you will need to have the necessary technical knowledge of the Business Rules implementation. You can refer to the implementation document.
- Create the necessary integrations via the integration center. As a pre-requisite, you will need to have the necessary technical knowledge of the Integration Center usage. You can refer to the implementation document.
Solution Step-by-Step Guide
Step 1: Create a Spot Award Program.
- Create the Spot Award Program as per your requirements. For the sake of this example budget hierarchy is “Nominator”:
Step 2: Create all of the custom MDF objects and data records. Sub-sections labelled as “Optional” are not mandatory to implement this solution.
- (Optional) Create a custom MDF object (both a parent and a child object) to store the team member sizes per manager.
If your policy dictates counting certain direct reports, you will need the child custom object and the above business rule
If your policy considers counting all of the direct reports, the parent object will suffice. You can map the “Team Member Size” field under the “User” table directly within the integration definition.
-
- Create an integration definition starting from the “EmpJob” entity and ending on the custom MDF parent entity first. Schedule the integration daily and follow the settings as per the below screenshots.
-
- Create an integration definition starting from the “EmpJob” entity and ending on the custom MDF child entity. Schedule the integration daily and follow the settings as per the below screenshots. Make sure to schedule the integration after the parent one ends.
The integration will create team member size data records daily by overwriting the old records and while sending the child records through, the cardinality function inside the business rule will pick up the number of direct reports.
If you don’t need to create the child object, you can directly map the standard “Team Member Size” field under the “User” entity and send the value directly without the need for calculating. By default the standard field might not be enabled, if that is the case make sure to enable the field and give the necessary permissions. (you can also utilize the “Total Team Size” standard field if you want to assign a budget to the managers for their organization hierarchy from top to bottom)
- (Optional) Create a custom MDF object to store the budget amount index to look up.
Here, the rule is only propagating the currency value from the selected “Spot Award Program”.
Historical data storage enables the maintenance towards the future and reporting towards the past.
- (Optional) Create a custom MDF object to store additional budget values to input the values inside that calculations as exceptions to your generic calculation.
The additional budget records will provide flexibility over your standard budget hierarchy calculations as well as the exceptions which you’ll need to cover.
- (Mandatory) Create a custom MDF object to calculate the budget as a simulated value, later on, this will be integrated with the standard “Spot Award Budget” object.
The “New Start Date” field is one of the key fields to create a new record inside the “Spot Award Budget” data table.
The “Spot Award Budget Code” field is one of the key fields to create a “Spot Award Budget” record for the first time. The respective business rule is mimicking system behaviour on “Spot Award Budget” record code generation. You can put a fixed logic to assign the correct “Spot Award Program” for the “Spot Award Budget” records which are being created for the first time. (or you can create a dynamic lookup table to propagate the correct program values)
The “Spot Award Used” field is one of the key fields to calculate the total budget. Inside the “Spot Award Budget” object configuration, the values inside this field are getting recalculated after each “Spot Award” record action taken (new award given, editing and award and award deletion, etc.) via a script. Luckily, the database stores the values and because of that we can utilize these values while we are replicating the records starting from “Spot Award Budget” to “Spot Award Budget Calculation”.
Step 3: Create the business rules based on your calculation scenarios.
We have many business rules assigned as “Save Rules” and the order of the rules will have an impact on your solution implementation.
-
-
- (Optional) Propagate Person and Employment Field Values from Spot Award Budget to Spot Award Budget Calculation
- The above business rule is propagating personal and employment field values sourced from the respective “Employee Central” counterpart.
- (Optional) Propagate Person and Employment Field Values from Spot Award Budget to Spot Award Budget Calculation
-
-
-
- (Mandatory) Propagate Existing Budget Field Values from Spot Award Budget to Spot Award Budget Calculation
- The above business rule is propagating its’ values sourced from the respective “Spot Award Budget” data record. Here, you can decide what will be your “Spot Award Budget” record data creation frequency. We’ve set the record creation frequency as monthly, even though the recalculation is happening daily. (via the integrations)
- (Mandatory) Propagate Existing Budget Field Values from Spot Award Budget to Spot Award Budget Calculation
-
-
- (Mandatory) Propagate Non-Existing Budget Field Values from Spot Award Budget to Spot Award Budget Calculation
- The above business rule will calculate the necessary field values to create a “Spot Award Budget” record for the first time.
- (Mandatory) Propagate Non-Existing Budget Field Values from Spot Award Budget to Spot Award Budget Calculation
-
- (Mandatory) Propagate Simulation Calculation Field Values from Spot Award Budget to Spot Award Budget Calculation
- The above business rule will calculate the necessary pre-calculation field values.
- (Optional) Calculate Spot Award Budget Calculation Budget Amount WC & Calculate Spot Award Budget Calculation Budget Amount BC
- The above business rules are additional assisting rules to calculate total budget value. You can put your own logic if necessary or skip them right away.
- (Mandatory) Calculate Spot Award Budget Calculation Budget Amount Total
- The above business rule is using “Add Multiple()” function, to sum up, budget values. At its core; total budget = index amount * # of people (team member size)
- (Mandatory) Revise Spot Award Budget Calculation Budget Amount Total
- The above business rule is a safety rule. It checks if the total budget amount is below zero or not while subtracting the used amount; if it is below zero, the total budget amount becomes the “Used Amount”.
- (Mandatory) Propagate Simulation Calculation Field Values from Spot Award Budget to Spot Award Budget Calculation
Step 4: Create the necessary integrations via the integration center.
- First, you’ll need the “Team Member Size” integration if you’ve chosen to implement the optional scenario. (refer to the above “1.1. Job to cust_SpotAwardBudgetCalculationTeamMemberSize Sch.” and “1.2. Job to cust_SpotAwardBudgetCalculationTeamMemberSizeD” integration definitions)
- Then you’ll need to have 2 types of integrations to create simulation table (Spot Award Budget Calculation object) data records. You can divide and multiply this integration definition and apply a “per country” logic if your integration is running for more than 30 minutes.
- “Spot Award Budget” records that need to be created for the first time.
- Source: EmpJob (Job Information)
- Target: cust_SpotAwardBudgetCalculation (Spot Award Budget Calculation)
- “Spot Award Budget” records that need to be updated daily. Source: SpotAwardBudget
- Source: SpotAwardBudget (Spot Award Budget)
- Target: cust_SpotAwardBudgetCalculation (Spot Award Budget Calculation)
- “Spot Award Budget” records that need to be created for the first time.
- Lastly, you’ll need to have an integration to create actual (Spot Award Budget object) data records after the simulated values.
- Source: cust_SpotAwardBudgetCalculation (Spot Award Budget Calculation)
- Target: SpotAwardBudget (Spot Award Budget)
The running and processing order of the integrations will have an impact on the solution, so, make sure that your integrations never overlap when they are running.
If any of your integrations are running for more than 30 minutes, check all the screenshots and details again. The above solution is applied to a system which has nearly 30,000 active employee records in more than 14 countries.
The above filters and sort settings may vary based on your business scenarios.
The “To Be Integrated” field values are getting assigned via a business rule while the “Spot Award Budget Calculation” records are getting saved. We are not integrating the old “Spot Award Program” budgets which have been calculated within the simulation table (Spot Award Budget Calculation object) back to the actual “Spot Award Budget” records. You can disregard this filter or apply your own logic to exclude such cases.
Enhancing the scope of the solution
Lastly, these automated scenarios can be increased to cover all of the necessary business requirements due to the flexibility of the SuccessFactors Metadata Framework and business rules.
Some of them may require extensive knowledge of other configuration details. (make sure to check reference URLs at the bottom of the blog)
In conclusion, there are various alternatives to satisfy the requirements. So, I hope the above scenario will help you to satisfy the customer requirements on your implementation journey.
Thank you for taking the time to read and please do not hesitate to leave your comments below for any questions!
You can also refer to the official SAP documentation below on how to accomplish some of the mentioned points above;
More details on the Reward and Recognition implementation can be found in the Compensation Implementation Guide
More blogs can be found within the community
Implementing Business Rules in SAP SuccessFactors