Human Capital Management Blogs by Members
Gain valuable knowledge and tips on SAP SuccessFactors HCM suite and human capital management market from member blog posts. Share your insights with a post of your own.
cancel
Showing results for 
Search instead for 
Did you mean: 
Karthi_Viswa
Active Contributor
6,770

Business Requirement:


When hiring, business wants to place a check to search for duplicates in personal and business email and also wants to block certain emails so that it cannot be used for any users globally.


A very simple requirement, but we do not have a standard/straight forward solution to identify duplicates in email information portlet.

Solution Overview:


We are going to use below tools to achieve the requirement,






    • Custom MDF

    • Integration Center

    • Business Rules




Custom MDF - To store the business and Personal emails of all users.


Integration Center - To check for new users hired to system and add their email address to Custom MDF


Business Rule - To check for duplicate email during hire.


 

We will create a Custom MDF to store all the email address(Business and Personal), data migration will happen via Integration Center for existing data and same IC Job will be used for all the future hires as well.

IC job will run every day to check for new hires and it will push the email address to Custom MDF.

A business rule will be created with parameter "Employee Information" and will be added at two places "OnSave" and "OnChange" in email info portlet and email address field respectively.

Configuration:


STEP 1: Creating Custom MDF to store business and Personal email of all users.

1.1: Object Definitions >> Create a new object


I created a very simple object with two string fields to store business and personal email, we can also create other string fields to store other emails if maintained in email info portlet.


Very importantly make sure API Visibility is set to "Editable" so that we can use this object in Integration Center.



 

After creating above object, please provide necessary permissions to yourself so that you can access the "Email Storage" Object.


Below is the object view on Manage Data



Above image is a sample image on how email storage object will look before IC Job.


 

STEP 2: Creating Integration Center Job to migrate existing user's email and also to check for new hires and push their email to above created custom MDF.

2.1: Tools >> Integration Center >> Create >> More Integration Types and follow below steps in screen shot



 

2.2: Select Tag as Personal Information >> Select Email Information in Other Entities



After clicking select, >> On the Next screen, input Integration Center Job name of your choice and click next


 

2.3: Select Destination Field as "Email Storage" Object we created in Step 1.





 

2.4: Mapping Fields from Email information portlet to Custom MDF Email Storage Portlet.


Drag Person ID from Email Information Portlet to externalcode, so that external code will have value of person ID



 

Similarly to capture business email from email info portlet, follow below steps,



Create condition like below to capture business email,



Note: 8448 in above equalto condition is option id of Business email type, you can get the option id from picklist center >> search for ecEmailType


 

Click OK >> click on Test View to look for output



 

 

2.5: Go to Filter and Sort Tab >> Advanced Filters >> Set Filtering condition to Business Email, with this IC Job am going to show and focus on Business Email, same set of condition can be created for Personal Email as well with Personal Email type option Id



 

 

2.6: Go to Scheduling Tab >> Select Suspended/Not Scheduled >> Click NEXT



 

 

2.7: Go to Review and Run Tab >> Save >> Click Run Now



 

After Job ran successfully, all the email data would have got migrated to Custom MDF,



 

 

2.8: Now edit IC job again and add scheduling to run every day


Go to Filter and Sort Tab >> TIme Based Filters >>Select Modified Since >> Last Run Time



 

 

2.9: Go to Scheduling Tab to make the job to run daily >> Save and Click "Set Schedule"



 

STEP 3: Creating rules to check for duplicate emails.

3.0: Creating rule with parameter "Employee Information", below rule is created to check for business email, similar rule can be created to check personal email as well.



 

 

3.1: Place above rule in Email Info portlet >> Email Address Field >> OnChange



 

 

Final Output:


During hiring, entering business email as karthik@karthik.com, which is already available and used by an user.



 

Above setup can also be used for blocking certain emails so that it cannot be used for any users.

For Blocking:


you have to manually maintain the emails which needs to be blocked in Manage Data >> Custom MDF Email Storage, once stored, rules in email info portlet will make sure to stop HR from using those emails to users.

Note: It is a string field, so emails are case sensitive, you can also create a rule to always save the emails in CAPITAL Letters so that case sensitive confusions will never happen.

You can also validate email, please refer below blog.


https://blogs.sap.com/2020/08/23/validate-email-address-with-regular-expression-successfactor-employ...

 

Thanks for reading, Keep Exploring 👍

 

Karthik.
8 Comments
marvelmaniega
Member
0 Kudos

Hi Karthik,

Im trying to do this email duplication step by step as you mentioned, but unfortunately is not working as expected as your work.

any advice for this error?

Thanks have a nice day

Hello Marvel,

I faced the same issue with the rule configuration and noted that a modification in (else if-Statement) is needed for personal email types.

I added a second IF-Statement at the beginning to check if the email type is business or personal. If personal the rule is then doing nothing. The reason for this is that if no business email type is entered in the system it is taking the business email type as “null” value and always triggering the message.

Please see business rule below:


Modification Business Rule to check email address


Kind regards and have a nice day

Marcel
Karthi_Viswa
Active Contributor
Thanks for this marcel_ko , Blog updated now 🙂
ChrisImplenia
Explorer
0 Kudos
What scenario do we miss if we only use one condition

If Employee Information.Email Information = Email Type is equal to Business

We are only interested to check the business email no? why overcomplicating it ?
NeslihanS
Explorer
Hi Karthik,

thank you very much for sharing! I have configured your rule, which is great for new hires.

But what if an employee is terminated and will be rehired again with the same e-mail?

Can we somehow delete the data record in the custom object "email storage" automatically via business rule or condition in integration center?

It would be great, if you have an idea to solve this.

Thank you very much & kind regards,

Nesli
MichaelBuonoGKN
Participant
0 Kudos
Regarding the Business Rule:

We are asked to move away from the "Basic" scenario in the near future.  What scenario type will be suitable for this?

How is the variable set?  What function is being used to get the Value where EmailType = [x] ?
MichaelBuonoGKN
Participant
0 Kudos
FYI - I believe the NEW rule scenario (not Basic) that gives access to the Base Object [Employee Information] is the "Trigger Rules for Hire/Rehire" scenario.
MichaelBuonoGKN
Participant
0 Kudos

1 year later: I still only see this as the solution, albeit not an official SAP solution to such a basic and potentially problematic situation.

NOTE: using "onChange" rules does not suffice; while it does flash up the "ERROR" message if an existing email address value is found in the [cust_emailStorage] data object, you can actually close the error dialog box and then still SAVE the record.

So, the solution may be to use an "onSave" rule at the record level, instead of "onChange" at the field level. I had to handle Personal email completely separate from Business email (i.e. separate rules, objects, and IC jobs), and also ensure add additional logic to the Lookup() so externalCode NOT EQ personIdExternal

Labels in this area