Cmi.suspend_data question

Hi all,
I am new to SCORM and am trying to track progress in an AS2 flash program and pass the info to cmi.suspend_data.  I wanted to create an array with as many elements as I have videos, and whenever a video has completed playing, change the value of the element associated to the video from 0 to 1. Once/If all elements of array == 1, then the program status would change to 'complete'. My issue is saving the array to cmi.suspend_data? I read that you can only pass strings, so I was hoping someone  would have suggestions as to how to track this user activity with cmi.suspend_data.
Thanks!

I’m doing something similar for a home-built LMS. That is, we want to capture and store what people say in free-form quiz fields. While the answer is embedded in the cmi.suspend_data info, it appears a better way to get it is from the cmi.interactions.*.learner_response info (assuming the module was published with the "report interactions" option, and your LMS asks for the data and does something with it).
For example, when the Presenter Flash module starts up, it calls our LMS with this method:
GetValue("cmi.interactions._children")
...and our LMS responds with the string:
id,type,learner_response,result
Later, on the slide that has the free-form quiz field, the Presenter module calls our LMS with this method:
SetValue("cmi.interactions.0.learner_response","this is the answer")
...where 0 represents it was the first quiz, and "this is the answer" was what I typed in the free-form field. Now, our LMS just has to do something with that value (write it to the database, etc.).
The one problem I’ve run into is when the user types double quotes or newlines in the free-form answer. When Presenter internally constructs the JavaScript to call SetValue of our LMS, it doesn’t seem to properly escape the quotes or newlines, and you end up with a JavaScript parse error in the browser (evident from Firebug) and the SetValue method is never called (so you lose the response). Maybe this is just a problem related to our custom-built LMS, but I suspect more that it is a bug in how the Presenter Flash module communicates between its Flash system and the JavaScript environment of the enclosing HTML page. (This is happening in the 7.0.5 version.)

