Skip to Content
Technical Articles
Author's profile photo Karen Perez

How to identify a manager based on position hierarchy

INTRODUCTION

In this blog post, you can learn how we can identify a manager based on the Position hierarchy instead of the direct report’s structure.

Sometimes the managers can have all positions below them as vacant and from a standard system point of view, they are not considered a manager as they do not have direct reports.

Some customers require to be able to assign specific permissions to their managers, for example, the permission to create a new job requisition for vacant positions, and in the case above, it would not be possible since they are not considered as managers. So how to identify these cases to consider them a manager?

To achieve this requirement of assigning permissions to a manager that has no direct reports, only vacant positions, the following solution is proposed.

 

PROPOSED SOLUTION

Step 1. Create a custom field in Employee Profile (Data Model XML) to identify if the employee is a manager with a picklist ‘yes’ or ‘no’:

EP_CustomField

Image from SAP SuccessFactors Demo: Employee Profile Custom Field

Step 2. Create a custom field in Job Information to control if the employee’s position is a manager position or not and map it to the EP custom field, using HRIS Sync Mappings (see screenshot below):

Image from SAP SuccessFactors Demo: Job Information Custom Field and mapping

Step 3. Create a Business Rule as per the following to control if the employee’s position has any child position (does not matter if the child positions are vacant or has incumbent). This rule will populate the Job information custom field = “Yes”, or “No” as appropriate.

Image from SAP SuccessFactors Demo: Job Information Business Rule

The recommendation is to add this rule in the configuration as onChange in the Position field and onSave in the Job Information because in case there is any update in the position it could trigger an update once any change is performed in the Job Information.

Once all the above steps are completed, you can use the custom Employee Profile field as criteria in the granted population permission group, to assign the necessary permissions to all managers.

Permissions Considerations

As the proposed solution depends on Business Rules it is important to remember that business rules run/update fields which the user have view permissions, at least, so please remember to grant the view permission of the new field to the roles which will run process in the system.

CONCLUSION

This blog post described how we can identify a manager based on the position structure, instead of the direct report’s structure.

Please bear in mind that It is a simple and effective solution already implemented for a customer where the requirement was to assign the job requisition creation permissions to all managers, for all positions, not only their child positions, so this is why there is no need to identify any specific target population, but all.

For additional business scenarios on how to apply SuccessFactors Business Rules, I
would definitely recommend checking out the Employee Central: Optimizing Business Rules for Select Business Scenarios IDP (Implementation Design Principle).

Looking forward to your comments and questions.

 

