We had a situation come up recently where a user received 100's on the tests that were housed in a specific course being run in SCORM Cloud, however when the score rolled up to the LMS, they were receiving a score in the teens, not the '100' they were expecting. Here is an explanation of how scores rollup in SCORM 2004.
The default score rollup rules for SCORM 2004 are pretty simple. You start at the bottom of the tree and work your way upwards. For each parent activity, its score is the simple average of its children.
Below is the structure of a course with the score for each part of the course noted after the title (mostly abbreviated by the section number).
So for example, Topic [017] has a score recorded of 0.14. That is because it has seven children. One of those children has a score of 1, while the rest don't have any score reported (which counts as a 0). So the calculation of the score for [029] is (0+0+0+0+0+0+1) / 7 = 1 / 7 = 0.14.
Repeat the same calculation for each of the other clusters and work your way up the tree (calculations indicated below). Eventually you get to the "Main Page" whose direct children have scores of (0 + .5 + .25 + .16 + .14) / 5 = 0.21.
SCORM Course - 0.21
Main Page - 0.21 = (0 + .5 + .25 + .16 + .14) / 5
[001] - unknown
Topic [002] - 0.5 = 1 / 2
[003] - unknown
[004] - 1
Topic [005] - 0.25 = 1 / 4
[006] - unknown
[007] - unknown
[008] - unknown
[009] - 1
Topic [010] - 0.16 = 1 / 6
[011] - unknown
[012] - unknown
]013] - unknown
[014] - unknown
[015] - unknown
[016] - 1
Topic [017] - 0.14 = 1 / 7
[018] - unknown
[019] - unknown
[020] - unknown
[021] - unknown
[022] - unknown
[023] - unknown
[024] - 1
The way to fix this problem is to indicate which SCOs actually report test scores and should count towards the score rollup. You do this with a sequencing rule called "objective measure weight". Objective measure weight is a number from 0-1 that indicates the relative weight of this activity during rollup. If you don't want the activity to count during rollup, then you set it to 0. If you want all activities to count equally, then you set it to 1 (the default). An example of this syntax is below. The most likely desired rollup logic for this course is that each of the four tests counts equally to the score of the overall course. To implement that logic, then activities, 2,4,5,9,10,16,17, and 24 should all have an objective measure weight of 1 (the default) and every other activity should have an objective measure weight of 0.
Example of setting objective measure weight:
<item identifier="A_023" identifierref="R_SCO" parameters="?pld=SSL_SS074">
<title>[023] Using Objective Measure Weight</title>
<imsss:sequencing xmlns:imsss="http://www.imsglobal.org/xsd/imsss">;
<imsss:rollupRules objectiveMeasureWeight="0"/>
<imsss:objectives>
<imsss:primaryObjective objectiveID="primObj77">
<imsss:mapInfo targetObjectiveID="gobjNormalSects1" writeSatisfiedStatus="true" writeNormalizedMeasure="true"/>
</imsss:primaryObjective>
</imsss:objectives>
</imsss:sequencing>
</item>
<item identifier="A_024" identifierref="R_SCO" parameters="?pld=TSL_TS028">
<title>[024] Objective Measure Weight - The Test</title>
<imsss:sequencing xmlns:imsss="http://www.imsglobal.org/xsd/imsss">;
<imsss:rollupRules objectiveMeasureWeight="1"/>
<imsss:objectives>
<imsss:primaryObjective objectiveID="primObjTS78" satisfiedByMeasure="true">
<imsss:minNormalizedMeasure>0</imsss:minNormalizedMeasure>
</imsss:primaryObjective>
</imsss:objectives>
</imsss:sequencing>
</item>