Employee Central Integration with Cloud for Customer via CPI – Part III
In this blog we will see how to do an extension for the employee central integration with Cloud for Customer via CPI scenario. We will only look at the steps required on C4C and SAP Cloud Platform, integration service (CPI).
Extending CompoundEmployee API on EC side is out of scope.
Steps in C4C
Currently extensiblity is only supported for PersonalDetails node of the interface Replicate Employee from SAP Business Suite.
Adding an extension for Employee is a 2-step process in C4C. First, we need create and add an extension to the staging BO and then add the extension to the Employee BO.
To add an extension to the staging BO, open the OWL Employee Master Data Replication in the Administrator work center view. (Navigation Path General Settings->Data Integration-> Employee Master Data Replication)
In the Employee Master Data Replication OWL, select any employee and click on edit to open the OIF for the employee.
To add an extension via Key User Tool (KUT), Click on Adapt-> Edit Master Layout.
In the instance floor-plan navigate to facet Biographical Data and under the Details section add a field
Now create a new extension field (in this example we are creating an extension field called Job Profile)
Select the newly added extension field and click on Apply, to make the field visible under Details section
Now we need to add this extension field to the web service. Using change property option click on Field Definition
Navigate to the EXTENSION SCENARIOS facet and add the field using the action button Add Field (You should be edit mode)
Now navigate to SERVICES facet and add the extension field to the web service. Make sure to add it for both services HumanCapitalManagementMasterDataReplicationEmployeeMasterDataReplicationIn and HumanCapitalManagementMasterDataReplicationEmployeeMasterDataReplicationWithCodeListMapIn
Save the changes for the field, this will make the extension field available in the WSDL that we can map in CPI.
Download the updated WSDL for the inbound service Replicate Employee from SAP Business Suite in communication arrangement Employee Replication using Intermediate Staging Area from SAP Business Suite
After downloading to your local system, rename the WSDL file. I have renamed it to Employee_Replication_In_extended.wsdl (it is important have .wsdl extension for the file).
To make the extension field available in the Employee screen, add the Extended field to the Employee TI in the adaption mode in People Work Center.
Steps in CPI
For this blog we will manually replicate an employee from Employee Central, so we will add the WSDL to the iFlow, Replicate Employee manually from SAP SuccessFactors Employee Central in the CPI package SAP Hybrid Cloud for Customer Integration with SAP SuccessFactors Employee Central.
Do note we need to use Eclipse tooling with Cloud Integration plugin to enhance the iFlow.
Refer to https://tools.hana.ondemand.com/#cloudintegration for installing required plugins for Eclipse.
Add the downloaded WSDL file in eclipse under src.main.resources.wsdl folder.
Open the mapping SFSF_COD_EmployeeReplication.mmap and replace the target element in the standard mapping with the target element from extended WSDL
Select the element (message type) EmployeeCompleteMasterDataReplicateRequest from the option
Now go to the definition tab and on the target element navigate to our extension element. (/ns0:EmployeeCompleteMasterDataReplicateRequest/EmployeeCompleteMasterDataReplicateRequest/CompleteEmployeeMasterData/PersonalDetails/ns12:JobProfile)
Here I am mapping it from a constant value (Presales Specialist), but in real scenario this can be mapped from an extension element of CompoundEmployee
Save iFlow changes and deploy the iFlow.
Now in C4C, we can see the Job Profile extension field populated in the replication request.
Once the employee is replicated from staging area, you should be able see the mapped value for extension field in the Employee screen as well.
For initial and delta load of employee data from EC, adapt the mapping in the iFlow Replicate Employee from SAP SuccessFactors Employee Central as well.
Thank you for the excellent blog. I have one query around the mapping in CPI. Its only possible to add an extension field to the Biographical Data in C4C which is the PersonalDetails node in the web service. In my scenario I need to map a field from the employment_information > job_information node, both of which are 0:N nodes. To get the current job_information I need to use the end date of 31-12-9999.
I have mapped it as below, however this only works when replicating a single employee using the manual iFlow. If I run for all employees then the mapping works intermittently and on some records the value is missing.
My requirement is very similar to the one in the post below
Do you have any advice on how to achieve this?
Hello Sam, If it works for a single employee but not for bulk load, then usually context handling is not correct. Please check the mapping output for the target element.
Best regards, Abinash
Hi Sam Hepworth
Did you able to resolve the issue ? Actually I changed the context of custom element source mapping to "compoundemployee" and it will worked as long as an Employee is having only 1 record of Personal Details.
If any employee is having more than 1 Personal info records then the issue of mapping inconsistency arise since our Extension element is 0..1 cardinality and Source mapping element is 0..n cardinality.
If you are able to resolve your issue can you share it ?
Hi Abinash Nanda,
Hope you are doing good.
Thanks for very informative blog and it helps a lot. It was the same query we raised with SAP product development team. Since most of the clients are asking for setting up Ticket Routing rules using “Company” as parameter. To meet this requirement we added an extension field(Legal Entity) to Biographical data in C4C (Which is under PersonalDetails node in Webservice).
We have done the mapping of new C4C Extension Field (EmployeeCompleteMasterDataReplicateRequest/CompleteEmployeeMasterData/PersonalDetails/ns10:LegalEntity(0..1)) with CompoundEmployee/person/employment_information/job_information/company (0..n) value of SF response.
Since C4C extension field “LegalEntity” is of cardinality (0..1) and mapped to “Company” field under job_information which is having 0..n cardinality we are getting issues while performing bulk loading.
I have mapped it as below and changed the context of source (company) to “compound Employee) as shown in the figure, however this only works when replicating a single employee using the manual iFlow. While performing bulk load of employees then the mapping works intermittently (if Employee contains only 1 Record of Person details and if it contains one 1 record of personal details it will work).
We expect the first record under job_information à company of SF response should be added to PersonalDetails à ns10:LegalEntity(0..1). But when an employee in bulk load having multiple records this data mapping is getting an issue.
It will be really helpful if you can show us an example of 1 extension field mapping with job_information node field in SF response.
A simple 1:1 mapping will not work here, as the occurrence on source and target structure is not same. There are many ways this can be achieved. You can apply a XSLT mapping to the output of the CompoundEmployee API response to filter out only the valid records. Else you can use a suitable standard mapping function to map the required values.
An example of XSLT mapping
Best regards, Abinash
Do we have automatic code list mapping between C4C and SF?