Presenting at the Southampton SharePoint User Group (11th March)

Recently I was able to present for the first ever time at a UK SharePoint User Group, more specifically I was able to present as part of the line-up for the Southampton User Group.

And I have to admit that it was a lot of fun. Having being a long term TechNet junkie, the idea of getting in front of anyone, least of all a room of informed and knowledgeable peers was somewhat intimidating. But thanks Ian Woodgate (@ianwoodgate) of PointBeyond, who also doubles up as the gang leader for the SharePoint User Group South, I was able to give it a go.

My topic of choice was CodePlex and some of the wonders that it contains. I firmly believe in the value of community and as collaboration professionals that trade in a collaborative platform / currency, it stands to reason that there’s a lot we can learn from CodePlex. This is both from a soft skills, networking and technological perspective. For instance, I’ve met a few talented and gifted individuals looking at the projects that I have.

Talking about this, plus how some of the general Open Source vs Commercial lines of thinking can apply to SharePoint add-ons was also a part of my presentation. I probably could have explored a lot more in-depth than I discussed at Southampton last night but hopefully some thoughts were triggered.

And one question from Ian Chivers already has me thinking about Open Source communities. I’d not given much thought to that community but it definitely worth considering.

Overall, I believe that both the CodePlex / Open Source work plus my own presentation style and ability can only improve from here onwards.

So, with that being said, here’s a link to the presentation itself. I’ll gloss out my presentation notes into something more presentable and will get these upload soon.


How to update Parent Folders Timestamps when Child contents have been modified

Something that SharePoint professionals occasionally get asked is whether it is possible to update a parent folder when child documents within it have been altered. Whilst my first response is to encourage the use of metadata and flatter file structures, it’s fair to assume that this isn’t always achievable. Some teams and personnel are comfortable with folders and don’t see a reason to change.

This blog post shows how you would achieve this using Documents Sets and SharePoint Designer. Document Sets are a bit more flexible than folders. As such this approach doesn’t lend itself well to existing folder structures: –

  1. Create a Site Column called DocSetName. Make it a Single line of text data type
  2. Create a LastModified column. Make it a Date/Time data type
  3. In the document library, where you want to make these changes, activate the management of content types via Document Library Settings à Advanced Settings à Content Types
  4. Click “Add from existing site content types” and add the Document Sets
  5. In the content type section, click on Document Set à Add from existing site or list columns and add DocSetName and LastModified
  6. Next (still within the Document Set Content Type Settings) click on Document Set Settings and scroll down to Shared Columns. Select DocSetName
  7. Next, within SharePoint Designer, create a new workflow at the document library level
  8. Set this workflow to automatically start when an item is created or changed. Using the Update List Item (update item in current list) action set the “LastModified” column to the current document item “Modified” column value. What this means is that any new document “Modified” column will be update the LastModified field of its parent Document Set.
  9. Back in your library, create a view that sorts by LastModified (descending) and you’ll see that the Document Set with the most recently edited item will be on top

The caveat

There is one trade off to getting this working and it’s this. Any new items created within a Document Set MUST have the name of the Document Set manually entered into the DocSetName column. If this isn’t done than the workflow will error out. The reasoning behind this is explained below.

What does the workflow do?

This idea is that each Document Set shares the DocSetName column value with any document contained within it. As set up in step 3 any document that gets created or get modified will trigger the workflow. The workflow effectively goes to find the item whose “Name” column value is equal to current document item “DocSetName” column value. Subsequently it will always find the parent Document Set item and update its “LastModified” column with the current document modified date.

This means that each document set “LastModified” value is always going to be equal to the modified time of one of the child documents within it. Without the DocSetName column on the document level being manually filled, the workflow cannot make the association and will return an error.

That about covers it but let me know if you have any questions, suggestions and so on.

My thoughts on taking part in ForumJam

This year was the first year that I’ve taken part in Chris Given‘s ForumJam. I’d not heard of it before and only came across it via my (criminally underused) Twitter feed. Looking at some of the names that were going to enter it, I didn’t think I was in with a chance of getting in the upper ranks

But throwing caution to the wind I decided to enter, I thought it might be fun.

