Search code examples
javascriptscormscorm2004blackboard

SCORM 2004 failing to report score to ScormCloud or Blackboard


I have created a small course for a tester on our Blackboard(2010). I am using the pipwerks wrapper (we use 2004) and though my success and completion statuses are being successfully sent through to our blackboard, the score is not getting communicated (have tested on ScormCloud). I will post relevant code below. Any assistance would be greatly appreciated!

$(document).ready(function () {
        pipwerks.SCORM.data.set('cmi.score.min', '0');
        pipwerks.SCORM.data.set('cmi.score.max', '100');
    });

// Loads questions if there are any remaining
        if (questionNumber < shuffledQuestions.length) {
            generateAssessmentSlides();
        } else {
            var finalScore = yourScore / 100;
            nextSlide();
            $(".score").html(yourScore);

            // Sets assessment score
            pipwerks.SCORM.data.set("cmi.score.raw", '' + finalScore + '');

            // Sets assessment as completed
            pipwerks.SCORM.data.set("cmi.completion_status", "completed");

            // Saves status before results
            pipwerks.SCORM.data.save();

            // Shows pass/fail screen depending on the score and shares that data with the LMS

            if (finalScore >= passingScore) {
                pipwerks.SCORM.data.set("cmi.success_status", "passed");
                pipwerks.SCORM.data.save();

            } else {
                pipwerks.SCORM.data.set("cmi.success_status", "failed");
                pipwerks.SCORM.data.save();

            }
        }
    });
}

Solution

  • When recording a score for SCORM 2004, you typically will include four data points: the min, max, raw score, and the scaled score (calculated by raw / (max - min)). Based on your code above, you'd want to make calls like the following:

    pipwerks.SCORM.data.set('cmi.score.min', '0');
    pipwerks.SCORM.data.set('cmi.score.max', '100');
    pipwerks.SCORM.data.set("cmi.score.scaled", '' + yourScore + '');
    pipwerks.SCORM.data.set("cmi.score.scaled", '' + finalScore + '');
    

    In your Debug logs we saw that the raw score was actually being reported to the LMS, but it's possible it was rounding the value down to zero due to the fact you were using the scaled score (0.2) for the raw score value (should have been 20).