Similar Messages

  • Question about cmi.suspend_data coding scheme

    I'm trying to determine whether the actual text entered in short answer quiz questions in Presenter 7 online presentations can be extracted.  We want to review the answers themselves, not just whether the student got the answer right.  In discussing this with my LMS vendor, they said that they would need to understand how the SCORM data, specifically the cmi.suspend_data, is structured to determine whether we could develop a means to report actual answers.  If I can put my hands on it, I need the coding scheme, including how data is delimited, and how the data is ordered.  Is this kind of information documented somewhere such that I could obtain it?

    I’m doing something similar for a home-built LMS. That is, we want to capture and store what people say in free-form quiz fields. While the answer is embedded in the cmi.suspend_data info, it appears a better way to get it is from the cmi.interactions.*.learner_response info (assuming the module was published with the "report interactions" option, and your LMS asks for the data and does something with it).
    For example, when the Presenter Flash module starts up, it calls our LMS with this method:
    GetValue("cmi.interactions._children")
    ...and our LMS responds with the string:
    id,type,learner_response,result
    Later, on the slide that has the free-form quiz field, the Presenter module calls our LMS with this method:
    SetValue("cmi.interactions.0.learner_response","this is the answer")
    ...where 0 represents it was the first quiz, and "this is the answer" was what I typed in the free-form field. Now, our LMS just has to do something with that value (write it to the database, etc.).
    The one problem I’ve run into is when the user types double quotes or newlines in the free-form answer. When Presenter internally constructs the JavaScript to call SetValue of our LMS, it doesn’t seem to properly escape the quotes or newlines, and you end up with a JavaScript parse error in the browser (evident from Firebug) and the SetValue method is never called (so you lose the response). Maybe this is just a problem related to our custom-built LMS, but I suspect more that it is a bug in how the Presenter Flash module communicates between its Flash system and the JavaScript environment of the enclosing HTML page. (This is happening in the 7.0.5 version.)

  • Cmi.suspend_data element size

    Our LMS - SkillPort - has asked us to change the
    cmi.suspend_data element for one of our courses (mainly a quiz) to
    4096. They say it's over 5800 characters.
    I'm not familiar with the cmi.suspend_data setting. How do
    you access it? How do you change it? My colleague suggests that
    it's probably automatically generated when we work through the
    "SCORM 1.2 RTE" step of the SkillPort Compatibility Toolkit.
    Have you run into any issues regarding cmi.suspend_data ?
    What can you recommend?
    Thank you!

    I don't know if the error can be ignored without issue. If
    their LMS is
    reporting that the amount of data the lesson is trying to
    send is too
    large, it may not save any of it. Or even if it does, it may
    only save
    the first 4096 bytes...so when that data is sent back to the
    LMS on
    resume, it will be incomplete (and cause problems with the
    lesson's
    resume/playback?).
    If the LMS is just reporting the field is too long but saves
    it all
    anyway then, yes, I'd suspect you could ignore the error
    without
    ill-effect (?).
    I'm not sure what aspects of the CP Quiz Preferences come
    into play
    here. As Rick suggests, checking "Never send Resume Data"
    would make
    sense in this case, as the suspend_data field *should be*
    specifically
    used for the lesson to load back-in any data it collected on
    a previous
    launch.
    There are other SCORM fields/variables for the lesson to send
    quiz data
    and results to the LMS. The status and score should NOT be a
    part of
    that suspend_data tracking. In fact, the LMS wouldn't even be
    able to
    report those results if the CP lesson was sending back status
    and score
    in that field.
    SO my guess is you can indeed check that "Never send Resume
    Data" option
    and still get the results you need, especially if bookmarking
    is not
    something you want to happen - so every time users launch
    this lesson,
    it will be like they're launching it for the first time (as
    far as the
    lesson itself appears to the user).
    IF that doesn't work and for some reason checking that option
    does
    affect the tracking you need then, yes, the next best option
    would be to
    reduce the number of questions so the amount of info in that
    suspend_data field is reduced.
    Finally, tracking interactions will significantly add to the
    suspend_data field, I suspect, as I think that means the
    lesson sends
    the question text and the selected answer back to the LMS (so
    'shorter'
    questions' may work but less-likely?)
    HTH!
    Erik
    Janatwork wrote:
    > -- Since the purpose of "suspend_data" is to track
    things BETWEEN SESSIONS,
    > could I and SkillPort simply ignore the 5800 - 4096 size
    conflict, since we are
    > requiring the learners to complete the quiz in ONE
    session (i.e., they cannot
    > bookmark it and come back later).
    > do you mean "reduce the number of quiz
    > questions"? (My course has 36 questions) Or do you mean
    "make the questions
    > shorter"?
    Erik Lord
    http://www.capemedia.net
    Adobe Community Expert - eLearning
    http://www.adobe.com/communities/experts/
    http://www.awaretips.net -
    Authorware Tips!

  • LMS / Scorm not updating the "cmi.suspend_data"

    Hi Guys,
    Dont know if anyone can help me but i am trying to get my Flash program to work with a LMS using SCORM.
    At the end of the module all i want to do is update the string.  It traces fine in Flash but doesnt actually update the LMS
    This should update a string when a module is complete. The code is below and any help would be great
    package classes
    import com.pipwerks.SCORM;//for SCORM support
              import classes.Main;
              import flash.display.MovieClip;
              import flash.events.*;
              public class ScormCode extends MovieClip
                        private var scorm:SCORM;
                        private var lmsConnected:Boolean;
                        private var lessonStatus:String;
                        private var success:Boolean;
                        public var VarLMSErrorMc:Boolean = false;
                        public var userFirstnameString:String = "";
                        public var completedModule:Boolean;
                        //Variable that is ticked once a page is COMPLETE
                        public var modulecompleted:Object = {
                        module1: 0,
                        module2: 0,
                        module3: 0,
                        module4: 0
                        public function ScormCode()
                                  trace("SCORM Intialized");
                                  //Initialize SCORM object (pipwerks SCORM class)
                                  scorm = new SCORM();
                                  //Connect to LMS. Can only be done ONCE.
                                  lmsConnected = scorm.connect();
                                  //Ensure connection was successful before continuing.
                                  if (lmsConnected)
                                            //Get course status
                                            lessonStatus = scorm.get("cmi.core.lesson_status");
                                            //Setup username
                                            var username_data:String = scorm.get("cmi.core.student_name");
                                            var splitter:Array = username_data.split(" ");
                                            var firstName:Object;
                                            firstName = splitter[0];
                                            userFirstnameString = String(firstName);
                                            //If course has already been completed, kill connection
                                            //to LMS because there's nothing to report.
                                            if (lessonStatus == "completed" || lessonStatus == "passed")
                                                      //DO SOMETHING
                                                      modulecompleted.module1 = 1;
                                                      modulecompleted.module2 = 1;
                                                      modulecompleted.module3 = 1;
                                                      modulecompleted.module4 = 1;
                                                      completedModule = true;
                                                      //Set course to complete
                                                      success = scorm.set("cmi.core.lesson_status","completed");
                                                      scorm.save();
                                                      scorm.disconnect();
                                            else
                                                      //If course has NOT been completed yet, let's
                                                      //ensure the LMS knows the course is incomplete
                                                      //by explicitly setting status to "incomplete"
                                                      success = scorm.set("cmi.core.lesson_status","incomplete");
                                                      var suspend_data:String = scorm.get("cmi.suspend_data");
    //Is suspend_data empty? Check the length of the returned string.
                                                      //If there's nothing saved, the LMS will return an empty string ""
                                                      if (suspend_data.length > 0)
                                                                //suspend_data is not empty, so we must have
                                                                //saved something in the last course attempt.
                                                                //Remember, we saved a our progress variables in
                                                                //a comma-delimited string; we can convert to an
                                                                //array using string.split(",").
                                                                var arrModulecompleted:Array = suspend_data.split(",");
                                                                //Assign the value to each of our planets.
                                                                //Be sure to convert string "1" to integer 1.
                                                                //The order of the array items was specified in
                                                                //saveCourseStatus() when we created the
                                                                //comma-delimited suspend_data string.
                                                                modulecompleted.module1 = parseInt(arrModulecompleted[0],10);
                                                                modulecompleted.module2 = parseInt(arrModulecompleted[1],10);
                                                                modulecompleted.module3 = parseInt(arrModulecompleted[2],10);
                                                                modulecompleted.module4 = parseInt(arrModulecompleted[3],10);
                                                      saveCourseStatus()
                                  else
                                            /* VarLMSErrorMc = true;*/
                                            //Ruh-roh...
                                            trace("Could not connect to LMS.");
                        public function checkComplete():void
                                  if (modulecompleted.module1 && modulecompleted.module2 && modulecompleted.module3 && modulecompleted.module4)
                                            setCourseToComplete();
                                            completedModule = true;
                                            trace("COURSE NOW COMPLETED!!!");
                                  else
                                            trace("COURSE NOT COMPLETED YET__________________________________________^^^^^");
                                            trace("M1: " + modulecompleted.module1 + ", M2: " + modulecompleted.module2 + ", M3: " + modulecompleted.module3 + ", M4: " + modulecompleted.module4);
                                            saveCourseStatus();
                        public function setCourseToComplete():void
                                  //Set lesson status to completed
                                  success = scorm.set("cmi.core.lesson_status","completed");
                                  //Ensure the LMS persists (saves) what was just sent
                                  scorm.save();
                                  //Disconnect from LMS;
                                  scorm.disconnect();
                        public function saveCourseStatus():void
                                   var suspend_str:String = modulecompleted.module1 + "," + modulecompleted.module2 + "," + modulecompleted.module3 + "," + modulecompleted.module4;
                                  //Send suspend_data string to LMS
                                  trace("M1: " + modulecompleted.module1 + ", M2: " + modulecompleted.module2 + ", M3: " + modulecompleted.module3 + ", M4: " + modulecompleted.module4);
                                  scorm.set("cmi.suspend_data", suspend_str);
                                  //Ensure the LMS persists (saves) what was just sent
                                  scorm.save();

    Hi Guys,
    Dont know if anyone can help me but i am trying to get my Flash program to work with a LMS using SCORM.
    At the end of the module all i want to do is update the string.  It traces fine in Flash but doesnt actually update the LMS
    This should update a string when a module is complete. The code is below and any help would be great
    package classes
    import com.pipwerks.SCORM;//for SCORM support
              import classes.Main;
              import flash.display.MovieClip;
              import flash.events.*;
              public class ScormCode extends MovieClip
                        private var scorm:SCORM;
                        private var lmsConnected:Boolean;
                        private var lessonStatus:String;
                        private var success:Boolean;
                        public var VarLMSErrorMc:Boolean = false;
                        public var userFirstnameString:String = "";
                        public var completedModule:Boolean;
                        //Variable that is ticked once a page is COMPLETE
                        public var modulecompleted:Object = {
                        module1: 0,
                        module2: 0,
                        module3: 0,
                        module4: 0
                        public function ScormCode()
                                  trace("SCORM Intialized");
                                  //Initialize SCORM object (pipwerks SCORM class)
                                  scorm = new SCORM();
                                  //Connect to LMS. Can only be done ONCE.
                                  lmsConnected = scorm.connect();
                                  //Ensure connection was successful before continuing.
                                  if (lmsConnected)
                                            //Get course status
                                            lessonStatus = scorm.get("cmi.core.lesson_status");
                                            //Setup username
                                            var username_data:String = scorm.get("cmi.core.student_name");
                                            var splitter:Array = username_data.split(" ");
                                            var firstName:Object;
                                            firstName = splitter[0];
                                            userFirstnameString = String(firstName);
                                            //If course has already been completed, kill connection
                                            //to LMS because there's nothing to report.
                                            if (lessonStatus == "completed" || lessonStatus == "passed")
                                                      //DO SOMETHING
                                                      modulecompleted.module1 = 1;
                                                      modulecompleted.module2 = 1;
                                                      modulecompleted.module3 = 1;
                                                      modulecompleted.module4 = 1;
                                                      completedModule = true;
                                                      //Set course to complete
                                                      success = scorm.set("cmi.core.lesson_status","completed");
                                                      scorm.save();
                                                      scorm.disconnect();
                                            else
                                                      //If course has NOT been completed yet, let's
                                                      //ensure the LMS knows the course is incomplete
                                                      //by explicitly setting status to "incomplete"
                                                      success = scorm.set("cmi.core.lesson_status","incomplete");
                                                      var suspend_data:String = scorm.get("cmi.suspend_data");
    //Is suspend_data empty? Check the length of the returned string.
                                                      //If there's nothing saved, the LMS will return an empty string ""
                                                      if (suspend_data.length > 0)
                                                                //suspend_data is not empty, so we must have
                                                                //saved something in the last course attempt.
                                                                //Remember, we saved a our progress variables in
                                                                //a comma-delimited string; we can convert to an
                                                                //array using string.split(",").
                                                                var arrModulecompleted:Array = suspend_data.split(",");
                                                                //Assign the value to each of our planets.
                                                                //Be sure to convert string "1" to integer 1.
                                                                //The order of the array items was specified in
                                                                //saveCourseStatus() when we created the
                                                                //comma-delimited suspend_data string.
                                                                modulecompleted.module1 = parseInt(arrModulecompleted[0],10);
                                                                modulecompleted.module2 = parseInt(arrModulecompleted[1],10);
                                                                modulecompleted.module3 = parseInt(arrModulecompleted[2],10);
                                                                modulecompleted.module4 = parseInt(arrModulecompleted[3],10);
                                                      saveCourseStatus()
                                  else
                                            /* VarLMSErrorMc = true;*/
                                            //Ruh-roh...
                                            trace("Could not connect to LMS.");
                        public function checkComplete():void
                                  if (modulecompleted.module1 && modulecompleted.module2 && modulecompleted.module3 && modulecompleted.module4)
                                            setCourseToComplete();
                                            completedModule = true;
                                            trace("COURSE NOW COMPLETED!!!");
                                  else
                                            trace("COURSE NOT COMPLETED YET__________________________________________^^^^^");
                                            trace("M1: " + modulecompleted.module1 + ", M2: " + modulecompleted.module2 + ", M3: " + modulecompleted.module3 + ", M4: " + modulecompleted.module4);
                                            saveCourseStatus();
                        public function setCourseToComplete():void
                                  //Set lesson status to completed
                                  success = scorm.set("cmi.core.lesson_status","completed");
                                  //Ensure the LMS persists (saves) what was just sent
                                  scorm.save();
                                  //Disconnect from LMS;
                                  scorm.disconnect();
                        public function saveCourseStatus():void
                                   var suspend_str:String = modulecompleted.module1 + "," + modulecompleted.module2 + "," + modulecompleted.module3 + "," + modulecompleted.module4;
                                  //Send suspend_data string to LMS
                                  trace("M1: " + modulecompleted.module1 + ", M2: " + modulecompleted.module2 + ", M3: " + modulecompleted.module3 + ", M4: " + modulecompleted.module4);
                                  scorm.set("cmi.suspend_data", suspend_str);
                                  //Ensure the LMS persists (saves) what was just sent
                                  scorm.save();

  • Adobe Captivate 8 system variable "cpQuizInfoAnswerChoice" is empty for random multiple-choice questions.

    Does anyone run into this problem when capturing the user answer for a random question slide? Adobe Captivate 8 system variable "cpQuizInfoAnswerChoice" is empty for random multiple-choice questions.

    Hi Shriyansh.
    The reason I am interested in capturing the user answers in Submit All situation is that I know after I published the test using SCORM 2004, all the user responses were captured in "cmi.suspend_data" because my test can resume the test to the last exit question in the middle. However, when I looked at the suspend data value, I have a hard time to understand the pattern and pick out the meaningful user question responses data. I really need help from you to understand how the suspend data value was constructed and how to parse this data. Another area I thought it's easy to get the user question responses data is the interaction records, but I always got only one question (the last randomly sampled question) interaction record. See the following generated XML SCORM 2004 4th edition data. Could you help me figure out how to interpret the following suspend data to get the users responses to each test question?  And why I only got one question interaction record? Thanks again for your help, Zhuoran.
    <ArrayOfKeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.success_status</Key>
      <Value>failed</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.completion_status</Key>
      <Value>completed</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.exit</Key>
      <Value>suspend</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.mode</Key>
      <Value />
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.suspend_data</Key>
      <Value>M1A%24nP1A%24nP1FPool1B1FPool2A1FPool3A1FPool4B1FPool5B1FPool6B1FPool7A1FPool8B1FP ool9A1GPool10A1A%24nP000BB0100C11KCA%7E%24nU*9aAlO%7E%24nU*3eOlO1000B00AEAH0%3B1%3B2%3B3BA B0B0BBB0B0BCB0B1BDB1B0DB%7E%24nU*-EBlO%7E%24nU*YoOlO1000B00AEAH0%3B1%3B2%3B3BAB0B0BBB0B1BC B0B0BDB1B0EC%7E%24nU*flBlO%7E%24nU*IyOlO1010B00KEAH0%3B1%3B2%3B3BAB0B0BBB0B0BCB0B0BDB1B1FD %7E%24nU*nWMlO%7E%24nU*kRPlO1000B00AEAH0%3B1%3B2%3B3BAB0B0BBB0B1BCB0B0BDB1B0GE%7E%24nU*kRP lO%7E%24nU*arPlO1000B00AEAH0%3B1%3B2%3B3BAB0B0BBB0B0BCB0B1BDB1B0HF%7E%24nU*arPlO%7E%24nU*c HQlO1000B00AEAH0%3B1%3B2%3B3BAB0B1BBB0B0BCB0B0BDB1B0IG%7E%24nU*cHQlO%7E%24nU*kfQlO1010B00K EAH0%3B1%3B2%3B3BAB0B0BBB0B0BCB0B0BDB1B1JH%7E%24nU*kfQlO%7E%24nU*74QlO1010B00KEAH0%3B1%3B2 %3B3BAB0B0BBB0B0BCB0B0BDB1B1KI%7E%24nU*74QlO%7E%24nU*IYRlO1000B00AEAH0%3B1%3B2%3B3BAB0B0BB B0B1BCB0B0BDB1B0LJ%7E%24nU*IYRlO%7E%24nU*aHSlO1000B00AEAH0%3B1%3B2%3B3BAB0B0BBB0B0BCB0B1BD B1B00PNvar_ToggleTOCBAPvar_ToggleAudioBAEv_S1BAEv_S2BAEv_S3BAEv_S4BASv_completionStatusBAP v_successStatusBAKv_locationBAFv_scoADls3NreturnMessageBAHv_scoreBAOv_scorePercentBAPv_cur rentChoiceBAPv_stringChoicesBA</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.entry</Key>
      <Value />
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.location</Key>
      <Value>Posttest%20Results</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.launch_data</Key>
      <Value />
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.learner_name</Key>
      <Value />
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.interactions._count</Key>
      <Value />
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.interactions.0.id</Key>
      <Value>LSQ19C</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.interactions.0.type</Key>
      <Value>choice</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.interactions.0.learner_response</Key>
      <Value>The_vehicle_is_under_warranty_for_the_life_of_the_lease</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.interactions.0.result</Key>
      <Value>incorrect</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.interactions.0.correct_responses.0.pattern</Key>
      <Value>Genuine_Subaru_Accessories_can_be_residualized_as_a_part_of_the_lease</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.interactions.0.description</Key>
      <Value>What is one feature of a Subaru Motors Finance lease?</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.interactions.0.weighting</Key>
      <Value>10</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.interactions.0.latency</Key>
      <Value>PT3S</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.interactions.0.objectives.0.id</Key>
      <Value>Quiz_2014924125021</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.interactions.0.timestamp</Key>
      <Value>2014-11-20T13:02:01.0-06</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.score.raw</Key>
      <Value>30</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.score.max</Key>
      <Value>100</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.score.min</Key>
      <Value>0</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.score.scaled</Key>
      <Value>0.3</Value>
      </KeyValueOfstringstring>
      <KeyValueOfstringstring>
      <Key>cmi.session_time</Key>
      <Value>PT31.99S</Value>
      </KeyValueOfstringstring>
    </ArrayOfKeyValueOfstringstring>

  • SCORM 1.2 tracking Captivate 3 lesson_location

    I have a client who is using Captivate 3 to author a SCORM 1.2 course. When deployed to the LMS we have experienced problems with bookmarking, in that it does not appear to work all of the time.
    On investigating this further using ADL Testsuite to track the data being passed between content and LMS, I was able to establish that a "lesson_location" vary rarely written back to the LMS, even upon Save and Exit. There were a couple of slides and button interactions that trigerred data to be written to the LMS, but upon looking at the author file, there was nothing to suggest why these slides or button clicks should send back data.
    I have 2 questions.
    1: Is it possible to manipulate when data is being written back to the LMS, ie, can I choose when a lesson_location is saved? The solution I am looking for would be one that is native to Captivate 3 and not a custom JavaScript solution as I need to provide it to a non developer a non developer.
    2: What would be the likely cause of the lesson_location being sent to the LMS on the slides and button clicks that it did happen. Understanding this, I hope will help me manipulate it.
    I appreciate any help you can provide on this.
    Thanks,
    Sam

    i HAVE ATTEMPTED TO RESTART CAPTIVATE MANY DIFFERENT WAYS WITH BOOKMARKS....NOTHING SEEMS TO WORK WHEN SCORM
    1.2.
    HERE IS MY COMMUNICATION LOGS:
    Fri May 14 16:48:35 CDT 2010
    LMSInitialize
    LMSGetValue:[cmi.core.lesson_location] value:G0Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enon e%24nPA
    LMSGetLastError: value=0
    LMSGetValue:[cmi.core._children] value:credit,entry,exit,lesson_location,lesson_mode,lesson_status,score,session_time,stud ent_id,student_name,total_time
    LMSGetLastError: value=0
    LMSGetLastError: value=0
    LMSGetLastError: value=0
    LMSGetLastError: value=0
    LMSGetValue:[cmi.launch_data] value:G0Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enon e%24nPA
    LMSGetLastError: value=0
    LMSGetLastError: value=0
    LMSGetLastError: value=0
    LMSGetValue:[cmi.core.lesson_location] value:G0Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enon e%24nPA
    LMSGetLastError: value=0
    LMSSetValue:[cmi.core.lesson_status] value=failed
    LMSGetLastError: value=0
    LMSGetLastError: value=0
    LMSSetValue:[cmi.core.lesson_location] value=1
    LMSGetLastError: value=0
    LMSSetValue:[cmi.core.session_time] value=00:00:19
    LMSGetLastError: value=0
    LMSSetValue:[cmi.suspend_data] value=B0Enone%24nP0Enone%24nP0Enone%24nP0Enone%24nP0Enone%24nP0Enone%24nP1Enone%24nP1Enon e%24nPA
    LMSSetValue:[cmi.core.lesson_status] value=failed
    LMSCommit
    LMSCommit
    i HAVE ATTEMPTED TO USE
    cmi.core.lesson_location
    cmi.launch_data
    to place the contents of "cmi.suspend_data" and nothing seems to restart the Captivate 4 with Bookmarks, in continually restarts the course in the beginning.
    Any Help would be appreciated.
    reference:
    RESTART CAPTIVATE COURSE WITH BOOKMARK SCORM 1.2
    RESTART CAPTIVATE 4 COURSE WITH BOOKMARK SCORM 1.2
    thanks,
    Doug Lubey of Louisiana
    www.douglubey.com

  • White screen appears when using AS3 wrapper file with Captivate 7

    We had no problems with this in the past but now a white screen appears instead of the captivate running. The file is used when we use Captivate, streaming video, or HTML assessment. It triggers a complete signal to our LMS at the end. Is there anything that we are missing? The file is:
    package  {
        import flash.display.MovieClip;
        import flash.display.Sprite;
        import flash.display.Loader;
        import flash.events.MouseEvent;
        import flash.events.Event;
        import flash.events.ProgressEvent;
        import flash.net.URLRequest;
        import flash.net.URLLoader;
        import flash.system.Security;
        import BrightcovePlayer;
        import flash.media.SoundMixer;
        import caurina.transitions.Tweener;
        import caurina.transitions.properties.ColorShortcuts;
        import pipwerks.SCORM;
        import flash.external.ExternalInterface;
        public class MainWrapper extends MovieClip {
            public var loadedSwf:URLRequest;
            public var contentLoader:Loader = new Loader  ;
            public var contentContainer:Sprite;
            public var xmlLoader:URLLoader;
            public var videoList:XML;
            public var currentLoadedSection:Number;
            public var nextEnabled:Boolean = false;
            public var currentModule:Number = 0;
            public var currentContent:Number = 0;
            public var currentContentType:String;
            public var advanceBehavior:String;
            public var prevBehavior:String;
            public var previousPage:String;
            public var moveAdv:Boolean;
            public var timesAdvanced:Number = 1;
            public var numPages:Number = 1;
            public var furthestPage:Number = 0;
            public var scorm:SCORM;
            public var lmsConnected:Boolean;
            public var lessonStatus:String;
            public var success:Boolean;
            public var suspend_str:String;
            public var suspend_data:String;
            public var arrayToParse:Array;
            public var videoChoice:Number = 0;
            public var vidChoice:Number = 0; // Picks up button selections from loaded swf...default is 0 if only one ID supplied
            public var vidID:Array = new Array(); // Recieves XML supplied video IDs
            public var MC:MovieClip;
            public var swfURLChoice:Number = 0; // Picks up button selections from loaded swf...default is 0 if only one ID supplied
            public var swfURL:Array = new Array(); // Recieves XML supplied swf URLs
            public function MainWrapper() {
                // constructor code
                addEventListener(Event.ADDED_TO_STAGE,init);
            public function init(e:Event):void {
                initializeTracking();
                contentContainer = new Sprite  ;
                addChild(contentContainer);
                exit_btn.visible = false;
                main_HUD.home_btn.visible = false;
                addNavListeners();
                mainMenuVisibility(false);
                textPanel_mc.mask = panelMask_mc;
                ColorShortcuts.init();
                Security.allowDomain("http://admin.brightcove.com");
                Security.allowDomain("http://c.brightcove.com");
                Security.allowDomain("http://brightcove.com");
                BrightcovePlayer.initialize(this,onBrightcoveVideoComplete,onBrightcoveInitComplete,onBri ghtcoveVideoPlay);
            public function loadXML():void {
                xmlLoader = new URLLoader  ;
                xmlLoader.addEventListener(Event.COMPLETE,showXML);
                xmlLoader.load(new URLRequest("playlist.xml"));
            public function showXML(e:Event):void {
                trace("Line 95: Loaded XML");
                xmlLoader.removeEventListener(Event.COMPLETE,showXML);
                XML.ignoreWhitespace = true;
                videoList = new XML(e.target.data);
                numPages = videoList.module[currentModule].listedContent.length();
                trace("Line 100: numPages="+numPages);
                loadContent();
            public function mainMenuVisibility(setVis:Boolean):void {
                main_HUD.visible = textPanel_mc.visible = setVis;
            private function onBrightcoveVideoComplete() {
                trace("Line 107: video has stopped");
                endPageNav();
            private function onBrightcoveVideoPlay() {
                trace("Line 111: player is playing");
                Tweener.addTween(BrightcovePlayer.instance,{alpha:1,time:3});
                updateNav(currentContentType);
                loadMsg_mc.visible = false;
                checkForBeginning();
            private function onBrightcoveInitComplete() {
                trace("Line 118: init is complete");
                loadXML();
            public function loadContent():void {
                if (currentContent > furthestPage) {
                    furthestPage = currentContent;
                    trace("Line 125: The furthest page so far: "+furthestPage);
                saveCoursePos() //SCORM Bookmark
                var loadedContentType:String = String(videoList.module[currentModule].listedContent[currentContent]. @ type);
                currentContentType = loadedContentType;
                switch (loadedContentType) {
                    case "cap" :
                        trace("Line 133: loading a Captivate swf");
                        advanceBehavior = "next";
                        prevBehavior = "prev";
                        loadMsg_mc.visible = true;
                        BrightcovePlayer.stopAndHide();
                        mainMenuVisibility(false);
                        swfURL = videoList.module[currentModule].listedContent[currentContent].pathToContent.split(",");
                        loadedSwf = new URLRequest(String(swfURL[swfURLChoice]));
                        contentLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,loadProgress);
                        contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadComplete);
                        contentLoader.load(loadedSwf);
                        break;
                    case "swf" :
                        trace("Line 146: loading an interactive swf");
                        advanceBehavior = "next";
                        prevBehavior = "prev";
                        loadMsg_mc.visible = true;
                        BrightcovePlayer.stopAndHide();
                        swfURL = videoList.module[currentModule].listedContent[currentContent].pathToContent.split(",");
                        loadedSwf = new URLRequest(String(swfURL[swfURLChoice]));
                        trace("XXXXXXXXXXXXX "+(String(swfURL[swfURLChoice]))+" XXXXXXXXXXXXXXXXX");
                        contentLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,loadProgress);
                        contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadComplete);
                        contentLoader.load(loadedSwf);
                        break;
                    case "quiz" :
                        trace("Line 158: loading a quiz");
                        advanceBehavior = "next";
                        prevBehavior = "prev";
                        BrightcovePlayer.stopAndHide();
                          loadMsg_mc.visible = true;
                        swfURL = videoList.module[currentModule].listedContent[currentContent].pathToContent.split(",");
                        loadedSwf = new URLRequest(String(swfURL[swfURLChoice]));
                        contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadComplete);
                        contentLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,loadProgress);
                        contentLoader.load(loadedSwf);
                        break;
                    case "bcVid" :
                        checkForBeginning();
                        advanceBehavior = "next";
                        trace("Line 172: loading a Brightcove video");
                        //vidFrame_mc.visible = true;
                        //videoBG.visible = true;
                        //setChildIndex(vidFrame_mc,numChildren - 1);
                        vidID = videoList.module[currentModule].listedContent[currentContent].videoID.split(",");
                        trace(vidID);
                        BrightcovePlayer.instance.alpha = 0;
                        BrightcovePlayer.playVideo(this,0,vidID[videoChoice],140,112.5,"");
                        break;
                    default :
                        trace("Line 183: unrecognized type. check the node's 'type' attribute");
                        break;
            public function contentFadeOut():void {
                if (currentContentType == "bcVidBranch" || currentContentType == "bcVid") {
                    trace("Line 190: fading BC vid");
                    Tweener.addTween(BrightcovePlayer.instance,{alpha:0,time:.5,onComplete:doLoadNext});
                } else {
                    trace("Line 193: fading something else");
                    Tweener.addTween(contentLoader.content,{alpha:0,time:.5,onComplete:doLoadNext});
            public function movePanel(moveDir:String):void {
                switch (moveDir) {
                    case "up" :
                        if (textPanel_mc.y != 145) {
                            Tweener.addTween(textPanel_mc,{y:145,time:.5,transition:"easeOutSin"});
                        break;
                    case "down" :
                        if (textPanel_mc.y != 645) {
                            Tweener.addTween(textPanel_mc,{y:645,time:.5,transition:"easeOutSin"});
                        break;
                    default :
                        trace("Line 211: WAT. That is not a valid direction");
                        break;
               public function getSWFChoice(e:Event):void {
                   MC = MovieClip(contentLoader.content);
                   swfURLChoice = MC.swfURLChoice;
                   contentLoader.content.removeEventListener( "getSWFChoice" , getSWFChoice );
                   trace("YYYYYYYYYYYYYYYYY swfURLChoice="+swfURLChoice+" YYYYYYYYYYYYYYYYYYYY");
                playOn();
               public function getVidChoice(e:Event):void {
                   MC = MovieClip(contentLoader.content);
                   videoChoice = MC.vidChoice;
                   contentLoader.content.removeEventListener( "getVidChoice" , getVidChoice );
                   playOn();
               public function playOn() {
                   timesAdvanced++;
                   moveAdv = true;
                   contentFadeOut();
                   hideNavControls();
            public function loadComplete(e:Event):void {
                loadMsg_mc.visible = false;
                contentLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,loadComplete);
                contentLoader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS,loadProgress);
                contentLoader.content.addEventListener("endOfContent",endContentHandler);
                   contentLoader.content.addEventListener("getSWFChoice",getSWFChoice);
                   contentLoader.content.addEventListener("getVidChoice",getVidChoice);
                Tweener.addTween(main_HUD.progBar_mc.progFill_mc,{scaleX:(currentContent) / int(numPages - 1),time:.4,transition:"easeOutSin"});
                if (currentContent == 0){
                    main_HUD.pgNum_txt.text = "Welcome";
                } else{
                    main_HUD.pgNum_txt.text = "Page " + currentContent + " of " + int(numPages - 1);
                switch (currentContentType) {
                    case "cap" :
                        contentLoader.content.addEventListener("quizAdvancePage",quizNext);
                        break;
                    case "swf" :
                        contentLoader.content.addEventListener("quizAdvancePage",quizNext);
                        break;
                    case "quiz" :
                        contentLoader.content.addEventListener("quizAdvancePage",quizNext);
                        var loadedContent = MovieClip(contentLoader.content);
                        var xmlQuizContent = videoList.module[currentModule].listedContent[currentContent].question;
                        var numQuestions = int(xmlQuizContent.length());
                        var questionArray:Array = new Array  ;
                        var choiceArray:Array = new Array  ;
                        var correctChoiceArray:Array = new Array  ;
                        var responsesArray:Array = new Array  ;
                        var passedImageArray:Array = new Array();
                        for (var i = 0; i < numQuestions; i++) {
                            questionArray.push(String(xmlQuizContent[i].questionText));
                            var tempString:String = "";
                            for (var j = 0; j < xmlQuizContent[i].answerChoice.length(); j++) {
                                tempString +=  xmlQuizContent[i].answerChoice[j] + "%";
                            choiceArray.push(tempString);
                            tempString = "";
                            correctChoiceArray.push(xmlQuizContent[i]. @ correctChoice);
                            passedImageArray.push(xmlQuizContent[i]. @ dispImage);
                            responsesArray.push(xmlQuizContent[i].responseText);
                        loadedContent.populateQuiz(questionArray,choiceArray,correctChoiceArray,responsesArray,pa ssedImageArray);
                        break;
                    default :
                        break;
                addContent();
                checkForBeginning();
            public function endContentHandler(e:Event):void {
                //here, we will enable navigation again
                trace("Line 295: END OF CONTENT");
                mainMenuVisibility(true);
                loadMsg_mc.visible = false;
                endPageNav();
                updateNav(currentContentType);
                Tweener.addTween(main_HUD.next_btn.bg,{_color:0xffffff,time:.4,transition:"easeOutSin"});
                nextEnabled = true;
                //checkFurthestPage(e.target.currentFrame);
                checkFurthestPage(currentContent);
                if (currentContent == int(numPages - 1)) {
                    setCourseToComplete();
            public function checkFurthestPage(evalNum:Number):void {
                if (isNaN(furthestPage[currentLoadedSection])) { trace("Line 312: furthestPage[currentLoadedSection] is NaN"); }
                if (evalNum > furthestPage[currentLoadedSection]) {
                    trace("Line313: currentLoadedSection is a Number");
                    furthestPage[currentLoadedSection] = evalNum;
                    trace("Line315: furthestPage[currentLoadedSection] = "+furthestPage[currentLoadedSection]);
                saveCoursePos();
            public function endPageNav():void {
                trace("Line 321: On page " + currentContent + " of " + int(numPages - 1));
                setChildIndex(main_HUD,numChildren - 1);
                if (currentContent < int(numPages - 1)) {
                    main_HUD.next_btn.visible = true;
                } else {
                    exit_btn.visible = true;
            public function hideNavControls():void {
                main_HUD.next_btn.visible = false;
                main_HUD.prev_btn.visible = false;
                exit_btn.visible = false;
            public function loadNext(me:MouseEvent):void {
                timesAdvanced++;
                moveAdv = true;
                contentFadeOut();
                hideNavControls();
            public function quizNext(e:Event):void {
                timesAdvanced++;
                moveAdv = true;
                contentFadeOut();
            public function loadPrev(me:MouseEvent):void {
                timesAdvanced--;
                trace("Line 350: loading prev");
                moveAdv = false;
                doLoadPrev();
                hideNavControls();
            public function doLoadNext():void {
                switch (advanceBehavior) {
                    case "next" :
                        currentContent++;
                        break;
                    case "noAdvance" :
                        break;
                    default :
                        for (var i in videoList.module[currentModule].listedContent) {
                            if (advanceBehavior == videoList.module[currentModule].listedContent[i].contentTitle) {
                                currentContent = i;
                        break;
                trace("Line 372: loading next");
                contentLoader.unloadAndStop();
                if (contentContainer.numChildren > 0) {
                    contentContainer.removeChild(contentLoader);
                loadContent();
            public function doLoadPrev():void {
                switch (prevBehavior) {
                    case "prev" :
                        currentContent--;
                        if (currentContent < 0) {
                            currentModule = 0;
                            currentContent = 1;
                            timesAdvanced = 2;
                            numPages = 2;
                        break;
                    default :
                        for (var i in videoList.module[currentModule].listedContent) {
                            if (prevBehavior == videoList.module[currentModule].listedContent[i].contentTitle) {
                                currentContent = i;
                        break;
                trace("Line 400: loading prev");
                contentLoader.unloadAndStop();
                if (contentContainer.numChildren > 0) {
                    contentContainer.removeChild(contentLoader);
                loadContent();
            public function addContent():void {
                contentContainer.addChild(contentLoader);
                navToTop();
                textPanelListener();
            public function loadProgress(pe:ProgressEvent):void {
                var percentageLoaded:int = (pe.bytesLoaded / pe.bytesTotal) * 100;
                trace("Line 415: Loading..." + pe.bytesLoaded + " out of " + pe.bytesTotal);
                loadMsg_mc.loadText_txt.text = String(percentageLoaded) + "%";
            public function updateNav(contentTypeCondition):void {
                trace("Line 420: Checking nav. On Page " + currentContent);
                if (currentContent == 0) {
                    main_HUD.prev_btn.visible = false;
                navToTop();
            public function checkForBeginning():void {
                trace("Line 427: Check for beginning");
                if (currentContent != 0) {
                    trace("Line 429: Is not beginning");
                    main_HUD.prev_btn.visible = true;
                } else {
                    mainMenuVisibility(false);
                if (currentContent < furthestPage) {
                    main_HUD.next_btn.visible = true;
            public function textPanelListener():void {
                if (videoList.module[currentModule].listedContent[currentContent].panelText != "_noText") {
                    trace("Line 443: should move up");
                    movePanel("up");
                    textPanel_mc.panelText_mc.gotoAndStop(videoList.module[currentModule].listedContent[curre ntContent].panelText);
                } else {
                    movePanel("down");
            public function addNavListeners():void {
                main_HUD.prev_btn.mouseChildren = false;
                main_HUD.prev_btn.addEventListener(MouseEvent.MOUSE_OVER,beginGlow);
                main_HUD.prev_btn.addEventListener(MouseEvent.MOUSE_OUT,fadeGlow);
                main_HUD.prev_btn.addEventListener(MouseEvent.CLICK,loadPrev);
                main_HUD.next_btn.mouseChildren = false;
                main_HUD.next_btn.addEventListener(MouseEvent.MOUSE_OVER,beginGlow);
                main_HUD.next_btn.addEventListener(MouseEvent.MOUSE_OUT,fadeGlow);
                main_HUD.next_btn.addEventListener(MouseEvent.MOUSE_UP,loadNext);
                exit_btn.addEventListener(MouseEvent.MOUSE_UP,navHandler);
            public function beginGlow(me:MouseEvent):void
                switch (me.target.name)
                    case "next_btn" :
                        if (nextEnabled == true)
                            Tweener.addTween(me.target.bg,{_color:0xffffff,time:.4,transition:"easeOutSin"});
                        break;
                    default :
                        Tweener.addTween(me.target.bg,{_color:0xffffff,time:.4,transition:"easeOutSin"});
                        break;
            public function fadeGlow(me:MouseEvent):void {
                Tweener.addTween(me.target.bg,{_color:0x666666,time:.4,transition:"easeOutSin"});
            public function determineSkip():void {
                if (contentLoader.numChildren) {
                    var thisContent:MovieClip = MovieClip(contentLoader.getChildAt(0));
                trace(currentLoadedSection+ "Current content: "+thisContent.currentFrame);
                trace("Line 486 - Furthest page is "+furthestPage[currentLoadedSection]+" and the current page is "+thisContent.currentFrame);
                if (furthestPage[currentLoadedSection] >= thisContent.currentFrame) {
                    trace("can skip this page");
                    Tweener.addTween(main_HUD.next_btn.bg,{_color:0xffffff,time:.4,transition:"easeOutSin"});
                    nextEnabled = true;
                } else {
                    nextEnabled = false;
                    trace("can't skip");
            public function navHandler(me:MouseEvent):void {
                    switch (me.target.name) {
                        case "next_btn" :
                            if (nextEnabled == true) {
                                nextEnabled = false;
                                main_HUD.next_btn.addEventListener(MouseEvent.MOUSE_UP,loadNext);
                                Tweener.addTween(main_HUD.next_btn.bg,{_color:0x666666,time:.2,transition:"easeOutSin"});
                                determineSkip();
                            } else {
                                trace("can't proceed yet");
                            break;
                        case "prev_btn" :
                            exit_btn.visible = false;
                            main_HUD.prev_btn.addEventListener(MouseEvent.MOUSE_UP,loadPrev);
                            determineSkip();
                            break;
                        case "exit_btn" :
                            contentLoader.unloadAndStop();
                            ExternalInterface.call("closeCourseWindow");
                            break;
            //HERE THERE BE SCORM CODE
            public function exitCourse(me:MouseEvent):void {
                ExternalInterface.call("closeCourseWindow");
            public function initializeTracking():void {
                scorm = new SCORM  ;
                lmsConnected = scorm.connect();
                if (lmsConnected) {
                    lessonStatus = scorm.get("cmi.core.lesson_status");
                    if (lessonStatus == "completed" || lessonStatus == "passed") {
                        scorm.disconnect();
                    } else {
                        success = scorm.set("cmi.core.lesson_status","incomplete");
                        scorm.save();
                        suspend_data = scorm.get("cmi.suspend_data");
                        if (suspend_data.length > 0) {
                            arrayToParse = suspend_data.split(",");
                            currentContent = parseInt(arrayToParse[0],10);
                            furthestPage = parseInt(arrayToParse[1],10);
                } else {
                    //connectionStatus_txt.text = "Could not connect to LMS.";
            public function saveCoursePos():void {
                trace("Line 554: Saving position at " + currentContent);
                var suspend_str:String = String(currentContent)+","+String(furthestPage);
                scorm.set("cmi.suspend_data",suspend_str);
                scorm.save();
            public function setCourseToComplete():void {
                trace("Line 561: Saving complteted course");
                success = scorm.set("cmi.core.lesson_status", "completed");
                scorm.disconnect();
                   lmsConnected = false;
            public function navToTop():void {
                setChildIndex(main_HUD,numChildren-1);

    You'll have to do two things.. Elaborate on exactly what you mean by a white screen appears. What is turning white? Are you generating a SWF from captivate of a screen capture session, then trying to load that SWF with a wrapper and when you do so it turns white? (In that scenario, if Captivate was looking for external assets it can't find, that'd be why). Please include more details on that.
    Second, code of this size pasted into the forum really doesn't help. You'll need to do the work to isolate exactly what part of the code you're seeing this white box appear. Run it in a debugger line by line until you witnesss it turn white and only share that small portion of code. And if you do choose to share a ton of code, please use a site like pastebin.com which will retain formatting and color coding, making it much easier to read, and then share that pastebin link.

  • SuccessFactors LMS not showing completion on Captivate 5.5 courses

    THis is the only info SuccessFactors is telling us.  I dont know where to find this settings in Preferences or Publishing settings. 
    Please double check the publishing settings to ensure the content is set to update lesson_status as soon as the user reaches the final slide.
    Republish and resubmit this new content to iContent and I will process it ASAP.
    Please let me know if you have any questions!
    LMSFinish('')
    LMSCommit('')
    writeData('cmi.core.lesson_location', 'PUTPARAM', 'CORE', 'LESSON_LOCATION', '33') returning true
    writeData('cmi.core.lesson_status', 'PUTPARAM', 'CORE', 'LESSON_STATUS', 'incomplete') returning true
    writeData('cmi.core.session_time', 'PUTPARAM', 'CORE', 'TIME', '00:01:14') returning true
    writeData('cmi.core.score.raw', 'PUTPARAM', 'CORE', 'SCORE', '0') returning true
    writeData('cmi.core.score.min', 'PUTPARAM', 'CORE', 'SCORE', '0') returning true
    writeData('cmi.core.score.max', 'PUTPARAM', 'CORE', 'SCORE', '0') returning true
    writeData('cmi.suspend_data', 'PUTPARAM', 'CORE_LESSON', '', 'hA1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24 nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP 1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1E none%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Eno ne%24nP1Enone%24nP000AA000AA') returning true
    commitData() called
    sendHACPMessage, props ==
    {version=2.0, session_id=C16941M3741S, command=PUTPARAM, AICC_Data=[CORE_LESSON]
    hA1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP 1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1E none%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Eno ne%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone %24nP1Enone%24nP000AA000AA
    [CORE]
    TIME=00:01:14
    LESSON_STATUS=incomplete
    LESSON_LOCATION=33
    SCORE=0,0,0
      returning 'true'
    sendHACPMessage, props ==
    {version=2.0, session_id=C16941M3741S, command=ExitAU}
      returning 'true'

    Hello,
    Welcome to Adobe Forums.
    Add a button on the Last Slide of your Project (Click to Finish) and enable "Include In Quiz" under Reporting (Properties Inspector)
    Make sure "Reporting Level" should be Interactions and Score (Under Edit -> Preferences)
    Thanks,
    Vikram

  • Publishing to Skillport - SCORM/Reporting settings?

    I'm currently publishing eLearning courses to Skillport using Adobe Presenter 7. These courses are simply slides with narration and a few embedded CP demos and no quizzing (I'm basing course completion on the end user viewing 100% of the slides). I am publishing to SCORM 1.2 RTE with the following Reporting options selected:
    SCORM 1.2
    Report Slide Views Only - 100%
    Report Status as defined by report data
    Report Score to LMS as Score
    Only Report the score
    These seem to be the only settings that track anything so far. The problem is, as soon as I launch a course, it is marked as 100% complete. Ideally I'd like to be able to track if the user only views 1/2 of the course (it should show 50%) or 80% etc. Does anyone have experience publishing courses to Skillport or know of any settings I can try? I've tried multiple combinations and can't seem to get anything to work (except the settings above which marks completion at 100% right away). Any help would be much appreciated, thanks in advance.

    Simul8,
    I'm not familiar w/ Skillport...but I do have experience w/ Docent, Blackboard, and GeoLearning LMS's.
    I've also seen this kind of question come up a lot in the last several months, so if you don't mind, I'm going to steal one of my responses from a different post and copy it here...and who knows, perhaps something useful will come of it.
    That said, even though you don't have any questions in your presentation, I'd strongly recommend adding a Quiz element anyway.  The reason is that specific pieces of information can be communicated to an LMS that may not be available unless a Quiz is used.  And remember: a Quiz is nothing more than a "container" or a "shell" that a presentation uses when you have question slides in your content.
    While we're at it, here's something you can check: if your presentation is quiz-free, then most likely you won't see the "scorm_support" folder in the root of your published project.  That will all change once you add a Quiz to your deck.
    So let's try this:  Get back into your deck and go into the Quiz Manager.  Add a Quiz, and for now, set the Pass/Fail to 0.  Leave everything else alone and click the Reporting tab and use the following settings:
    Enable reporting and select "SCORM".
    Immediately after that, click the Manifest button to toggle for SCORM 1.2.
    You already have "slide views only" set, so that's okay.
    Report Pass/Fail: "defined by report data"
    At this point, Report Score / Reporting Level shouldn't matter because of the former selections/settings, so you can leave those alone.
    Again, all we did is add a Quiz to the deck—there are no question slides to worry about!  Having done all this, save and publish your deck and then test it on Skillport.  If you determine that Skillport is throwing some wierd data (for example you might see: cmi.suspend_data = "not attempted" or cmi.total_time = "P"), then you may need to do some additional homework.  If that's the case, what you'll need to do is manually update a variable in the scorm_support.js file (it can be found in the scorm_support folder in your published content's folder).
    Look for the following line:
    var g_nAPI = 0;  // type of API to start searching for; allowable values: 0 - SCORM 2004; 1 - SCORM 1.2 (or 1.1)
    Even though your content may have been published for SCORM 1.2, the variable g_nAPI is probably set for SCORM 2004.  To overcome that problem, change that value to 1 to get the LMS communicating properly between Presenter and Skillport.  I've run into a similar problem when launching Presenter content on a Blackboard system.  Not fun.  And I don't know why this happens, especially when you toggle for SCORM 1.2....but it does and it's frustrating.
    Anyway, sorry for the long rant...and again, although I'm not specfically familiar w/ Skillport, I think the above will help.
    Rob
    http://www.robrode.com/yabb/

  • Moodle + Firefox/Opera + Captivate SCORM = trouble

    I'm using the Moodle LMS (version 1.8) and created a few
    SCORM packages with Craptivate 2 to test. When using Firefox
    (version 2.0.0.4) or Opera (version 9.21) the problems start. Under
    Firefox I get partial tracking results and the course never gets
    listed as completed. When using Opera I get absolutely nothing, no
    scores, not completion, nada, nichts. As soon as I make use of the
    dreadful Internet Exploder, stuff works like one would expect.
    The question of the day, are the Craptivate 2 packages
    crafted in such a way as that the accompanying .js and .html files
    are one of these "IE only" deals? It for sure isn't Moodle as it
    never fails when using IE.
    Anyone can shed some light on this?

    Hello all,
    I've got an explanation to this issue with firefox, but no
    solution.
    I've noticed the same problem with a LMS: the final score was
    not sent, and sco stayed at failed status in my sample.
    When I log the dialog with the API scorm and I notice that
    the calls to SCORM API are slower with Firefox 1.5 and 2.0 than
    with IE.
    So slower, that the Captivate ends, but the LMSSetValue calls
    was still going during several seconds, with any waiting
    instruction to the learner.
    The learner ends the Captivate before it has time to send all
    SCORM data to the LMS. As the "completed" status is at the end, it
    stay at failed status.
    Here the log with my sample:
    Each call to SCORM API is logged, with the time.
    We notice more than 250 milliseconds each LMSSetValue.
    At the begining:
    16:32:02.884 LMSSetValue : cmi.core.session_time, 00:00:05
    At the end, before exiting:
    16:32:20.619 LMSSetValue : cmi.core.session_time, 00:00:15
    16:32:20 - 16:32:02 = 18 seconds, but in fact only 00:00:15 -
    00:00:05 = 10 seconds spent. So => the sending of SCORM data
    takes 8 seconds late compare to Captivate duration.
    If I wait before clicking on Exit:
    16:32:26.150 LMSSetValue : cmi.core.session_time, 00:00:29
    The complete log:
    16:31:53.274 DummyAPI initialisé
    16:31:56.728 LMSInitialize :
    16:31:57.009 LMSGetValue : cmi.core._children, result =
    student_id,student_name,credit,lesson_status,total_time,score
    16:31:57.259 LMSGetValue : cmi.suspend_data, result =
    16:31:57.509 LMSGetValue : cmi.interactions._children, result
    =
    16:31:57.790 LMSGetValue : cmi.interactions._count, result =
    16:31:58.024 LMSGetValue : cmi.launch_data, result =
    16:31:58.243 LMSGetValue : cmi.objectives._count, result =
    16:31:58.478 LMSGetValue : cmi.core.score._children, result =
    max,min,raw
    16:31:58.728 LMSGetValue : cmi.core.score.raw, result = 0
    16:31:58.946 LMSGetValue : cmi.core.score.min, result = 0
    16:31:59.196 LMSGetValue : cmi.core.score.max, result = 100
    16:32:01.696 LMSSetValue : cmi.core.score.raw, 1
    16:32:01.962 LMSSetValue : cmi.core.score.min, 0
    16:32:02.196 LMSSetValue : cmi.core.score.max, 5
    16:32:02.431 LMSSetValue : cmi.core.lesson_status, failed
    16:32:02.681 LMSSetValue : cmi.core.lesson_location, 0
    16:32:02.884 LMSSetValue : cmi.core.session_time, 00:00:05
    16:32:03.150 LMSSetValue : cmi.suspend_data,
    A00000001001BA000BAA~$YR*TLQf0110BBBB1B1B1G
    16:32:03.368 LMSCommit :
    16:32:03.478 LMSSetValue : cmi.core.score.raw, 1
    16:32:03.696 LMSSetValue : cmi.core.score.min, 0
    16:32:03.931 LMSSetValue : cmi.core.score.max, 5
    16:32:04.197 LMSSetValue : cmi.core.lesson_status, failed
    16:32:04.509 LMSSetValue : cmi.core.lesson_location, 1
    16:32:04.728 LMSSetValue : cmi.core.session_time, 00:00:05
    16:32:04.947 LMSSetValue : cmi.suspend_data,
    B00000011001BA000BAA~$YR*TLQf0110BBBB1B1B1G
    16:32:05.165 LMSCommit :
    16:32:05.290 LMSSetValue : cmi.core.score.raw, 1
    16:32:05.509 LMSSetValue : cmi.core.score.min, 0
    16:32:05.759 LMSSetValue : cmi.core.score.max, 5
    16:32:05.978 LMSSetValue : cmi.core.lesson_status, failed
    16:32:06.212 LMSSetValue : cmi.core.lesson_location, 2
    16:32:06.462 LMSSetValue : cmi.core.session_time, 00:00:06
    16:32:06.681 LMSSetValue : cmi.suspend_data,
    C00000111001BA000BAA~$YR*TLQf0110BBBB1B1B1G
    16:32:06.947 LMSCommit :
    16:32:07.056 LMSSetValue : cmi.core.score.raw, 2
    16:32:07.275 LMSSetValue : cmi.core.score.min, 0
    16:32:07.493 LMSSetValue : cmi.core.score.max, 5
    16:32:07.743 LMSSetValue : cmi.core.lesson_status, failed
    16:32:07.947 LMSSetValue : cmi.core.lesson_location, 2
    16:32:08.197 LMSSetValue : cmi.core.session_time, 00:00:08
    16:32:08.431 LMSSetValue : cmi.suspend_data,
    C00000111001BA000CAA~$YR*TLQf0110BBBB1B1B1GCB~$YR*ZlRf0110BBBB1B1B1G
    16:32:08.665 LMSCommit :
    16:32:08.775 LMSSetValue : cmi.core.score.raw, 2
    16:32:08.994 LMSSetValue : cmi.core.score.min, 0
    16:32:09.290 LMSSetValue : cmi.core.score.max, 5
    16:32:09.556 LMSSetValue : cmi.core.lesson_status, failed
    16:32:09.775 LMSSetValue : cmi.core.lesson_location, 3
    16:32:09.994 LMSSetValue : cmi.core.session_time, 00:00:08
    16:32:10.212 LMSSetValue : cmi.suspend_data,
    D00001111001BA000CAA~$YR*TLQf0110BBBB1B1B1GCB~$YR*ZlRf0110BBBB1B1B1G
    16:32:10.415 LMSCommit :
    16:32:10.509 LMSSetValue : cmi.core.score.raw, 2
    16:32:10.744 LMSSetValue : cmi.core.score.min, 0
    16:32:11.009 LMSSetValue : cmi.core.score.max, 5
    16:32:11.244 LMSSetValue : cmi.core.lesson_status, failed
    16:32:11.447 LMSSetValue : cmi.core.lesson_location, 4
    16:32:11.775 LMSSetValue : cmi.core.session_time, 00:00:08
    16:32:11.994 LMSSetValue : cmi.suspend_data,
    E00011111001BA000CAA~$YR*TLQf0110BBBB1B1B1GCB~$YR*ZlRf0110BBBB1B1B1G
    16:32:12.165 LMSCommit :
    16:32:12.244 LMSSetValue : cmi.core.score.raw, 3
    16:32:12.478 LMSSetValue : cmi.core.score.min, 0
    16:32:12.665 LMSSetValue : cmi.core.score.max, 5
    16:32:12.806 LMSSetValue : cmi.core.lesson_status, failed
    16:32:12.915 LMSSetValue : cmi.core.lesson_location, 4
    16:32:13.072 LMSSetValue : cmi.core.session_time, 00:00:10
    16:32:13.212 LMSSetValue : cmi.suspend_data,
    E00011111001BA000DAA~$YR*TLQf0110BBBB1B1B1GCB~$YR*ZlRf0110BBBB1B1B1GEC~$YR*fLSf0110BBBB1B 1B1G
    16:32:13.400 LMSCommit :
    16:32:13.478 LMSSetValue : cmi.core.score.raw, 3
    16:32:13.650 LMSSetValue : cmi.core.score.min, 0
    16:32:13.853 LMSSetValue : cmi.core.score.max, 5
    16:32:14.009 LMSSetValue : cmi.core.lesson_status, failed
    16:32:14.150 LMSSetValue : cmi.core.lesson_location, 5
    16:32:14.291 LMSSetValue : cmi.core.session_time, 00:00:10
    16:32:14.431 LMSSetValue : cmi.suspend_data,
    F00111111001BA000DAA~$YR*TLQf0110BBBB1B1B1GCB~$YR*ZlRf0110BBBB1B1B1GEC~$YR*fLSf0110BBBB1B 1B1G
    16:32:14.587 LMSCommit :
    16:32:14.666 LMSSetValue : cmi.core.score.raw, 4
    16:32:14.822 LMSSetValue : cmi.core.score.min, 0
    16:32:14.962 LMSSetValue : cmi.core.score.max, 5
    16:32:15.119 LMSSetValue : cmi.core.lesson_status, passed
    16:32:15.259 LMSSetValue : cmi.core.lesson_location, 5
    16:32:15.416 LMSSetValue : cmi.core.session_time, 00:00:13
    16:32:15.603 LMSSetValue : cmi.suspend_data,
    F00111111001BA000EAA~$YR*TLQf0110BBBB1B1B1GCB~$YR*ZlRf0110BBBB1B1B1GEC~$YR*fLSf0110BBBB1B 1B1GFD~$YR*mwSf0110BBBB1B1B1G
    16:32:15.775 LMSCommit :
    16:32:15.853 LMSSetValue : cmi.core.score.raw, 4
    16:32:16.322 LMSSetValue : cmi.core.score.min, 0
    16:32:16.541 LMSSetValue : cmi.core.score.max, 5
    16:32:16.744 LMSSetValue : cmi.core.lesson_status, passed
    16:32:16.962 LMSSetValue : cmi.core.lesson_location, 6
    16:32:17.197 LMSSetValue : cmi.core.session_time, 00:00:13
    16:32:17.416 LMSSetValue : cmi.suspend_data,
    G01111111001BA000EAA~$YR*TLQf0110BBBB1B1B1GCB~$YR*ZlRf0110BBBB1B1B1GEC~$YR*fLSf0110BBBB1B 1B1GFD~$YR*mwSf0110BBBB1B1B1G
    16:32:17.650 LMSCommit :
    16:32:17.759 LMSSetValue : cmi.core.score.raw, 5
    16:32:17.978 LMSSetValue : cmi.core.score.min, 0
    16:32:18.197 LMSSetValue : cmi.core.score.max, 5
    16:32:18.431 LMSSetValue : cmi.core.lesson_status, passed
    16:32:18.634 LMSSetValue : cmi.core.lesson_location, 6
    16:32:18.869 LMSSetValue : cmi.core.session_time, 00:00:15
    16:32:19.103 LMSSetValue : cmi.suspend_data,
    G01111111001BA000FAA~$YR*TLQf0110BBBB1B1B1GCB~$YR*ZlRf0110BBBB1B1B1GEC~$YR*fLSf0110BBBB1B 1B1GFD~$YR*mwSf0110BBBB1B1B1GGE~$YR*cWTf0110BBBB1B1B1G
    16:32:19.353 LMSCommit :
    16:32:19.463 LMSSetValue : cmi.core.score.raw, 5
    16:32:19.697 LMSSetValue : cmi.core.score.min, 0
    16:32:19.947 LMSSetValue : cmi.core.score.max, 5
    16:32:20.181 LMSSetValue : cmi.core.lesson_status, passed
    16:32:20.400 LMSSetValue : cmi.core.lesson_location, 6
    16:32:20.619 LMSSetValue : cmi.core.session_time, 00:00:15
    16:32:20.853 LMSSetValue : cmi.suspend_data,
    G01111111001BB000FAA~$YR*TLQf0110BBBB1B1B1GCB~$YR*ZlRf0110BBBB1B1B1GEC~$YR*fLSf0110BBBB1B 1B1GFD~$YR*mwSf0110BBBB1B1B1GGE~$YR*cWTf0110BBBB1B1B1G
    16:32:21.056 LMSCommit :
    16:32:25.119 LMSSetValue : cmi.core.score.raw, 5
    16:32:25.338 LMSSetValue : cmi.core.score.min, 0
    16:32:25.556 LMSSetValue : cmi.core.score.max, 5
    16:32:25.760 LMSSetValue : cmi.core.lesson_status, passed
    16:32:25.963 LMSSetValue : cmi.core.lesson_location, 7
    16:32:26.150 LMSSetValue : cmi.core.session_time, 00:00:29
    16:32:26.385 LMSSetValue : cmi.suspend_data,
    H11111111000BB000FAA~$YR*TLQf0110BBBB1B1B1GCB~$YR*ZlRf0110BBBB1B1B1GEC~$YR*fLSf0110BBBB1B 1B1GFD~$YR*mwSf0110BBBB1B1B1GGE~$YR*cWTf0110BBBB1B1B1G
    16:32:26.603 LMSCommit :
    16:32:26.713 LMSCommit :
    16:32:26.822 LMSFinish :

  • Articulate SCORM 1.2 content hangs when launched in Oracle OLM 12.1.3 RUP4

    Hi Folks,
    Using Oracle Learning Management (OLM) version 12.1.3. I have successfully uploaded the content zip having previously replaced 5.xsd's with the Oracle specific ones. The content uploads without error as expected.
    Tracking type is set to SCORM 1.2 in OLM (CMI is not a listed option in this version). I've also uploaded the SCORM adapter and validated that this is working correctly. I have also uploaded, launched and successfully played the Oracle SCORM test object to verify and all checks out ok.
    I have an issue where content begins to launch in the OLM course player and then hangs indefinitely. Status bar get to about 25% and stops.
    The content is published to LMS > SCORM 1.2 in Articulate presenter. This is not unique to one piece of content we have created using Articulate (I've tested 3 and they all behave the same).
    I'm assuming that this points to the issues being content specific but I've not ruled-out that it may be some relating to JAVA or specific to the clients IT Infrastructure.
    Any advice and guidance would be much appreciated.
    Thanks and regards

    Hey Scott, good to hear from you.
    Ever the Guru I see, hope life is treating you well at Seertech.
    Articulate is version 9 and it's Presenter, the clients pc's have Flash version 10,1,102,64 installed. On that basis do you reckon the Flash updater is worth a go?
    Also not sure if it's relevant but on the Flash Player angle, the same content published in AICC in presenter plays fine.
    This is the log from the JAVA Console;
    Java Plug-in 1.6.0_07
    Using JRE version 1.6.0_07 Java HotSpot(TM) Client VM
    User home directory = C:\Documents and Settings\155842
    Oracle eLMS SCORM Applet 115.20
    Message logging enabled.
    LMS helper class: oracle.apps.ota.lms.LMSJava2Helper
    Message logging enabled.
    *** LMSInitialize("") [Mon Mar 19 11:44:39 GMT 2012]
    LMS_URL found in query string.
    LMS_URL set to: https://appstwdev9.oracleoutsourcing.com:443/OA_HTML/OA.jsp?page=/oracle/apps/ota/player/webui/PlayerLmsApiRN&addBreadCrumb=S&OALAF=oaText&scorm_attempt=1332157454357&transactionid=1968967268&oapc=7&oas=S1-zYadTlladKlDWMTuhHg..
    Applet codebase: http://ovd-na1-02.internal.xxxxxxxxxxxx.com/contentstorage/adapter/Adapter/
    Request:
    action=GetAttemptState
    End of Request
    Reply:
    error=0
    initialized=false
    error_text=
    autoCommit=false
    finished=false
    End of Reply
    Request:
    action=Initialize
    End of Request
    Reply:
    error_text=
    error=0
    End of Reply
    Returned: "true"
    *** LMSGetValue("cmi.core.lesson_mode") [Mon Mar 19 11:44:41 GMT 2012]
    Request:
    action=GetParam
    End of Request
    Reply:
    error_text=
    cmi.core.lesson_status=incomplete
    cmi.core.total_time=06:36:06
    cmi.suspend_data=||undefined
    cmi.core.student_id=155842
    cmi.core.credit=no-credit
    cmi.core.student_name=Granger, Luther
    cmi.core.entry=resume
    error=0
    cmi.core.exit=
    cmi.core.session_time=00:00:00
    oracle.apps.ota.private.rebuildOutline=false
    cmi.core.lesson_mode=normal
    End of Reply
    Returned: "normal"
    *** LMSGetLastError() [Mon Mar 19 11:44:41 GMT 2012]
    Returned: "0"
    *** LMSGetValue("cmi.core.lesson_mode") [Mon Mar 19 11:44:41 GMT 2012]
    Returned: "normal"
    *** LMSGetLastError() [Mon Mar 19 11:44:41 GMT 2012]
    Returned: "0"
    *** LMSGetValue("cmi.core.lesson_status") [Mon Mar 19 11:44:41 GMT 2012]
    Returned: "incomplete"
    *** LMSGetLastError() [Mon Mar 19 11:44:41 GMT 2012]
    Returned: "0"
    *** LMSSetValue("cmi.core.exit", "suspend") [Mon Mar 19 11:44:41 GMT 2012]
    Returned: "true"
    *** LMSSetValue("cmi.core.lesson_status", "incomplete") [Mon Mar 19 11:44:42 GMT 2012]
    Returned: "true"
    *** LMSGetValue("cmi.suspend_data") [Mon Mar 19 11:44:42 GMT 2012]
    Returned: "||undefined"
    *** LMSGetLastError() [Mon Mar 19 11:44:42 GMT 2012]
    Returned: "0"
    *** LMSGetValue("cmi.core.lesson_status") [Mon Mar 19 11:44:42 GMT 2012]
    Returned: "incomplete"
    *** LMSGetLastError() [Mon Mar 19 11:44:42 GMT 2012]
    Returned: "0"
    *** LMSSetValue("cmi.suspend_data", "||undefined") [Mon Mar 19 11:44:47 GMT 2012]
    Returned: "true"
    *** LMSSetValue("cmi.core.session_time", "0000:00:05.23") [Mon Mar 19 11:44:47 GMT 2012]
    Returned: "true"
    *** LMSCommit("") [Mon Mar 19 11:44:47 GMT 2012]
    Request:
    cmi.core.exit=suspend
    action=PutParam
    cmi.core.session_time=0000%3A00%3A05.23
    End of Request
    Reply:
    error_text=
    error=0
    End of Reply
    Returned: "true"
    I appreciate you taking time out to reply.
    Cheers
    Luther

  • Suspend data corrupt?

    We are using SCORM 1.2 multi sco courses on our LMS and are having an issue when users take the test, fail it, then retry launching it.  The symptom is, the assessment sco tries to load, then turns into a grey screen with no controls--nothing on it.  To get it to become 'responsive' again, we have to reenroll our students to basically clear out their previous data.
    We're trying to determine if end user behavior might be causing this?  For some reason it seems as though the suspend data is corrupt.  Our analyst was able to trap a 'bad' string. And when this was removed, the content launched okay.  This is what he supplied us with...  I'm trying to get at the root of what is producing the 'bad' data. I recognize our pool names:  rcCRA002T001P001B1Q
    We are hoping the below is meaningful to someone?  Any thoughts appreciated!
    Bad Resume Data:
                                    cmi.suspend_data="M1Enone%2524nP1Enone%2524nP1QrcCRA002T001P001B1QrcCRA001T005P004C1QrcCR A001T005P003A1QrcCRA001T005P002B1QrcCRA001T005P001C1QrcCRA001T004P001A1QrcCRA001T003P001A1 QrcCRA001T002P002A1QrcCRA001T002P001A1QrcCRA001T001P001B1Enone%2524nP000EE001BLLL000LLLL0E none%2524nP1LL0Enone%2524nP1LL0Enone%2524nP1LL0Enone%2524nP1LL0Enone%2524nP1LL0Enone%2524n P1LL0Enone%2524nP1LL0Enone%2524nP1LL0Enone%2524nP1LL0Enone%2524nP1LL0Enone%2524nP1LL0Enone %2524nP1LL0Enone%2524nP1LL0Enone%2524nP1LL0Enone%2524nP1LL0Enone%2524nP1LL0Enone%2524nP1LL 0Enone%2524nP1LL0Enone%2524nP1LL0Enone%2524nP1LL0Enone%2524nP1LL0Enone%2524nP1LL0Enone%252 4nP1LL0Enone%2524nP1LL0Enone%2524nP1LL0Enone%2524nP1LL0Enone%2524nP1A";
    Good Resume Data:
                                    cmi.suspend_data="L0Enone%2524nP1Enone%2524nP1QrcCRA002T001P001C1QrcCRA001T005P004C1QrcCR A001T005P003A1QrcCRA001T005P002C1QrcCRA001T005P001B1QrcCRA001T004P001A1QrcCRA001T003P001C1 QrcCRA001T002P002A1QrcCRA001T002P001C1QrcCRA001T001P001A1Enone%2524nP001ED001NBK100BE0Dnil DnilDnilDnilBDB0BCB0BBB0BAB0CP001AEB0DnilDnilDniDnilDnilDnilDnilBDB1BCB0BBB0BAB0B0000AAB0D nilDnilDnilDnilAE000AADnilDnilDnilDnilDnilLL000AALL0Enone%2524nP1DnilDnilDnilDnilCP%257E%2 524cS%252A6niNq110BEB0H3%253B2%253B1%253B0DnilDnilDnilBDB1BCB0BBB0BAB0DQ%257E%2524cS%252A7 jjNq100BEB0H3%253B2%253B1%253B0DnilDnilDnilBDB1BCB0BBB0BAB0EV%257E%2524cS%252A8bkNq100BEB0 H3%253B2%253B1%253B0DnilDnilDnilBDB0BCB1BBB0BAB0FW%257E%2524cS%252AERlNq100BEB0H3%253B2%25 3B1%253B0DnilDnilDnilBDB1BCB0BBB0BAB0Ga%257E%2524cS%252ANZmNq100BEB0H3%253B2%253B1%253B0Dn ilDnilDnilBDB0BCB0BBB0BAB1He%257E%2524cS%252A%255FSnNq100BEB0H3%253B2%253B1%253B0DnilDnilD nilBDB1BCB0BBB0BAB0If%257E%2524cS%252AYboNq100BEB0H3%253B2%253B1%253B0DnilDnilDnilBDB0BCB1 BBB0BAB0Jk%257E%2524cS%252AMcpNq100BEB0H3%253B2%253B1%253B0DnilDnilDnilBDB1BCB0BBB0BAB0Kn% 257E%2524cS%252AdMqNq100BEB0H3%253B2%253B1%253B0DnilDnilDnilBDB0BCB1BBB0BAB0A";

    I wondered the same if it was page 27, but do not have the
    time to find out.
    What I have seen,/done:
    I wrote an alert into the JS that would show me the string
    Captivate was writing to the LMS. It always changed the first
    character with respect to the page number, however it was A,B,C..
    The silly thing is the last visited page is getting written
    to lesson_location on the LMS, but Captivate does not use it to
    return the user to the last visited page. This is were I started
    with trying to control the bookmark.
    I intercepted the call to write suspend data, changed the
    first character in the string. Then when I relaunched the course it
    would take me to page 1 if A, page 5 if E.
    My guess will be that AA is page 27, and when parsing the
    string it looks for the first number character.
    What I really need to do is use the suspend data myself to
    set some flags in the course to mark completion of sections. If the
    data is there, great! If not I need to write it at the end and not
    upset the cart.

  • How lesson_status field in ota_performances is complete?

    one person play the course the result lesson_status is complete
    another person play the same course the result is Incomplete
    CAN anyone tell me why or the logic that the lesson_status is updated?
    urgent urgent please help!!!!

    basic: Applet made visible
    basic: Starting applet
    basic: completed perf rollup
    basic: Applet started
    basic: Told clients applet is started
    Message logging enabled.
    LMS helper class: oracle.apps.ota.lms.LMSJava2Helper
    Message logging enabled.
    *** LMSInitialize("") [Mon May 07 21:19:50 CST 2012]
    LMS_URL found in query string.
    LMS_URL set to: http://ccbm.ccdi.com.cn:8000/OA_HTML/OA.jsp?page=/oracle/apps/ota/player/webui/PlayerLmsApiRN&addBreadCrumb=S&OALAF=oaText&transactionid=1115922800&oapc=10&oas=EEl3umyBxrExVTQzZlOgYA..
    Applet codebase: http://10.1.9.109:8888/contentstorage/SCORM_Adapter/
    Request:
    action=GetAttemptState
    End of Request
    network: 正在使用代理 DIRECT 连接 http://ccbm.ccdi.com.cn:8000/OA_HTML/OA.jsp?page=/oracle/apps/ota/player/webui/PlayerLmsApiRN&addBreadCrumb=S&OALAF=oaText&transactionid=1115922800&oapc=10&oas=EEl3umyBxrExVTQzZlOgYA..
    network: 正在使用代理 DIRECT 连接 http://ccbm.ccdi.com.cn:8000/
    network: 正在连接 http://ccbm.ccdi.com.cn:8000/OA_HTML/OA.jsp?page=/oracle/apps/ota/player/webui/PlayerLmsApiRN&addBreadCrumb=S&OALAF=oaText&transactionid=1115922800&oapc=10&oas=EEl3umyBxrExVTQzZlOgYA.. 与 cookie "JSESSIONID=be22abf12bdf8eab60ced859d533b53391b19d870a28ce8e0f0526fd997b2161.e34Pa3mMb3eLb40LaN8MbNuTbh4Le0; OHS-ccbm.ccdi.com.cn-8000=9958CFFC31BF168F54D61B5ACA993EDE7CEFC7CD73D0DA22A030B286DA5723ACFD5F4C115BA4B2894AC0E0F8B1EC2C2D7E98ACE955B4055A909B01FF46650E6689C635C9D30725EC084D3174350C03671792517D86AF35D400E729E9E69A721B53F8E00B4709484D57742CC134884B50FC93A18F38758F5C80728493F070FE0EC9A70EDC3C1EC74224CB5932C0AD9816E4354F22DF2502457736EBAC65D9939129359C5E9885564E5A37284903B71BEFD957FAACF9F28451AF8BB04F84FDC6CA573920EB0D6732F6EF5F4D287D074A98034BAF931D8DAAB03299D9B76EBD0E6EA555592546D2BFB562E61C307237A15539FA495A95BDAD1C97980A34ABFA81D3E9A3FDA4C18C4485B2A188657AF455E44E26CDB8944BD3EA27ED697AE758956C850EF5CFE6612DB5; oracle.uix=0^^GMT+8:00^p; PROD=sU22zEeJKQdI2MqRQ3XKkj9K:S"
    network: 服务器 http://ccbm.ccdi.com.cn:8000/OA_HTML/OA.jsp?page=/oracle/apps/ota/player/webui/PlayerLmsApiRN&addBreadCrumb=S&OALAF=oaText&transactionid=1115922800&oapc=10&oas=EEl3umyBxrExVTQzZlOgYA.. 请求用 "JSESSIONID=d07a1a1eff8b7b8f55819d968b088aaad7bc6d10d1b6cdb42aa30ded6ff06593.e34QbNeKaNaLa40Lb3uSch8Nc3eTe0; path=/OA_HTML" 执行 set-cookie
    Reply:
    <html lang="en-US">
    <head>
    <script>
    function ignoreWarnAboutChanges(url)
    document.location.href = url;
    </script>
    <style type="text/css">
    .globalHeader {
    background: url(/OA_HTML/cabo/images/swan/headerBg.jpg);
    background-repeat:repeat-x;background-color:#1963a9
    .globalLink {white-space:nowrap;font-size:9pt;font-family:Arial;color:#ffffff;text-decoration:none}
    .pageLink A:link {color:#2b7c92}
    .copyright {white-space:nowrap;font-family:Arial;font-size:7.5pt;color:#ffffff;text-decoration:none}
    .errorHeader {
    color:#ed1c24;
    font-family:Arial;
    font-weight:bold;
    font-size:9pt;
    vertical-align:middle;
    border-bottom-width:1px;
    border-bottom-style:solid;
    border-bottom-color:#3a5a87;
    margin-bottom:0px;
    .errorText {
    font-family:Tahoma,Arial,Helvetica,Geneva,sans-serif;
    font-size:9pt;
    </style>
    <title>Error Page</title>
    <META name="fwk-error" content="Error occured while processing the request">
    <META name="fwk-error-detail" content="oracle.apps.fnd.framework.OAException%3A+java.lang.NullPointerException%0A%09at+oracle.apps.fnd.framework.OAException.wrapperException(OAException.java%3A912)%0A%09at+oracle.apps.fnd.framework.webui.OAPageErrorHandler.prepareException(OAPageErrorHandler.java%3A1169)%0A%09at+oracle.apps.fnd.framework.webui.OAPageBean.renderDocument(OAPageBean.java%3A3241)%0A%09at+oracle.apps.fnd.framework.webui.OAPageBean.renderDocument(OAPageBean.java%3A3036)%0A%09at+_OA._jspService(_OA.java%3A228)%0A%09at+com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java%3A59)%0A%09at+oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java%3A379)%0A%09at+oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java%3A594)%0A%09at+oracle.jsp.runtimev2.JspServlet.service(JspServlet.java%3A518)%0A%09at+javax.servlet.http.HttpServlet.service(HttpServlet.java%3A856)%0A%09at+com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java%3A713)%0A%09at+com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java%3A370)%0A%09at+com.evermind.server.http.ServletRequestDispatcher.unprivileged_forward(ServletRequestDispatcher.java%3A259)%0A%09at+com.evermind.server.http.ServletRequestDispatcher.access%24100(ServletRequestDispatcher.java%3A51)%0A%09at+com.evermind.server.http.ServletRequestDispatcher%242.oc4jRun(ServletRequestDispatcher.java%3A193)%0A%09at+oracle.oc4j.security.OC4JSecurity.doPrivileged(OC4JSecurity.java%3A284)%0A%09at+com.evermind.server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java%3A198)%0A%09at+com.evermind.server.http.EvermindPageContext.forward(EvermindPageContext.java%3A395)%0A%09at+_OA._jspService(_OA.java%3A221)%0A%09at+com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java%3A59)%0A%09at+oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java%3A379)%0A%09at+oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java%3A594)%0A%09at+oracle.jsp.runtimev2.JspServlet.service(JspServlet.java%3A518)%0A%09at+javax.servlet.http.HttpServlet.service(HttpServlet.java%3A856)%0A%09at+com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java%3A64)%0A%09at+oracle.apps.jtf.base.session.ReleaseResFilter.doFilter(ReleaseResFilter.java%3A26)%0A%09at+com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java%3A15)%0A%09at+oracle.apps.fnd.security.AppsServletFilter.doFilter(AppsServletFilter.java%3A318)%0A%09at+com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java%3A621)%0A%09at+com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java%3A370)%0A%09at+com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java%3A871)%0A%09at+com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java%3A453)%0A%09at+com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java%3A313)%0A%09at+com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java%3A199)%0A%09at+oracle.oc4j.network.ServerSocketReadHandler%24SafeRunnable.run(ServerSocketReadHandler.java%3A260)%0A%09at+oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler.java%3A234)%0A%09at+oracle.oc4j.network.ServerSocketAcceptHandler.access%24700(ServerSocketAcceptHandler.java%3A29)%0A%09at+oracle.oc4j.network.ServerSocketAcceptHandler%24AcceptHandlerHorse.run(ServerSocketAcceptHandler.java%3A879)%0A%09at+com.evermind.util.ReleasableResourcePooledExecutor%24MyWorker.run(ReleasableResourcePooledExecutor.java%3A303)%0A%09at+java.lang.Thread.run(Thread.java%3A619)%0A%23%23+Detail+0+%23%23%0Ajava.lang.NullPointerException%0Ajava.lang.NullPointerException%0A">
    </head>
    <body>
    <table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin-left:5px;margin-right:5px">
    <tr>
    <td> <h1 class="errorHeader"> Error Page </h1> </td>
    </tr>
    <tr valign="top">
    <td class="errorText" >You have encountered an unexpected error. Please contact the System Administrator for assistance. </td>
    </tr>
    <tr>
    <td style="padding-bottom:15px" class="errorText"> Click <span class="pageLink">here</span> for exception details. </td>
    </tr>
    <tr>
    <td style="padding-bottom:25px" class="errorText">
    <span class="pageLink"> About Previous Page</span>
    </td>
    </tr>
    </table>
    <table cellpadding="0" cellspacing="0" border="0" width="100%"
    style="background-image:url(/OA_HTML/cabo/images/swan/footerBg.gif);">
    <tr>
    <td nowrap align="center">
    <table cellpadding="0" cellspacing="0" border="0" align="center">
    <tr>
    <td>Logout</td>
    </tr>
    </table>
    </td>
    </tr>
    <tr>
    <td>
    <table cellpadding="2" cellspacing="2" border="0" width="100%">
    <tr>
    <td align="right" nowrap width="100%" class="copyright">
    Copyright (c) 2006, Oracle. All rights reserved.
    </td>
    </tr>
    </table>
    </td>
    </tr>
    </table>
    <script>document.body.style.marginLeft="0px";document.body.style.marginRight="0px";document.body.style.marginTop="0px";</script>
    </body>
    </html>
    End of Reply
    LMS Error: 303 - Communication exception
    Error diagnostic: No error code entry found in LMS response. Please report this error to the OLM administrator.
    Error stack trace:
    oracle.apps.ota.lms.LMSException: No error code entry found in LMS response. Please report this error to the OLM administrator.
         at oracle.apps.ota.lms.LMSHelper.sendRequest(LMSHelper.java:176)
         at oracle.apps.ota.lms.LMSApplet.sendRequest(LMSApplet.java:1123)
         at oracle.apps.ota.lms.LMSApplet.getAttemptState(LMSApplet.java:703)
         at oracle.apps.ota.lms.LMSApplet.checkNotFinished(LMSApplet.java:663)
         at oracle.apps.ota.lms.LMSApplet.LMSInitialize(LMSApplet.java:145)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at sun.plugin.javascript.JSInvoke.invoke(Unknown Source)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
         at sun.plugin2.liveconnect.JavaClass$MethodInfo.invoke(Unknown Source)
         at sun.plugin2.liveconnect.JavaClass$MemberBundle.invoke(Unknown Source)
         at sun.plugin2.liveconnect.JavaClass.invoke0(Unknown Source)
         at sun.plugin2.liveconnect.JavaClass.invoke(Unknown Source)
         at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$DefaultInvocationDelegate.invoke(Unknown Source)
         at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$3.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo.doObjectOp(Unknown Source)
         at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    Returned: "false"
    *** LMSGetValue("cmi.suspend_data") [Mon May 07 21:20:07 CST 2012]
    Request:
    action=GetAttemptState
    End of Request
    network: 正在使用代理 DIRECT 连接 http://ccbm.ccdi.com.cn:8000/OA_HTML/OA.jsp?page=/oracle/apps/ota/player/webui/PlayerLmsApiRN&addBreadCrumb=S&OALAF=oaText&transactionid=1115922800&oapc=10&oas=EEl3umyBxrExVTQzZlOgYA..
    network: 正在连接 http://ccbm.ccdi.com.cn:8000/OA_HTML/OA.jsp?page=/oracle/apps/ota/player/webui/PlayerLmsApiRN&addBreadCrumb=S&OALAF=oaText&transactionid=1115922800&oapc=10&oas=EEl3umyBxrExVTQzZlOgYA.. 与 cookie "JSESSIONID=d07a1a1eff8b7b8f55819d968b088aaad7bc6d10d1b6cdb42aa30ded6ff06593.e34QbNeKaNaLa40Lb3uSch8Nc3eTe0; OHS-ccbm.ccdi.com.cn-8000=9958CFFC31BF168F54D61B5ACA993EDE7CEFC7CD73D0DA22A030B286DA5723ACFD5F4C115BA4B2894AC0E0F8B1EC2C2D7E98ACE955B4055A909B01FF46650E6689C635C9D30725EC084D3174350C03671792517D86AF35D400E729E9E69A721B53F8E00B4709484D57742CC134884B50FC93A18F38758F5C80728493F070FE0EC9A70EDC3C1EC74224CB5932C0AD9816E4354F22DF2502457736EBAC65D9939129359C5E9885564E5A37284903B71BEFD957FAACF9F28451AF8BB04F84FDC6CA573920EB0D6732F6EF5F4D287D074A98034BAF931D8DAAB03299D9B76EBD0E6EA555592546D2BFB562E61C307237A15539FA495A95BDAD1C97980A34ABFA81D3E9A3FDA4C18C4485B2A188657AF455E44E26CDB8944BD3EA27ED697AE758956C850EF5CFE6612DB5; oracle.uix=0^^GMT+8:00^p; PROD=sU22zEeJKQdI2MqRQ3XKkj9K:S"
    network: 服务器 http://ccbm.ccdi.com.cn:8000/OA_HTML/OA.jsp?page=/oracle/apps/ota/player/webui/PlayerLmsApiRN&addBreadCrumb=S&OALAF=oaText&transactionid=1115922800&oapc=10&oas=EEl3umyBxrExVTQzZlOgYA.. 请求用 "JSESSIONID=d07a1a1eff8b7b8f55819d968b088aaad7bc6d10d1b6cdb42aa30ded6ff06593.e34QbNeKaNaLa40Lb3uSch8Nc3eTe0; path=/OA_HTML" 执行 set-cookie
    Reply:
    <html lang="en-US">
    <head>
    <script>
    function ignoreWarnAboutChanges(url)
    document.location.href = url;
    </script>
    <style type="text/css">
    .globalHeader {
    background: url(/OA_HTML/cabo/images/swan/headerBg.jpg);
    background-repeat:repeat-x;background-color:#1963a9
    .globalLink {white-space:nowrap;font-size:9pt;font-family:Arial;color:#ffffff;text-decoration:none}
    .pageLink A:link {color:#2b7c92}
    .copyright {white-space:nowrap;font-family:Arial;font-size:7.5pt;color:#ffffff;text-decoration:none}
    .errorHeader {
    color:#ed1c24;
    font-family:Arial;
    font-weight:bold;
    font-size:9pt;
    vertical-align:middle;
    border-bottom-width:1px;
    border-bottom-style:solid;
    border-bottom-color:#3a5a87;
    margin-bottom:0px;
    .errorText {
    font-family:Tahoma,Arial,Helvetica,Geneva,sans-serif;
    font-size:9pt;
    </style>
    <title>Error Page</title>
    <META name="fwk-error" content="Error occured while processing the request">
    <META name="fwk-error-detail" content="oracle.apps.fnd.framework.OAException%3A+java.lang.NullPointerException%0A%09at+oracle.apps.fnd.framework.OAException.wrapperException(OAException.java%3A912)%0A%09at+oracle.apps.fnd.framework.webui.OAPageErrorHandler.prepareException(OAPageErrorHandler.java%3A1169)%0A%09at+oracle.apps.fnd.framework.webui.OAPageBean.renderDocument(OAPageBean.java%3A3241)%0A%09at+oracle.apps.fnd.framework.webui.OAPageBean.renderDocument(OAPageBean.java%3A3036)%0A%09at+_OA._jspService(_OA.java%3A228)%0A%09at+com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java%3A59)%0A%09at+oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java%3A379)%0A%09at+oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java%3A594)%0A%09at+oracle.jsp.runtimev2.JspServlet.service(JspServlet.java%3A518)%0A%09at+javax.servlet.http.HttpServlet.service(HttpServlet.java%3A856)%0A%09at+com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java%3A713)%0A%09at+com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java%3A370)%0A%09at+com.evermind.server.http.ServletRequestDispatcher.unprivileged_forward(ServletRequestDispatcher.java%3A259)%0A%09at+com.evermind.server.http.ServletRequestDispatcher.access%24100(ServletRequestDispatcher.java%3A51)%0A%09at+com.evermind.server.http.ServletRequestDispatcher%242.oc4jRun(ServletRequestDispatcher.java%3A193)%0A%09at+oracle.oc4j.security.OC4JSecurity.doPrivileged(OC4JSecurity.java%3A284)%0A%09at+com.evermind.server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java%3A198)%0A%09at+com.evermind.server.http.EvermindPageContext.forward(EvermindPageContext.java%3A395)%0A%09at+_OA._jspService(_OA.java%3A221)%0A%09at+com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java%3A59)%0A%09at+oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java%3A379)%0A%09at+oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java%3A594)%0A%09at+oracle.jsp.runtimev2.JspServlet.service(JspServlet.java%3A518)%0A%09at+javax.servlet.http.HttpServlet.service(HttpServlet.java%3A856)%0A%09at+com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java%3A64)%0A%09at+oracle.apps.jtf.base.session.ReleaseResFilter.doFilter(ReleaseResFilter.java%3A26)%0A%09at+com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java%3A15)%0A%09at+oracle.apps.fnd.security.AppsServletFilter.doFilter(AppsServletFilter.java%3A318)%0A%09at+com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java%3A621)%0A%09at+com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java%3A370)%0A%09at+com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java%3A871)%0A%09at+com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java%3A453)%0A%09at+com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java%3A313)%0A%09at+com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java%3A199)%0A%09at+oracle.oc4j.network.ServerSocketReadHandler%24SafeRunnable.run(ServerSocketReadHandler.java%3A260)%0A%09at+com.evermind.util.ReleasableResourcePooledExecutor%24MyWorker.run(ReleasableResourcePooledExecutor.java%3A303)%0A%09at+java.lang.Thread.run(Thread.java%3A619)%0A%23%23+Detail+0+%23%23%0Ajava.lang.NullPointerException%0Ajava.lang.NullPointerException%0A">
    </head>
    <body>
    <table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin-left:5px;margin-right:5px">
    <tr>
    <td> <h1 class="errorHeader"> Error Page </h1> </td>
    </tr>
    <tr valign="top">
    <td class="errorText" >You have encountered an unexpected error. Please contact the System Administrator for assistance. </td>
    </tr>
    <tr>
    <td style="padding-bottom:15px" class="errorText"> Click <span class="pageLink">here</span> for exception details. </td>
    </tr>
    <tr>
    <td style="padding-bottom:25px" class="errorText">
    <span class="pageLink"> About Previous Page</span>
    </td>
    </tr>
    </table>
    <table cellpadding="0" cellspacing="0" border="0" width="100%"
    style="background-image:url(/OA_HTML/cabo/images/swan/footerBg.gif);">
    <tr>
    <td nowrap align="center">
    <table cellpadding="0" cellspacing="0" border="0" align="center">
    <tr>
    <td>Logout</td>
    </tr>
    </table>
    </td>
    </tr>
    <tr>
    <td>
    <table cellpadding="2" cellspacing="2" border="0" width="100%">
    <tr>
    <td align="right" nowrap width="100%" class="copyright">
    Copyright (c) 2006, Oracle. All rights reserved.
    </td>
    </tr>
    </table>
    </td>
    </tr>
    </table>
    <script>document.body.style.marginLeft="0px";document.body.style.marginRight="0px";document.body.style.marginTop="0px";</script>
    </body>
    </html>
    End of Reply
    LMS Error: 303 - Communication exception
    Error diagnostic: No error code entry found in LMS response. Please report this error to the OLM administrator.
    Error stack trace:
    oracle.apps.ota.lms.LMSException: No error code entry found in LMS response. Please report this error to the OLM administrator.
         at oracle.apps.ota.lms.LMSHelper.sendRequest(LMSHelper.java:176)
         at oracle.apps.ota.lms.LMSApplet.sendRequest(LMSApplet.java:1123)
         at oracle.apps.ota.lms.LMSApplet.getAttemptState(LMSApplet.java:703)
         at oracle.apps.ota.lms.LMSApplet.checkInitialized(LMSApplet.java:639)
         at oracle.apps.ota.lms.LMSApplet.checkOpen(LMSApplet.java:675)
         at oracle.apps.ota.lms.LMSApplet.LMSGetValue(LMSApplet.java:190)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at sun.plugin.javascript.JSInvoke.invoke(Unknown Source)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
         at sun.plugin2.liveconnect.JavaClass$MethodInfo.invoke(Unknown Source)
         at sun.plugin2.liveconnect.JavaClass$MemberBundle.invoke(Unknown Source)
         at sun.plugin2.liveconnect.JavaClass.invoke0(Unknown Source)
         at sun.plugin2.liveconnect.JavaClass.invoke(Unknown Source)
         at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$DefaultInvocationDelegate.invoke(Unknown Source)
         at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$3.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo.doObjectOp(Unknown Source)
         at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    Returned: ""
    please help me analyse the causes ?? thanks

  • SCORM 1.2 and Saba - Reporting a 0 Score for Track Slide views

    Good morning,
    We have just transitioned over to our new LMS, Saba.  To say the transition has been rocky would be an understatement.   So, here is what I am dealing with:
    I have a very basic reader course where I want to grant someone credit once they have viewed all slides.  I am using SCORM 1.2 and setting either "User Access Only" or "Slide Views Only."  If I use slide views, I set it to 1, it sends a 0 score to the LMS, even if the user views all slides.  I have been able to create a fix by assigning a point value to a click box or button at the screen where I want the user to get credit.  However, this does not seem to be what was intended.
    Below are screen shots of my publishing commands, Saba screens, and communication report between Saba and CP.
    Content Communication Log with Saba
    Content Communication Log
    July 14, 2011 5:34:43 AM PDT
    Command Received = LMSInitialize
    Content Item: Super_Instructor_Role
    July 14, 2011 5:34:43 AM PDT Response data (Data sent by Saba LMS to content) =
    cmi.core.student_id = EEFIELDS1
    cmi.core.student_name = Fields, Eric
    cmi.core.credit = credit
    cmi.core.entry = ab-initio
    cmi.core.lesson_mode = normal
    cmi.launch_data =
    cmi.suspend_data =
    cmi.core.lesson_location =
    cmi.core.lesson_status = not attempted
    cmi.core.score.raw =
    cmi.core.score.min =
    cmi.core.score.max =
    cmi.core.total_time = 00:00:00
    cmi.comments =
    cmi.comments_from_lms =
    cmi.student_data.mastery_score =
    cmi.student_data.max_time_allowed =
    cmi.student_data.time_limit_action = exit,message
    cmi.student_preference.audio = 0
    cmi.student_preference.text =
    cmi.student_preference.language = 0
    cmi.student_preference.speed = 0
    July 14, 2011 5:34:45 AM PDT
    Command Received = LMSCommit
    Data sent by content to Saba LMS:
    cmi.core.lesson_status = completed
    cmi.core.lesson_location = 0
    cmi.core.exit =
    cmi.core.score.raw = 0
    cmi.core.score.max = 0
    cmi.core.score.min = 0
    cmi.core.session_time = 00:00:01
    cmi.suspend_data = A1Enone%24nP000AA000AA
    cmi.student_preference.audio = 0
    cmi.student_preference.language = 0
    cmi.student_preference.speed = 0
    cmi.student_preference.text = 0
    cmi.comments =
    July 14, 2011 5:34:45 AM PDT Response data =
    error=0
    July 14, 2011 5:34:59 AM PDT
    Command Received = LMSFinish
    Data sent by content to Saba LMS at the time of exit:
    July 14, 2011 5:34:59 AM PDT Response data =
    error=0
    Any help would be greatly appreciated.
    Thanks,
    Eric Fields
    Sr. eLearning Consultant
    Coventry Health Care

    I would suggest you try using Percent instead of Score, and set the Slide View completion percentage to 100 instead of 1.
    Change Reporting Level to Score instead of Interactions and Score.
    You haven't shown the screen for Quiz > Pass or Fail settings, but you need to set the passing percentage there to 100% as well if you intend that the learner must view every single slide.
    Bear in mind that when using slide views, if you have any navigation buttons on the slides that are set to jump to the next slide when clicked, then the learner does not get a completion mark for those slides.  In Captivate you have to watch a slide all the way to the last frame in order to get it marked as completed.  If for some reason you need to get slides marked as completed despite not being viewed (e.g. when using branching) then you can use our TickTOC widget to gain credit for those slides that are missed or not watched to the end.
    http://www.infosemantics.com.au/ticktoc
    If you suspect that not all slides will be viewed, you can adjust the Pass/Fail percentage to something less than 100% to allow for the missed ones.
    Try these changes and see if it works.
    Once you DO find the settings that allow Captivate to work with SABA I would be very interested to know what they were.  I've got a page on my website where I want to show the Captivate config settings for SABA: http://www.infosemantics.com.au/lms_guide/saba  I don't have access to this LMS myself, but perhaps you or other SABA users on this forum can contribute information to make it easier for others to work with it.

  • LMS Or Widget Tracking Variables and Advanced Interactions

    Looking to see if Captivate 5 will send variables to store in the LMS when a user leaves the training and comes back. If it does then I can go to my LMS company to see if it supports the data. I'm assuming when you check "Interaction And Score" it sends variables?
    If this is not possible is there a widget that will store the variables on the users pc?

    What setting must be enabled to make the variables stored over different sessions?
    I put a test piece into SCORM Cloud to do a trace and it came back with the below information. However, on resume it does not store the new changed variable. Here is my settings
    Here is the SCORM trace:
    cmi.success_status: Passed
    cmi.suspend_data: A1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP1Enone%24nP0 00BB001DDA%7E%24mS*siJOv100BCB0D0%3B1DnilDnilDnilBAB0BBB1EB%7E%24mS*BzKOv110BCB1DnilDnilDn ilDnilBAB1BBB0FC%7E%24mS*TwLOv110BCB0D0%3B1DnilDnilDnilBAB1BBB0CB0BAB0BA

Maybe you are looking for