Skip to Content

Successfactors Odata API : JSON Query Issue

Successfactors Odata service uses Edm.DateTime ( January 1, 1753 to December 31, 9999) and the date is stored in the database in same format. Successfactors Odata api supports two formats : ATOM and JSON. When we query the database in ATOM (Atom XML) format there won’t be any issues as it returns values in date-time format. See below sample queries.

In ATOM format

https://<hostname>/odata/v2/PerPerson?$filter=personIdExternal+eq+’350196’&$format=ATOM

 

 In JSON format.

https://<hostname>/odata/v2/PerPerson?$filter=personIdExternal+eq+’350196’&$format=JSON

It returns Date value in epoch. Date(0) is returned because its 0 seconds elapsed since 1970-01-01 T00:00:00 UTC.

Now we will do a query which will return date = 31.12.9999.

———————————————————————————–

In ATOM format

https://<hostname>/odata/v2/EmpJob?$filter=userId+eq+’200’&$format=atom&$select=endDate

In JSON format

https://<hostname>/odata/v2/EmpJob?$filter=userId+eq+’200’&$format=json&$select=endDate

 

Date(253402300799000) is Jan 11, 1978, here it went wrong. So if you are dealing with dates, always prefer using ATOM format.

The maximum possible date value that could passed successfully in JSON format is Nov 16, 5138, l call it as “Year 5138 Problem” !!!

 

 

 

