SharePoint Learning Kit 1.8–New placeholders for returned emails

January 29th, 2015 Richard No comments

In SLK 1.8 I’ve added three new placeholders for emails when an assignment is returned to a learner. These are:

%comments%      The instructors comments.

%grade%             The textual grade if used.

%points%             The graded points

To use these you’ll need to add your custom message to the SlkSettings.xml file.

Categories: SLK Tags: , ,

SharePoint Learning Kit Macros for Assignment List Web Part

January 29th, 2015 Richard No comments

The queries in the Assignment List Web Part support macros in the conditions, e.g. here is the Due This Week Instructor query


<Query Name="DueThisWeekInstructor" Title="$Resources:SlkDll,QueryTitleDueThisWeek" ViewName="AssignmentListForInstructors" CountViewColumnName="AssignmentId">
  <Column Title="$Resources:SlkDll,QueryColumnTitleSite" RenderAs="SPWebName" ViewColumnName="AssignmentSPWebGuid" ViewColumnName2="AssignmentSPSiteGuid" />
  <Column Title="$Resources:SlkDll,QueryColumnTitleAssignment" RenderAs="Link" ViewColumnName="AssignmentTitle" ViewColumnName2="AssignmentId" NullDisplayString="$Resources:SlkDll,QueryColumnNullDisplayUntitled" />
  <Column Title="$Resources:SlkDll,QueryColumnTitleDue" RenderAs="UtcAsLocalDateTime" ViewColumnName="AssignmentDueDate" CellFormat="d" NullDisplayString="$Resources:SlkDll,QueryColumnNullDisplayDash" ToolTipFormat="$Resources:SlkDll,QueryColumnToolTipDue" Wrap="false" />
  <Column Title="$Resources:SlkDll,QueryColumnTitleSubmitted" RenderAs="Submitted" ViewColumnName="CountCompletedOrFinal" ViewColumnName2="CountTotal" Wrap="false" />
  <Condition ViewColumnName="AssignmentSPWebGuid" Operator="Equal" MacroName="SPWebScope" NoConditionOnNull="true" />
  <Condition ViewColumnName="AssignmentDueDate" Operator="IsNotNull" />
  <Condition ViewColumnName="AssignmentDueDate" Operator="GreaterThanEqual" MacroName="StartOfThisWeek"/>
  <Condition ViewColumnName="AssignmentDueDate" Operator="LessThan" MacroName="StartOfNextWeek"/>
  <Sort ViewColumnName="AssignmentDueDate" Ascending="true"/>
  <Sort ViewColumnName="AssignmentTitle" Ascending="true"/>

The list of macros is:

Name Type Description
SPWebScope Array of site IDs. The ID of the sites that the ALWP is limited to depending on its properties: Will be the current site, null (for all) or an array of IDs.
CurrentUserKey Guid string The key of the current user in the SlkUser table. Not generally needed as the views are normally limited to current user.
Now DateTime The current date and time
StartOfToday DateTime Midnight of today
StartOfTomorrow DateTime Midnight of tomorrow
StartOfThisWeek DateTime Midnight of the start of the week as defined by the current user’s culture.
StartOfNextWeek DateTime Similar to StartOfThisWeek, but the subsequent week.
StartOfWeekAfterNext DateTime Similar to StartOfNextWeek, but the subsequent week.


As of version 1.8, you can now add a day modifier to the DateTime macros, to give you more flexibility over the date ranges. The format is:


Where macroName is the name of the macro above, and dayModifier is an integer value of days to add to the normal value. This can be negative to take away days. So if you wanted a query for assignemnts due tomorrow, you could have

<Condition ViewColumnName="AssignmentDueDate" Operator="GreaterThanEqual" MacroName="StartOfToday:1"/>
  <Condition ViewColumnName="AssignmentDueDate" Operator="LessThan" MacroName="StartOfToday:2"/>

Categories: SLK Tags: ,

Filters and Summary for Behaviour Web Parts

January 27th, 2015 Richard No comments

I’ve just added support for filters and a summary for the behaviour web parts: My Achievements and My Behaviour.

Before now you could filter on dates, but not on any other value of the behaviours. Now you can filter on any column. For example you could just display events where a particular action was taken.

The Filters property is a comma separated list of filters. Where a filter is in the format:


The columnName is the name of the column. This will be the same as the display name with any spaces removed. The regEx is a regular expression, which is evaluated in a case-insensitive manner. So for some examples:

Action:^Follow      Only displays behaviour events where the action starts with Follow.

Action:^Follow,ActivityType:^Other      As previous, but the activity type must also start with missing.

So given this set of behaviour events (from the Green Abbey test database):


Given the second filter above it will display as:


The summary option will display a line of text underneath the table. The text is put into the Summary property and {0} will be replaced by the total points and {1} will be replaced by the number of items. The summary will be wrapped in a p tag with a class of sor-behaviourSummary.

So given the summary

{0} points from {1} events.

The web part filtered as above will give:


Salamander Active Directory can now bulk provision OneDrives

January 7th, 2015 Richard No comments

We have now added the ability to bulk provision OneDrives to Salamander Active Directory.


Office 365 doesn’t automatically provision a user’s OneDrive when they are created, instead they are created on the fly when a user first tries to access it. Salamander Active Directory can now provision them in advance so they are ready and waiting for your users.