At the end of the two month period of the ForumJam I found myself in third place behind Trevor Seward (@NaupliusTrevor) and Amit Vasu (@AmitVasu) in the standings. I was lucky to claim the position I did in the end as Dimitri Ayrapetov(@dayrapetov) pushed me all the way. Despite being a member of the community for a fair while, this was pretty much the biggest event that I’d entered.

Chris has already outlined some of the advantages from an organiser’s perspective and some of these ring true from a participant’s perspective too. Namely: –

  • Networking & Education: I have my areas of familiarity and experience with the product, as does everyone else. Watching the others at the top of the leader board tackle and answer questions that I was quite honestly clueless on is quite rewarding. I’ve got some new blogs. Feeds and fellow professionals to follow and discuss things with.
  • Sets a new benchmark for personal performance: Hitting up on Chris’ theme of inspiring people to get involved, my time participating set some all high benchmarks for my own performance. When I joined the forums and started collaborating and offering help, the points system hadn’t even been implemented! Looking at my current trajectory, I’ve set my two best months ever (in terms of answers and accumulated points).

I’m rather pleased with my performance in my first ever FoumJam and more so for the people I’ve met. As for the eventual prize, I’m hoping I can blow it on Infamous Second Son

Here’s to the next ForumJam!

Tutorial: Using JEFS to build a movie database application

This CodePlex Corner tutorial is going to be a little different than those for the previous CodePlex products. This article details how to use the JavaScript Editor for SharePoint (JEFS) to create a simple application / page that pulls down some movie information from the movies database Rotten Tomatoes. The technologies that we will be using are: –

  1. The Rotten Tomatoes API
  2. JQuery
  3. JavaScript
  4. JSRender
  5. HTML

The tutorial itself will go through several stages. These are: –

  1. Installing & activating JEFS
  2. Pulling code together with JEFS

Installing & activating JEFS

JEFS is installed as a sandbox solution to your SharePoint sites. As a sandbox solution, it can be deployed by your site collection administrator. JEFS Codeplex page provides a PowerShell Script that will install the solution for you. Both the WSP and the script can be accessed below:-

  1. Installing JEFS as a sandbox solution (Link to CodePlex Page)

Create the Web Part Page

In this part of the tutorial, you will be guided on setting up the native SharePoint elements needed for the solution. Additionally a key for using the Rotten Tomatoes API will also need to be set-up

  1. Create a blank web part page using the Header, Footer, 3 Columns template and save it within a library. Call it Top 10 movies
  2. Register for a Rotten Tomatoes API. Be mindful of the following
    1. URL for the application (this can later be edited)

Edit the Web page

  1. Open up the Top 10 Movies page that was created in the previous section if it is not already open
  2. Click on Site Actions à Edit Page. This will load the page in editing mode
  3. On the far right of this ribbon, click on the JavaScript Editor button
  4. This will reload the page with the JEFS Editor. The panel on the left hand side is the one that accepts JavaScript. The panel on the right hand side is where library references, HTML and CSS are placed
  5. In the panel in the left hand side, paste the following JavaScript code. You will need to replace the <<YourAPICodeHere> with your own API reference in the apikey variable. Part of what this code does is to perform a JQuery asynchronous AJAX HTTP call to the rotten tomatoes web service via the getMovies function


// rotten tomatoes variables

var apikey =

var baseUrl =;;


var moviesSearchUrl = baseUrl +
+ apikey;


// This code runs when the DOM is ready.





// This function gets the movies

function getMovies()


$.ajax({url: moviesSearchUrl,


success: searchCallback});



// callback for when we get back the results