1 Comment
You must be Logged on to comment or reply to a post.
  • For any kind of integration with SAP Successfactors , this is the must have course.

    Such a comprehensive course and taught in from the scratch, just the one I would recommend for any integration consultant and architect; its made available with money back guarantee , like it or money will be returned in 30 days:

    Details at: https://www.youtube.com/watch?v=1OtUTsHi_jE

    Following are the course details:

    Following is the course content, wherein more than 90% of the sessions are having hands on practical sessions and not only involving ppt slides:
    Section 1: Introduction
    1. Introduction
    Section 2: SFAPI : Successfactors SFAPI URI and wsdl
    2. What is the Data Center URL
    3. Data Center URL significance
    4. Gathering Data Center URL
    5. Gathering Data Center URL continuation
    6.* Further Steps , SFAPI URL and others
    7. Formulation of SFAPI URL
    8. SFAPI wsdl
    9. SFAPI Enabled?
    Section 3: Soap UI Set Up
    10. SOAP UI Download and Install
    11. SOAP UI Configuration changes, in view of Successfactors’ TLS v1.0 disablement
    Section 4*: Creating an API User ID to make SFAPI call
    12. Creating an User ID for the SFAPI calls
    13. Creating User IDs via Option 1(Provisioning)
    14. Creating API User IDs via Option 2.1 (Successfactors Application UI)
    15. Creating API User IDs Option 2.2 (Import Employee via SFSF Application UI)
    Section 5*: Setting the Password for the API User
    16. Setting the Passwords for the API User IDs created above
    17. Setting the Password for the API User – Option 1.1
    18. Setting the Password for the API User – Option 1.2
    19. Setting the Password for the API User – Option 2
    20. Setting Password for the User – Option 3 and 4
    21. Considerations when SSO is enabled
    22. Considerations for SSO – Enabling the loginMethod field
    23. Making First SFAPI call !
    Section 6: SFAPI Methods And Parameters
    24. SFAPI Methods
    25. Understanding SFAPI wsdl
    26. Preparation for the Hands ON Sessions on API calls
    27. Setting API User login exception
    28. Making the call to SFSF to retrieve the List of the SFAPI SFObjects
    29. Making the SFAPI Call for Session Management and MetaData Inspection methods
    30. SFAPI call for Data Query Category (query and queryMore)
    31. SFAPI call for Data Manipulation Category (upsert call)
    32. SFAPI Call for Asynchronous Operations
    Section 7: OData : Tools to make the OData call
    33. Postman Set Up
    34. SOAPUI : Making Rest Calls from SoapUI
    35. Advanced Rest Client from Chrome
    36. Chrome/FireFox Browser
    Section 8: Odata Basics (with relation to Successfactors Odata service)
    37. Odata Introduction and Structure Components
    38. OData Basics : Service Document vs. Service Metadata Document
    39. OData Basics : Entity Metadata Document-comparison with other documents
    40. OData Basics : How to gather Service Document , Service and Entity Metadata Docs
    41. OData Basics : Understanding Service Metadata Document – EntitySets , EntityType
    42. OData Basics : Understanding Service Metadata Document – AssociationSet and Type
    43. OData Basics : Understanding Service Metadata Document – Navigation Property
    44. OData Basics : Understanding Service Metadata Document – Function Imports
    45. OData Basics : Understanding Entity Metadata Document
    Section 9: OData URI
    46. OData URI : Introduction and How to gather the service root uri for Odata calls
    47. OData URI : URI and its components – All components
    48. OData URI : URI and its components – Resource Path -part I
    49. OData URI : URI and its components – Resource Path -part II
    50. OData URI : URI and its components – Query Options
    Section 10: OData Query Options
    51. OData Query Options: $orderby
    52. OData Query Options: $top and $skip
    53. OData Query Options: $top + $skip combined with $orderby
    54. OData Query Options: $filter – Introduction
    55. OData Query Options: $filter-supported Logical Operators
    56. OData Query Options: $filter-supported Arithematic Operators
    57. OData Query Options: $filter-supported Grouping ,Customized & String Operators
    58. DateTime and DateTimeOffset DataType fields
    59. OData Query Options: $filter – supported DateTime Operators -Part I
    60. Time DataType fields
    61. OData Query Options: $filter-supported DateTime Operators -Part II
    62. OData Query Options: $filter-supported Numeric Datatypes
    63. OData Query Options: $filter-supported Boolean Datatype
    64. OData Query Options: $expand
    65. OData Query Options: $format
    66. OData Query Options: $select
    67. OData Query Options: $inlinecount
    Section 11: OData API User Permissions
    68. OData : creating an API user and assigning the password
    Section 12: Effective Dated Entities
    69. Effective Dated Entities – What are They?
    70. Effective Dated Entities – How are they defined?
    71. Effective Dated Entities – The Concept
    72. Effective Dated Entities – Advanced Concept
    73. Different Modes in which Data can be entered in Successfactors
    74. Concept of fromDate, toDate and asOfDate for Effective Dated Entities
    75. Concept of fromDate, toDate and asOfDate for Advanced Effective Dated Entities
    76. Initial data entry : Impact on effective dated objects
    77. Correction Mode data entry : Impact on effective dated objects
    78. Edit Mode data entry : Impact on effective dated objects
    79. Insert and Delete Mode data entry :Impact on effective dated objects
    Section 13: Effective Dated Entities behavior with Navigation
    80. Effective Dated Entities behavior with Navigation : Rules
    81. Effective Dated Entities behavior with Navigation : Advanced navigation concepts
    Section 14: Effective Dated Entities : How can they be queried
    82. Effective Date Entities: multiple parameters available to query ’em
    83. Effective Dated Entities: Querying involving from/to/asOfDate
    84. Effective Dated Entities: Querying involving start/endDate
    85. Effective Dated Entities: Logic system follows when from/to/asOfDate are present
    86. Effective Dated Entities: lastModifiedOn\DateTime parameters Rules
    87. Effective Dated Entities-filter by lastModifiedDateTime scenarios Part-I
    88. Effective Dated Entities-filter by lastModifiedDateTime scenarios Part-II
    89. Effective Dated Entities-filter by lastModifiedDateTime scenarios Part-III
    90. Effective Date Entities-filter by lastModifiedDateTime – Final Algorithm
    Section 15: Effective Date Entities – Behavior with $expand
    91. Effective Dated Entities behavior with $expand – Rules
    92. Effective Dated Entities behavior with $expand – Further understanding – partI
    93. Effective Dated Entities behavior with $expand – Further understanding – partII
    Section 16: OData APIs : Push Operations
    94. OData APIs : Push Operations : Overview
    Section 17: OData APIs : Push Operations : INSERT
    95. Section Overview : OData APIs : INSERT
    96. INSERT : Is the operation supported by entity, required fields, URI, HTTP Verb
    97. INSERT : Request Body : Are all fields supported for the operation?
    98. INSERT : Allowable Field Values – Data Types and MaxLength
    99. INSERT : Allowable Field Values – PickLists
    100. INSERT : Allowable Field Values – MDF Objects
    101. INSERT : Allowable Field Values – Navigation Links
    102. INSERT : Allowable Field Values – OptionId or ExternalCode (PickList values)
    103. INSERT : Perform Insert on the Entity via OData API
    104. INSERT : Can Multiple Calls be posted in one OData Call
    Section 18: OData APIs : Operations on Links
    105. OData APIs : Links Overview
    106. OData APIs : Query Operation On Links/Navigation
    107. OData APIs : Create Operation on Links
    108. OData APIs : Delete Operation On Links
    109. OData APIs : Update Operation On Links
    Section 19: OData APIs : Push Operations: UPDATE
    110. UPDATE : Perform Update on the Entity via OData API
    111. UPDATE : Perform a Replace Operation
    112. UPDATE : Perform a Merge Operation
    113. UPDATE : Some additional differences between Replace and Update Operation
    Section 20: OData APIs : Push Operations : UPSERT
    114. UPSERT : Introduction and initial call
    115. UPSERT : Demystifying User and PerPerson relationship – a specific challenge
    116. UPSERT : Further discussion over Upsert
    117. UPSERT : processing parameter purgeType (full)
    118. UPSERT : Which all entities support purgeType=full
    119. UPSERT : processing parameter purgeType (incremental)
    120. UPSERT : purgeType behavior with NO_OVERWRITE property of Entity
    121. UPSERT : Understanding the EmpGlobalAssignment Object
    122. UPSERT : processing parameter suppressUpdateOfIdenticalData
    123. UPSERT : processing parameter fileLocale
    124. UPSERT : Multiple Requests in one call
    125. UPSERT : Multiple Inline Entity Types in one call -Part 1
    126. UPSERT : Multiple Inline Entity Types in one call -Part 2
    127. UPSERT : Avenue for Performance Improvement of Upsert call
    Section 21: OData APIs : Operation : DELETE
    128. DELETE : Deleting the entities

    129. Use Case : Creating and Querying PickList entries
    130. Use Case : Function Import : Add or remove users from the Static Group