Assigned Tags

      26 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Smitha Kondajji
      Smitha Kondajji

      Hi Karen,

      This is quite a helpful blog on how to handle job requisition creation permission for managers with no direct reports but only vacant positions under them.

      Cheers, Smitha

       

      Author's profile photo Karen Perez
      Karen Perez
      Blog Post Author

      Thank you very much Smitha!

      Author's profile photo Soraia Latif
      Soraia Latif

      Hi Karen,

      This information is really useful. Thank you very much for sharing.

      Best regards,

      Soraia

      Author's profile photo Karen Perez
      Karen Perez
      Blog Post Author

      Thank you very much Soraia!

      Author's profile photo Chris Paine
      Chris Paine

      Hi Karen,

      How do you handle the update of the position when a subordinate position is added under it?

      Is there a process which runs in integration Center to check and update the flags? And if so, how do you then cause the sync and update of the employee record?

      Thanks,

      Chris

      Author's profile photo Karen Perez
      Karen Perez
      Blog Post Author

      Hi Chris, thank you for your question.

      Thinking about this scenario, I would propose a different approach. In summary, would be to create the flag 'Manager' in the position object as well and create an Integration Center to map the object flag to the job information flag where the trigger is the Intelligent Service 'Update to a Position' event.

      Does this answer your question and make sense for you?

      Best Regards,

      Karen Perez

      Author's profile photo Chris Paine
      Chris Paine

      Hi Karen,

      I don't think that will work.

      The problem is that the update of a superior or subordinate position does not directly trigger the update of the corresponding subordinate or superior position. Which would then trigger the associated update of the linked job information record.

      Until such time as the solution (SAPSF) enables functionality, I think anything we do will have flaws, we just have to be aware that they are there and do our best to acknowledge them and put in work arounds.

      I could build you a Cloud Platform extension that could fix this, but it's not going to be worth the expense compared to the solution you already documented (despite it not working in all cases).

      What I'm trying to say is that things don't have to be perfect to be worthwhile, but we should be very careful about claiming anything solves all problems.

      Cheers,

      Chris

       

       

      Author's profile photo Karen Perez
      Karen Perez
      Blog Post Author

      Hi Chris,

      Thanks for sharing your thoughts and I do agree, the idea is not solve 100% of the use cases, but at least the one presented.

      I was 'playing' in my demo and for you to identify all the positions that are parents of others as you were referring to, including the newly created ones, you can do the following.

      Create a custom object (Lookup) with two fields only (Position Code, Parent Position). This MDF object can be automatically populated via IC as simple as in the example below (Position entity):

      Image%20from%20Demo

      Image from Demo

      After this you have to create an onSave rule in the Position object as per below:

      Image%20from%20Demo

      Image from Demo

       

      In summary, you are updating the 'flag' at the position level and this can be propagated to the Job info.

      Does this make sense for you?

      Thank you again for pointing out good cases so it gives all the opportunity to think more and more about solutions.

      Best Regards,

      Karen Perez

      Author's profile photo Harshit Sunkari
      Harshit Sunkari

      Hi Karen,

       

      In the last solution from IC - How do system identify that the Manager position is being updated (For On Save to work).

      The position which is getting updated is employee position so how business rule will identify and update manager position.

       

      BR,

      Harshit

       

      Author's profile photo Satasree Paul
      Satasree Paul

      Can you please prepare a detail blog on this solution.

      Author's profile photo Karen Perez
      Karen Perez
      Blog Post Author

      Hi Satasree Paul,

      Sorry, which solution are you referring to?

      Thanks,

      Karen Perez

      Author's profile photo Satasree Paul
      Satasree Paul

      Hello Keren,

      Thank you for your reply.

      We have a custom field called "IS Manager" at position object level. I have taken a reference of your blog and write a Business rule

       but issue is update of this custom field (IS Manager) is not happening automatically at position object level if any position is assigning under to any new/ existing position, it is only getting updated if we are updating that parent position again.

      Is there any other way custom field (IS Manager) at position object level will update automatically if any lower level position is assigned under the position.

      Thanks,

      Satasree Paul

      Author's profile photo Karen Perez
      Karen Perez
      Blog Post Author

      Dear Satasree Paul,

      In this case you may have some options.

      You can use the Intelligent Services to trigger, for example the below ones:

      Image%20from%20Demo

      Image from Demo

       

      Or you can create an Integration Center, which can run daily, weekly, etc, and checks all positions that have child assigned and mark the "Managerial" field to yes, or mark as no, in case it becomes a non manager position.

      I hope this helps!

      Thank you.

      Best Regards,

      Karen Perez

      Author's profile photo Satasree Paul
      Satasree Paul

      Hello Karen,

      Thank you for your suggestion.

      Initially I have requested for a detail blog on this this topic only,how we will update custom field in position object with help of intelligent Center.

      May be my request is not valid, still hoping if you can write a detail blog on this.

       

      Thanks,

      Satasree Paul

      Author's profile photo Karen Perez
      Karen Perez
      Blog Post Author

      Dear Satasree Paul,

      Understood! I will try to block some time for this case, but I cannot promise soon, sorry for that.

      Thank you.

      Best Regards,

      Karen Perez

      Author's profile photo Maria Madalina Stoica
      Maria Madalina Stoica

      Hi guys, can this be enhanced with an Off Cycle Event Batch rule ?

      If you create an Off Cycle Event Batch rule to update the field in Job Info whenever the Number of Child Positions is greater than 1 and schedule it to run every day at a certain hour?

      Any thoughts on this solution?

      Author's profile photo Karen Perez
      Karen Perez
      Blog Post Author

      Dear Maria Madalina Stoica,

      Sorry, I missed your comment. When it does not tag us, we miss.

      Yes, definitely the off cycle is an option too and a good one I would say 🙂

      Below a sample example:

      Image%20from%20Demo

      Image from Demo

      Thanks for proposing this option, Maria.

      Best Regards,

      Karen Perez

      Author's profile photo Mate Bacskai
      Mate Bacskai

      Hi Karen Perez ,

      I suppose the "Position Number" that you use in your business rule (Job Information Model.Position.Value.Position Number) is the field that companies use as job code or position ID , right? At least I don´t have a field called "Position Number".

      Best regards, Maté

      Author's profile photo Karen Perez
      Karen Perez
      Blog Post Author

      Hi Mate Bacskai,

      It is the Position Code field, standard. It is called "number" instead of "code" in my demo examples below, but you may find as "Position Code".

      Thank you.

      Best Regards,

      Karen Perez

      Author's profile photo Mate Bacskai
      Mate Bacskai

      Hi Karen,

      I configured the attached business rule and added it to the Position as an "On Change" rule and to the Job Information as an "On Save" rule. I would like get an email notification if somebody gets child positions but I haven´t received any.

      In the Workflow configuration I only created a "CC role" with an E-mail Template.

      Author's profile photo Karen Perez
      Karen Perez
      Blog Post Author

      Hi Mate Bacskai,

      Did you assign the rule on saveAlert? I am asking because you mentioned onSave, and for alerts it should be saveAlert.

      Thank you.

      Best Regards,

      Karen Perez.

      Author's profile photo Mate Bacskai
      Mate Bacskai

      Hi Karen,

      Yes, it was assigned as "saveAlert". We are reviewing it internally why the email notification is not generated.

      Author's profile photo Karen Perez
      Karen Perez
      Blog Post Author

      Hi Mate Bacskai,

      In your rule, I am missing by when the alert is supposed to be created, like the below:

      Did you try adding it and running your test?

      Thank you.

      Best Regards,

      Karen Perez

      Author's profile photo Mate Bacskai
      Mate Bacskai

      I set the Alert Effective Date to "Today". And I made a test (assigning one position as the higher level position of another position) I used today´s date for the position change and saved it. Unfortunately no Notification was triggered.

      Author's profile photo Karen Perez
      Karen Perez
      Blog Post Author

      Hi Mate Bacskai,

      Ok, so your test case is that you are changing the position, not the job info. So I would recommend that you have first a rule at Position Object level, which fills a "Managerial" field in the position, and this Position change syncs to the job info of the affected employee where the alert is created.Or, you create an alert at the position object, without any sync from Position to Job Info.

      Does this make sense for you?

      Thanks,

      Karen Perez

      Author's profile photo Mate Bacskai
      Mate Bacskai

      Thank you! I was hoping that we won´t need a "Managerial" field on the position if we can generate alerts just based on the number of child positions (1 or more). If there is no other option then we will implement a new "Managerial" field on the position.

      Thank you for your support Karen.