function searchCallback(data)




  1. Next you are going to insert the HTML that will render the page. In the right hand panel there are several drop-down boxes
  2. In the one called view select the HTML view
  3. Paste in the following code. This code is doing several things. Firstly, the page header using the Rotten Tomatoes header is being linked directly from their own servers. A technology called JSRender is being used to build out the page structure (more information on this here). JsRender is a JavaScript library that allows you to define a boilerplate structure once and reuse it to generate HTML dynamically. The JavaScript snippet created earlier in the tutorial includes a searchCallback function that renders the content ofdata.movies object into the moveTemplate template and the movieContainer div.



				<p><h1>Top 10 Movies</h1></p>

				<p>Powered by <a








				<div class="movie">

				<div class="movieIntro">

				<div class="movieTitle"><a href="{{:links.alternate}}">{{:title}}</a></div>



				<div class="movieDetails">

				<p class="movieImage"><img src="{{:posters.detailed}}"/></p>

				<p class="movieSynopsis">{{:synopsis}}</p>

				<p class="moreInfo"><a href="{{:links.alternate}}">Read





  1. With both JavaScript and HTML in place it is now time to add the library references that this code relies upon to work
  2. Within JEFS, on the right hand side , change the View drop down to LIB
  3. This will load a window where any JavaScript references needed for solutions should be pasted. In this box paste the following code. These are online references to both JQuery and JSRender. Please note that JSRender JavaScript has no dependency on jQuery and the order of these library references can be changed if desired.





  1. With the JavaScript library references that are in place, all that is needed is to add the CSS that will style the page
  2. In JEFS on the right hand side change the view drop down to CSS
  3. Paste in the following code













    position: relative;




				'Segoe UI',
				Helvetica, sans-serif;







    position: absolute;





