In my experience the LMS people will ALWAYS blame the course rather than the LMS. It's in their best interest to do so.
However, as you have seen, since the vast majority of the people are experiencing no issues with the same content, and it performs perfectly in SCORM Cloud, there cannot really be anything wrong with the content transferring information. The most likely culprits are either the end users, or the LMS.
If the completion data has not been sent to the LMS, it's possible the end users may have somehow terminated communication with the LMS before reaching the end. This can sometimes happen if they open another browser window with the LMS, link out to a different web page while doing the course content. Another possibility is that they were 'multi-tasking' doing other stuff while they were supposed to be doing the course, and the session timed out on them without them knowing. If this happened, they would have completed the module without being aware that the data was no longer being sent to the LMS.
I suppose this is a trouble shooting exercise ...BUT.... I agree with ACP. I have experienced something like this in the past... BUT... our problem was that the learner closed the module manually i.e. went to the top right hand corner and clicked the x button (next to the maximize/minimize button).
This was our problem.
Agreed overall as well.
Another issue that can arise is any interruption in the connection. If the user's net connection drops for more than a second or two, the session can be lost with the LMS, which breaks the API connection, which breaks the ability for the CP (or any) SCORM project to send data back to the LMS.
So it can be that, or the user closing the SCORM project window too early, or by them navigating away to another site in that same window...
Does your CP version have the ability to pick, in the SCORM template section, to choose 'send all data at end'?
That generally works a little better BUT in this sort of situation, you don't want to wait til the end, you want the project (CP or not) to send data on 'every slide' or some other intermittent method...so at least the LMS gets SOME status update.