We have two values in Picklist that has the same label.
One is active, the other one is inactive.
On our request payload, I have upserted 666835 (active) and response payload showed that it was upserted.
However, when I checked in UI, the inactive one was upserted and not the active one per the request payload.
"Image/data in this KBA is from SAP internal systems, sample data, or demo systems. Any resemblance to real data is purely coincidental."
SuccessFactors OData API
Reproducing the Issue
1. Upsert the active value in picklist via Rest client tool
2. Check response payload > Status: OK & Upserted
3. Checked in UI, the inactive one (that has the same label with active value picklist) was upserted
For picklist properties API will handle by option id or external code, while importing will handle by label.
So for API upserting, it will convert option id or external code to label then pass to importing logic. For this case, the items with option id 666,835 and 666,836 have the same label.
Imports is deriving the option id of the one that is OBSOLETED. This happens when the same label is present for two options, and it gets the one that is OBSOLETED.
Change the name of OBSOLETED picklist label.
Picklist Upsert, Multiple Label , KBA , LOD-SF-INT , Integrations , LOD-SF-INT-ODATA , OData API Framework , Problem