.movie {



    border-style: solid;







.movieIntro {




.movieImage {







.movieSynopsis {



				200px; margin-top:



.movieTitle {


    font-weight: bold;








    font-size: large;




.spacer {




  1. After the CSS has been pasted in, look at the Save & Close button on the top left corner of JEFS
  2. Clicking on this will close JEFS and should load up a page that looks comparable to the one below

The CodePlex Corner: JavaScript Editor for SharePoint (JEFS)

The link to the project is

This edition of the CodePlex Corner looks at a project called JavaScript Editor for SharePoint or JEFS for short. It has been coded and released by Tomek Stojecki and is available for SharePoint 2010 (all editions) as a sandboxed solution. The project provides some nifty features for WFE development, and anyone who’s ever been tasked with JQuery or CSS changes to their SharePoint installation will appreciate the utility that JEFS provides. It effectively does away with the necessity of having to use Content Editor Web Parts to hide and tweak code.

It’s fair to state that a large number of CodePlex projects are poorly documented, but JEFS is a project that bucks this trend. Tomek has provided a well written introduction, which explains both the components and the history of the project. He also provides an installation guide and a PowerShell script for easily installing it. This script will detect previous installs of the project and will ask if you want to back-up any content created in it prior to being upgraded.

Because JEFS has been packaged as a sandboxed solution there are several things to keep in mind. For those that aren’t aware, a sandboxed solution is one that doesn’t have full access to all of the server or system resources. Nor can they access content outside of the Site Collection that they are deployed to. The plus point of this restriction is that the solution doesn’t need to be installed by a systems administrator. As such, a clear benefit here is that the IT department need not be involved – JEFS can be installed by the site collection administrator instead. It should also be noted that as a sandboxed solution, JEFS usage is governed by the resource throttle limits set by your SharePoint administrators. This resource throttle is a configurable maximum of daily resource points for site collections, which if breached, terminates all sandboxed solutions for running for the remainder of the day.

So, with all that being said the next logical question is; what does it let you do? Put simply JEFS is an in-browser editor that does away with the need to bundle code in CEWPs. It provides one single resource for managing all of your JavaScript, CSS and library references. This screenshot shows code positioned within two panels of JEFS. The drop down menu highlights the JavaScript libraries that are available for referencing in any solutions.

Separating out this code into clearly visible panels is a world away from embedding it within an HTML view or adding JQuery (and other library references) directly into .aspx pages via Designer. It additionally removes the frustration of seeing SharePoint mangling any structural formatting of code that it placed in a CEWP. Lastly, depending upon where JEFS is invoked from, you also have the ability to select which web part zone your changes are applied to. Add into the mixture syntax specific highlighting for each distinct panel and language, and JEFS becomes both a powerful and time saving tool.

As mentioned earlier, some JavaScript libraries are available for inclusion in your code. Tomek has packaged the following libraries with the product as well as including an editing panel in which they can be referenced: –

  1. JQuery
  2. JQuery UI
  3. SPServices
  4. Ext JS
  5. Knockout

Another part of the power that JEFS adds is where it interfaces within SharePoint. The screenshot below shows the JEFS entry point on a web part page but it is also accessible from: –

  1. List view and form pages
  2. Document library view and form pages
  3. Wiki pages

As a sandboxed solution, JEFS also has the capability to run within both SharePoint 2013 and Office 365. When looking at the functionality and set of features included with these platforms, one in particular stands out: the NAPA editor for Office 365. This is also an in-browser editor, but one that is provided specifically for application building in a cloud environment. As such, a quick feature comparison between the two presented side by side may be useful. Please note that is not offered as a fully exhaustive list.

NAPA Functionality for Office 365

JEFS Functionality for SharePoint 2010

  • No desktop installation needed – launches within the browser
  • Allows you to connect to Visual Studio
  • Allows editing of CSS, JavaScript and HTML
  • Syntax highlighting and IntelliSense
  • Ability to package and publish apps via the Office Store or internal app catalogues
  • Similarity to IDE environment and ability to edit .aspx pages
  • JavaScript, HTML and CSS editors with syntax highlighting
  • Ability to easily reference external JavaScript libraries such as jQuery
  • Sandboxed solution for localised activation
  • Split screen with resizable panels
  • Ability to add the content editor web part to the web part page and link it to the HTML content of JEFS
  • Launched from Ribbon, can be added to other navigation components within SharePoint


As with any choice of tool, understanding your needs will have a deciding influence on which tool to pick. JEFS lends itself well to rapid code deployments for WFE development. It is a further timesaver in that things like HTML source views and SharePoint Designer changes can be consigned mostly to the past. NAPA as a utility that has been built specifically for Office 365 has different tools aimed application development for the cloud edition of SharePoint. Both of them are developer tools, but with different scenarios in which they can most effectively be utilised.

As JEFS is a browser-based editor, being aware of browser support for SharePoint 2010 is advantageous. The tool, as with SharePoint itself, was designed with specific browser support in mind. Microsoft has published a TechNet article that discusses browser support and compatibility. This article can be read on this URL

HTML document Standards mode within IE comes into play when using JEFS. As IE allows you to specify both the browser standard and the document mode standard used for page rendering, selecting the correct ones for your development work is important. For example, developing a page in IE9 uses a Document Mode (IE7 standards) that can render things very differently than later standards. Ensuring that any JEFS output is tested sufficiently against both the IE compatibility and document modes can save further problems in the future.

Link to product review

The product entry for JEFS on has been posted under Development & Deployment à Development Tools. The link is

“End User – Developer” scale

Trying to determine the best audience for JEFS is somewhat difficult. This is a tool that has two potential audiences: –

  1. SharePoint Developers
  2. IT Professionals that are tasked with making changes

Despite the second group standing to benefit from JEFS, the tool is clearly more suited to those that are comfortable with the various languages that are involved with WFE customisation. For that purpose JEFS scales more towards the developer rather than power users or administrators.

Potential pitfalls / problems

As with any new solution that you want to introduce to a SharePoint deployment, testing and configuration are important parts of good IT governance. The only issues that you may experience with JEFS are: –

  1. Broken rendering when used on sub-sites: – If an older version of JEFS has been installed than an error may be experienced which involves a broken web service call that tries to call web part zones. This was fixed in the January 9th release of JEFS (beta 2.03)
  2. Debug set to the correct standard: Be wary of the standards used. Mostly applicable to Internet Explorer, the document mode can have some differing results on your rendered results


Two companion tutorials have been written to accompany this article to highlight how JEFS can be used. These are: –

  1. Building a small application in JEFS using the Rotten Tomatoes API (pending)
  2. Editing a SharePoint form in JEFS using JQuery and SPServices (pending)

Conclude and add any relevant links

In closing, JEFS is one of the SharePoint-related hidden marvels of CodePlex. It is a tool that can potentially make life easier for both developers and IT professionals alike. When taking into account the different areas of SharePoint that JEFS can be invoked from, it feels like a natural extension to the SharePoint platform. The tutorials above are designed to give you a flavour of how you can use JEFS, but it is capable of much more.

A lot of credit needs to be given to Tomek for both coding up and releasing JEFS and for his contributions to this column.

The resources below were referenced for this article: –

  1. JEFS on CodePlex
  2. Introducing NAPA
  3. Tomek’s Twitter Feed
  4. Resource Limits on Sandboxed Solutions

Tutorial: Using the SharePoint List Field Manager

After I’d written the tutorial for the Seadragon Web part, I hit upon the idea of making short introductory guides an additional part of the CodePlex Corner Series. In the course of my playing around with the goodies on offer, I’m typically taking notes for my own records. It’s not really a huge leap to tidy them up and make them available for publication.

I don’t really have a specific format in mind but I’d like to try and make these tutorials as inclusive as possible, especially as some of the projects might not have terribly detailed literature with them. Any part that’s not relevant for more experience readers can always be skipped.

With that in mind, let’s get you started with the SharePoint List Field Manager. This is an easy tool to use, so the tutorial will be brief. We will cover web part installation, then activation and will look at some best practice ideas around it.

Installing the SharePoint List Field Manager

  1. Create a folder on your root drive called Web Parts. This should be something like C:\Web Parts
  2. Download the ListFieldManager.wsp file into this folder
  3. Open the SharePoint 2010 Management Shell. Typically this is Start à All Programs à Microsoft SharePoint 2010 Products à SharePoint 2010 Management Shell. Run this as the administrator
  4. Use the following PowerShell Command to install the wsp file. Add-SPSolution “C:\Web Parts\ListFieldManager.wsp”. Please note that the double quotation marks are needed for the file path. Otherwise, you may generate the positional parameter error message below.
  5. As PowerShell will helpfully tell you the solution is deployed but not installed. Installing the solution is what will make it available for use.
  6. Use this PowerShell command, making sure to change the http://YourApp URL to your own Web Application. This should install with no issues
  7. Once this command has completed the List Field Web Part will be available for use


Activating & using the SharePoint List Field Manager

The List Field Manager is a site collection feature and should be activated as such. It activates with no problems. This will be the same for both SharePoint 2007 & SharePoint 2010. The end product is a web part that you deploy and use to configure your lists: –

  1. Navigate to Site Actions à Site Settings à Site Collection Features and activate the web part. It is listed under SharePoint List Field Manger.
  2. Now that the web part is available it will be in the Web Part Gallery. It will appear under the SharePoint Management category
  3. Once the web part has been added to a web part zone you can feed it the URL of the site where you want to manage the lists. Please be aware that you cannot access lists in other sites if you are using the SharePoint 2010 SandBox deployment. Either way click on Display Lists
  4. The web part reloads with a List drop down, which is populated with all available lists for the site that was selected. Select a list and then click on Display Fields
  5. This will reload the web part again with a second drop down list from which you can select the field that you want to modify. Make the appropriate choice and then click Display Field Settings
  6. The web part reloads again with all available options for that field. The end configuration will look like this

Best Practice / Suggestions

These are some ideas and thoughts that struck me as I was using the SharePoint List Field Manager as things that I’d do when introducing the web part into any of my deployments. My current suggestions are: –

  1. Customising a View field to act as an List Admin Page

Best Practice #1: Setting up a List Admin Page

A useful trick I’ve found is to place the List View Manager within a page that’s associated with its usage. This simply consists clearing out the contents of a View Page and adding the web part in its place.

  1. Within your list or library enter the List Settings and scroll down to the Views Section
  2. Click on Create view. This loads a new page where you select the view format
  3. Click on Standard View
  4. This loads a new page where the view is configured. Forget about configuring anything here; just call the view something like List Field Admin Page. This can also be set up as a personal view. Click Ok. This loads a new page with the standard view
  5. On this page, get into the page editing mode via Site Actions à Edit Page
  6. Edit the web part from this view and set the hidden field under the Layout options
  7. Add the List Field Manager and move this to the top of the page
  8. You will now have an administration view with the List Field Manager present for future configuration

The CodePlex Corner: SharePoint List Field Manager

The link to the Project is

This edition of the CodePlex Corner turns its attention to a product called the SharePoint List Field Manager. At the time of its launch, it was created as a value-add product for CorasWorks customers and has been developed by their VP of Technology, Adam Macaulay. In May 2010 the company decided to release the product into the SharePoint community via CodePlex. The List Field Manager currently comes in three flavours: –

  1. SharePoint 2007
  2. SharePoint 2010
  3. SharePoint 2010 Sandbox

The List Field Manager does one thing but it does it very well. It allows you to set the Boolean properties on any column within a SharePoint list or library. In plain English, it partially addresses one of the perceived gaps of SharePoint. That’s the lack of granular permissions insofar as column/view level security is concerned. Once this product is installed and activated it allows you to configure, on a field by field basis, the following settings: –

  1. Hidden: This sets whether a field can be displayed in the list
  2. Read Only: This controls whether a field can be modified by the users
  3. Show in Display Form: This controls if a field is displayed in the DisplayForm.aspx
  4. Show in Edit Form: This controls whether a field is displayed in the EditForm.aspx
  5. Show in New Form: This controls whether a field is displayed in the NewForm.aspx
  6. Show in List Settings: This controls whether a field can be modified via List Settings
  7. Show in Views: This controls if a field is visible within List Views
  8. Allow Deletion: This controls whether a field can be deleted or not
  9. Show in Version History: This controls whether a field is displayed within an items Version History

These properties can also be accessed and changed in PowerShell and the SharePoint Manager, as seen here. Their only configurable options (in true Boolean style) are True or False. The List Field Manager simply provides a more accessible interface for accessing them.

More information on the Field Properties is available on MSDN on this link.

Let’s think about some of those options for a moment and the power that they provide. What other major SharePoint technology gives us the alternative to work with columns in such a way? InfoPath forms. Whilst the List Field Manager isn’t (and was never intended as) as a substitution for InfoPath, it does provide a great “no cost” alternative. This means that you can use things like calculated columns for various effects (such as calendar colour coding) and hide them from various .aspx forms and views. This allows either the Foundation or Standard versions of SharePoint to be extended and manipulated in simple but powerful ways.

Post installation the List Field Manager is available in the Web Part Gallery and allows you to select any list from a provided URL once it’s been activated. You can then select the field and set as appropriate. Compare some of the options below to the earlier screenshot from SharePoint Manager and you’ll see the same properties.

I was also curious as to whether this worked with the forms generated with External Content Types. So I set up the AdventureWorks Community samples, built an external content type and an external list from the customers table. All the typical CRUD operations were defined with the end form looked like this.

With a few grammatical tweaks to the labels this would make a workable list but that Demographics field really doesn’t serve any purpose being surfaced within SharePoint. The List Field Manager picked it up just fine but wasn’t able to tap into any of the properties that we can manipulate with SharePoint Lists.

Link to product review

The link to the SharePointReviews Product category is to be located under Content Management à Lists and Libraries on the following URL:

“End User – Developer” scale

Working on the basis that an Administrator will have installed this web part in the appropriate fashion; the List Field Manager is fairly straightforward to use. I can see this product presenting an acceptable alternative to InfoPath form development. On that basis, I’m rating this product at Power User level. Administrators & developers shouldn’t have that many problems with the List Field Manager in return for the functionality it provides them.

Potential pitfalls / problems

I’ve only been able to test this version against SharePoint 2010 so I can’t comment conclusively on any problems that the 2007 edition might encounter. The only potential problems that I could see for this are: –

  1. Limitations of Sandbox Deployment: Sandbox 2010 Deployment doesn’t allow cross site list management (this is referenced in the CodePlex documentation however)
  2. Settings not added to Site Settings: As this is a web part, not a link in the site settings, an administrator might potentially forget where this web part has been deployed. In a potential workaround, you could possibly set up a dummy view page called Admin, delete the list view and add this web part to it
  3. Hidden vs. Read Only Fields: The differences between the Hidden & Ready Only properties are confusing. Read-Only won’t surface a column but then lock it for editing, it removes it from the form.
  4. Internal Content Types Only: Doesn’t work on external content types

Conclude and add any relevant links

In closing out the article, I think this is a great tool. It provides an awful lot of utility and is something that can conceivably be farmed out to well-trained or experienced users which removes a small dependence on IT or the SharePoint professionals.

The links below are my reference list: –

  1. CodePlex List field Manager
  2. Corasworks Community: List Field Manager
  3. Field Properties
  4. SharePoint Reviews: SharePoint List Field Manager
  5. AdventueWorks Community Database