Delete Operation Using SFSF Odata Adapter
Recently we have got requirement to delete some records from successfactors using SFSF adapter. We have already performed INSERT,UPDATE & UPSERT operations using SFSF Adapter, but we never worked with DELETE operation. We don’t have DELETE operation in Query modeler in Juno or Kepler. But, finally we have found a way to use DELETE operation successfully. So here i’m sharing my experience.
Objective:
To perform delete operation using SFSF – Odata Adapter in order to delete a record from Odata Entity in Successfactors.
Scenario:
For example, we have employee position available in Successfactor, we wants to delete one record from it using SFSF Adapter.
Steps:
Open a query modeler in juno/kepler, select your interested entity(in this case it’s position) and select Update(PUT) operation as we don’t have DELETE operation there.
It will select Key fields from that entity. No need to add more fields here. Click on finish so that you will have XSD file generated
Import this XSD in ESR. It looks like below.
Use this external definition at receiver side which is successfactor.
Create all necessary ESR components and Iflow.
Copy resource path which is generated by query modeler. In this case it is “Position(‘code’,datetime{effectiveStartDate})”.
Then you need to configure SFSF Odata Receiver adapter as below.
As per our XSD, XML looks as below.
In successfactors Odata autdit log, we can see HTTP request like this.
It has successfully deleted entry of Position.
You can use below references to know more about SFSF Adapter and Query Modeler.
References:
SFSF Adapter – SuccessFactors (SFSF) Adapter for SAP NetWeaver Process Integration
Superb blog!!Very Informative.
How to do an Upsert operation using SFSF ODATA API? I have to perform an upsert operation on cust_ActivityType ODATA API.
I got this error - ODATA_CALLING_ERROR:OData call failed com.sap.engine.interfaces.messaging.api.exception.MessagingException
Details -
Resource Path - cust_ActivityType
Operation Type - UPSERT
Request Payload -
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<cust_ActivityType>
<!--1 or more repetitions:-->
<cust_ActivityType>
<mdfSystemRecordStatus>N</mdfSystemRecordStatus>
<mdfSystemEffectiveEndDate>9999-12-31T00:00:00.000</mdfSystemEffectiveEndDate>
<lastModifiedDateTime>2017-01-06T15:53:08.000</lastModifiedDateTime>
<lastModifiedBy>adminam</lastModifiedBy>
<externalName>SathishVe</externalName>
<!--1 or more repetitions:-->
<externalCode>101002</externalCode>
<!--1 or more repetitions:-->
<effectiveStartDate>2016-01-01T00:00:00.000</effectiveStartDate>
<createdDateTime>2017-01-06T15:52:22.000</createdDateTime>
<createdBy>adminam</createdBy>
<cust_CostCenter>
<FOCostCenter>
<externalCode>L101001</externalCode>
<starDate></starDate>
<status></status>
</FOCostCenter>
</cust_CostCenter>
</cust_ActivityType>
</cust_ActivityType>
</soapenv:Body>
</soapenv:Envelope>
The fields mentioned in the payload are all upsertable. Also create and update worked fine for me.
In resource path you have to put upsert(‘cust_ActivityType’) .
In resource path you have to put upsert('cust_ActivityType') .