Not only does this mean your users can use OneDrive immediately without waiting for the site to be created, it is also particularly useful for applications where require OneDrive to already exist before use such as the iPad app. If migrating from another type of repository, it will also allow you to migrate content into OneDrives without waiting for users to access them.

Updated Sims Photo Export Utility–Filter Staff by Surname

December 15th, 2014 Richard No comments

I’ve just added the ability to filter staff by surname in our free PhotoExport utility for Sims.

The reason was because a user was getting an out of memory exception loading all the staff photos at once. The Sims API we are using loads all the photos into memory before we can save them, so if they are large then it can take a huge amount of memory.

Now, with the surname filter, you can export them by initial letter of the surname, which will hopefully keep the memory usage low enough to complete. If there are any particularly large photos, you can even filter by more than one letter, but I would start with one and then refine if you hit any further problems.

Usage PhotoExport username password outputFolder [/staff] [/year:x] [/nameAsId] [/format:xxx] [/names:filename] [/thumbnail] [/filter:xxx]


/filter:surname An optional parameter which if present will filter staff based on their surname. You can either type the start of the surname or a T-SQL filter
e.g. /filter:j will only export photos for staff whose surname begins with j
e.g. /filter:j%s will only export photos for staff whose surname begins with j and also has an s in it. Note in this case. the s can be anywhere after the j and not necessarily at the end of the name.

Categories: Free Utility, Sims Tags: ,

Send Reminder Emails with SLK 1.6 and above

November 23rd, 2014 Richard No comments

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.

Categories: SLK Tags: , , ,

SharePoint Connect 2014 and SharePoint Saturday UK

November 17th, 2014 Richard No comments

This month I’m going to be at a couple of conferences: SharePoint Connect 2014 and SharePoint Saturday UK. If anyone else is going I’d love to meet up and discuss SharePoint, SharePoint Learning Kit and anything else we do.

The SharePoint Connect conference is in Amsterdam on 18-20 November. Due to flights I’ll be here all week.

SharePoint Saturday is a community run conference as is on the 29 November at Hinckley Island Hotel near Leicester and is free so there’s no excuse for not going!

Categories: SLK, SharePoint Tags: ,

SLK 1.7.1 Released

November 10th, 2014 Richard No comments

A bug fix release for SLK 1.7. The zip file contains versions for SharePoint 2007, 2010 and 2013.

Changes include:

  • Handle @ in a user name for drop boxes
  • Handle css for SCORM packages in SharePoint 2013
  • Fix for SharePoint 2007 solution package containing incorrect element files
  • Added and fixed some mime-types in slksettings.xml
  • Allow frameset to run in non-compatibility view in Internet Explorer
  • Prevent script injection in ALWP frameset

This is a recommended upgrade, especially if using SCORM packages in SharePoint 2013.

You can download from

This is intended to be the last release for 1.7. All future functionality will go into SLK 1.8. I already have customers running on that, so it’s just a case of deciding when to call it a day adding features to it.

Categories: SLK Tags: ,

SLK 1.8 – Option to automatically check email learners box when creating new assignments

November 6th, 2014 Richard No comments

In SLK when creating an assignment there is an option to send emails to users about assignments. The option is a check box on the assignment properties page labelled “Email learners on creation or when changed”.


Following on from my last change about turning off emails to instructors on submitting, I’ve now added an option to automatically check the box for new assignments.

To turn on the setting, you need to add DefaultEmailingOn="true" to the Email setting in SlkSettings.xml as in:


By default this is set to false, so the current behaviour will continue, i.e. the checkbox will not be selected.

This is now available in the latest release of SLK 1.8 – which is considered to be Beta currently.

Categories: SLK Tags: ,

SLK 1.8–Option to turn off emails to Instructor when Learners submit

October 10th, 2014 Richard 2 comments

In SLK when creating an assignment there is an option to send emails to users about assignments. The option is a check box on the assignment properties page labelled “Email learners on creation or when changed”.



If the check box is selected then emails are sent:

  1. To learners when an assignment is created.
  2. To learners if they have been added to an assignment.
  3. To learners if they have been removed from an assignment.
  4. To learners if an assignment is deleted.
  5. To learners when as assignment is collected, reactivated or returned.
  6. To instructors when a learner submits an assignment.

This allows everyone to be kept informed about work they have been set, without having to go to a page in SharePoint with the Assignment List Web Part (ALWP) on.

Although the text only states learners, it does also email instructors about submissions. However, this means instructors can receive lots of emails telling them that learners have submitted an assignment. They are the people who are most likely to go and look at the ALWP to track the progress of their assignments. Ideally there should be a way to turn off emails to instructors.

I now added an option for this. Rather than add another option on the properties page, I’ve added a global settings when will turn off all emails on submission. I decided on a global setting to avoid cluttering up the properties page and to avoid adding any user training about a new user available option. It also likely that the majority of environments will want it on or off for everybody.

To turn on the setting, you need to add EmailOnSubmitOff="true" to the Email setting in SlkSettings.xml as in:


By default this is set to false, so the current behaviour will continue, i.e. if Email learners is checked in the assignment properties, then submissions will be emailed to the instructor.

This is now available in the latest release of SLK 1.8 – which is considered to be Beta currently.

Categories: SLK Tags: ,