Support for VS School MIS Integration

March 2nd, 2015 Richard No comments


I am pleased to announce that we’ve just added support for VS School MIS to our products.

VS School MIS is a recent entry to the UK MIS market after making great gains in their home Irish market where they now have over 300 schools using their MIS.

We can now integrate VS School MIS with Active Directory, Exchange, SharePoint, Office 365 and Google Apps, ensuring that your users, groups and timetables are always up to date. For more details please email

Categories: Partner Tags: ,

SLK: Open Office Documents in the Office Apps on iPads

February 27th, 2015 Richard No comments

In SharePoint Learning Kit 1.8, I’ve just added beta functionality so that on an iPad, assignments which are office documents are opened in the Office Apps for the iPad. This is transparent to the user, it should just happen.

To enable this, you will need to add a setting to the DropBoxSettings in SlkSettings.xml. You need to set  OpenOfficeInIpadApp to true:


Of course you’ll also need the latest version of 1.8 and the Office Apps installed on any iPad used.

It’s early days for this functionality, but it should work for Word, Excel, PowerPoint and OneNote. Once you’ve finished editing, you will be taken back to the page you were at before, but in a new tab.

Any feedback welcomed.

Categories: SLK Tags: , ,

Using Grades in SharePoint Learning Kit

February 26th, 2015 Richard No comments

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.

Categories: SLK Tags: ,

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: ,