Symptom
User completes the course in the Open Content Network (OCN) provider's Web site, however it does not go for the User's Learning History.
Environment
SAP SuccessFactors Learning
Reproducing the Issue
- Access Learning as an end user
- Take the OCN course
- Course/OCN Web site states that course was completed
- Notice that the Learning Plan still has the course assigned
Cause
There are multiple scenarios but the two most common:
- The OAuth Token Server Client Secret was reset and not updated on the vendor Web site
- The vendor is sending a completion date in the future when calling the API to record completion on the Learning system
Resolution
Both scenarios described above are not easy to find the root cause. It is best that you work with your vendor to find out which might be the issue. All API calls done by the vendor receive a response. It is up to the vendor to log the response and have proper error handling.
Brief overview of how OCN works:
- Not all vendors might use the OCN APIs and some might make use of AICC content that can communicate via HTTPS. It is best to discuss this with your vendor to better understand.
- OCN vendors make use of a Learning OData API to send completion data from their server to the Learning server.
- There is an initial token call API (POST [Learning URL]/learning/oauth-api/rest/v1/token) to get a token that then is a 30 minute "security" key to allow other APIs to be used.
- The token received is passed over to the API that sends completion (POST [Learning URL]/learning/odatav4/public/admin/learningevent-service/v1/OCNLearningEvents)
- If the OCNLearningEvents API call is successful, the completion is recorded.
Scenario 1 - OAuth Token Server Client Secret reset
- If all users are not receiving completion then most likely this is the issue.
- If you did not save your Client Secret then work with your vendor to see if they can provide the encoded Client Secret.
- Reach out to your content vendor and ask them to to call the token API call (/learning/oauth-api/rest/v1/token)
- If an error occurs such as "Invalid Client Secret", then a new Client Secret has to be generated
- Work with your vendor to know if the Client Secret they were using is an Admin based or Application based (Guide - login required)
- Generate a new Client Secret and provide it to the vendor along with any other information they might need
Scenario 2 - Vendor is sending a completion date that is in the future
- Learning does not allow completions to recorded in the future. This can be replicated via all OData APIs that record learning history or any tools on the user interface.
- Reach out to your vendor to find the payload of the /learning/odatav4/public/admin/learningevent-service/v1/OCNLearningEvents API call
- Have the vendor check for the timestamp when the API call was triggered
- Take the completedTimestamp of the API payload and convert it from Unix Epoch time to a more readable format and make sure to account for timezones
- The vendor, if keeping track of response information, will have an error from the API call that states:
"error": {
"code": null,
"message": "ERROR: Completion Date cannot be in Future\n",
"operationStatusDetail": {
"status": "FAILED",
"operation": null,
"warnings": [],
"errors": [
{
"code": "500",
"message": "Completion Date cannot be in Future",
"fieldName": null
}
]
}
}
}
- The vendor should handle the error by calling the API call again. The API payload that was sent to Learning most likely was passing a completion in the future or at the same exact time (completion date was the same as the Learning server time).
- If the vendor cannot trigger the API call again. Use the Add Learning History tools.
Keywords
ocn, open, content, network, completion, missing, not, received, complete, linkedin, register, history, learning, lms, sf, successfactors, success, factors, , KBA , LOD-SF-LMS-OCN , Open Content Network , Problem