Using Grades in SharePoint Learning Kit

The SharePoint Learning Kit (SLK) has had support for marking with grades since version 1.6, but I’ve never got round to documenting it. It’s an optional feature and by default is turned off so you won’t have seen it unless someone has turned it on for you. It’s a nice simple implementation. When turned on, just adds a text field to the grading page which allows you to enter any text you want for the grade. There’s a maximum length of 20 characters which should be more that enough for a grade.

Turning on

To turn on you need to update the SlkSettings.xml file in central administration. All you need to do is add the attribute UseGrades=”true” to the root Settings element.



Once UseGrades is turned on then instructors will see an extra grades column on the grading page. This is a free text field of length 20 so they can put in whatever they want up to 20 characters.


Once the assignment is returned to the learner then they will see the grade value on the lobby page for the assignment.


And that’s basically it, nice and simple, but allows you to add a grade without having to add it in the comments.

Removing the Points Column

On a related note you can also configure SLK to not show the points column for assignments. Typically this would be used in conjunction with grades, but can be used on it’s own if you only want to use comments.

To do this set HidePointsForNonELearning=”true” on the Settings element in SlkSettings.xml similarly to UseGrades above. Once this is done then the Points column will be hidden on the grading page for instructors and the Points row will be hidden for learners on the lobby page.

SalamanderSoft’s GradeBook

Our GradeBook web part also supports grades when they are turned on in SLK.

Read More

Send Reminder Emails with SLK 1.6 and above

SLK has the built in ability to send reminder emails to learners for assignments, but, there is no built in a way to run this. However, there is a sample project in SLK\Samples\ReminderEmails which will run the functionality. The usage of this is

ReminderEmails.exe <site collection url>

This will then send reminder emails for a site collection using the email settings in slksettings.xml. This is implemented as a console project so needs to run on one of your SharePoint servers and you’ll need to schedule it using Task Scheduler or similar.

I have compiled this for SharePoint 2007, 2010 and 2013 at

The default emails settings of SlkSettings are:

  <EmailSettings ReminderDays="1,7" EmailOnSubmitOff="true">
      <NewAssignment Subject="New Assignment: %title%">
          <slk:Body xmlns=""><p>You have been assigned a new piece of work: <strong>%title%</strong>.</p>
<p><a href=’%url%’>%url%</a></p></slk:Body>
      <CancelAssignment Subject="Assignment Cancelled: %title%">
          <slk:Body xmlns=""><p>Assignment <strong>%title%</strong> has been cancelled.</p></slk:Body>

The ReminderDays attribute controls when the reminders are sent. They are sent those number of days before the assignment is due. So if you wanted an email on every day for the 3 days preceding the assignment it would be ReminderDays="1,2,3".

You can also have a AssignmentReminder section to set the subject and body of the email as in NewAssignment and CancelAssignment above. Otherwise the default email settings will be used which are

    Assignment Reminder : %title%
  <p>Assignment <strong>%title%</strong> is due on %due%.</p>
<p><a href=’%url%’>%url%</a></p>

For anyone interested the code in the console application is very simple, it literally just calls the ReminderEmails object within the SLK project.

        public static void Main(string[] arguments)
            if (arguments == null || arguments.Length == 0 || string.IsNullOrEmpty(arguments[0]))
                Console.WriteLine("You must pass a url of a site collection.");
                    ReminderEmails reminder = new ReminderEmails();
                catch (Exception e)

It would be pretty easy to convert this to a SharePoint timer job.

Read More

SharePoint Learning Kit 1.6 Beta Released


I’ve just released SLK 1.6 to Beta on the CodePlex site. This has actually been ready to go for a while, several months in fact, but I haven’t managed to find the time for documentation of the new functionality. I’ve now taken the decision to release it without the documentation so that people can at least start using it and feeding back any problems.

The main changes are:

  • Better handling of not quite fully compliant SCORM content
  • Textual grading as well as numeric (optional) e.g. ABC type grades
  • Quick assignment type. That is assignments not based on a document. This should make it much easier to use for a homework diary, especially if the assignment is along the lines of "Read chapters 1 & 2 of book y."
  • Email alerts. The most requested extra functionality.

Read More

Relaxation of SCORM Criteria in SharePoint Learning Kit 1.6

I’ve just completed a couple of changes to SLK which although reported as bugs, were actually just rigidly enforcing the SCORM standard.

The first one was that you couldn’t have a question where the question text is greater than 250 characters long. The question text gets stored in cmi.interactions.n.description so that when reviewing the results the context of the answer can be seen. However in the SCORM standard this value is limited to 250 characters. I must admit that the error message, while quite descriptive if you know the SCORM standard, wasn’t very user friendly.

The second one was that you couldn’t submit quizzes with a large number of questions. The reason here is that the questions and answers get stored in the cmi.suspend_data which in SCORM 2004 2nd Edition is limited to 4000 characters. This was actually masked by a bug where if the length of the data was greater than this, the error was ignored and the same page just displayed again.

Strictly speaking both of these problems are actually errors in the SCORM packages themselves as they are passing values which do not conform to the standards. There’s even threads in the Articulate forums about it.

Normally, I’d be dead set against violating standards, however in these particular cases they are getting in the way of usability. So in these 2 specific cases I decided to relax the requirements and allow more data to be stored. Later versions of the SCORM standard do this for suspend_data anyway.

So in SLK 1.6, these restrictions have been relaxed.

Read More