Archetonomy Mega Drop Down Review

Having usable and accurate navigation is essential to the success of your SharePoint site. SharePoint’s default navigation can be used to create concise main navigation menus, and can even support taxonomy via Managed Navigation. Visually & functionally, however, you’re limited to a simple 4-level deep flyout/dropdown menu for the main navigation. In the side Quick Launch menus, hierarchy can be implied with simple indenting of the text links.

In both of those main navigation areas of SharePoint, the out-of-the-box experience does have some definite UI and UX constraints.

The Mega menus concept

Now, mega menus are probably well familiar to anyone and everyone by now- it was an up and coming design trend back in the late 2000’s. Old hat – but let’s review the fundamentals of this design pattern first:

Typically, a mega menu:

  • is a single drop-down that appears on hover
  • shows all the options in one large panel
  • groups options into related categories
  • uses icons or other graphics to help the user.

They can succeed because:

  • They offer a good compromise between simple and expanding menus.
  • They are easy to use and should suffer fewer accessibility problems.
  • They can condense a lot of information architecture artifacts into a small amount of screen real estate

Mega menus done right
Mega menus gone WRONG
Mega menu best practices
Mega menus in Ecommerce – design Trends from 2011 vs 2014

Now, in the SharePoint world, there arose a number of solutions to be able to implement mega menu-style navigation systems in response to the growing demand. Some examples:

SharePoint Mega Menu from a DVWP and a List
BindTuning – How to use BindTuning’s Mega  Menu
Mega Menu for SharePoint

Finally, here’s a gallery of some SharePoint sites using mega menus, which are either custom coded or leveraging commercial mega menus:
SharePoint sites using mega menus

There are a plethora of other articles, posts and products relating to mega menus & SharePoint, for sure this particular links list could be a couple screens long. The vast majority do require a good knowledge of Javascript/CSS custom code, so in this review i’m focusing on the one commercial product I know of that offers a good compromise between ease of use and technical functionality.

The Archetonomy Solution


The Archetonomy Mega Menu system is a farm solution for on-premise SharePoint 2010, 2013 & 2016, and has the broadest feature set of  any 3rd party solution that I know of in this vein for SharePoint. After positive experiences with the product, I figure it’s time to give it a review.


  • Comprehensive What-You-See-Is-What-You-Get administration/design interface
  • Styles can be applied ad-hoc, with inline or formalized CSS, or a combination of both
  • Import/Export of menu configuration as an XML file eases transitioning to different environments
  • Design workflow flexibility: Power users & less technical stakeholders can do initial mock-ups with the visual designer directly in the GUI, and then hand it over to a front-end developer to formalize CSS later


  • While the drag and drop and visual design surface (which shows real-time X/Y coordinates of menu elements) increases efficiency and overall ease of use, it’s tedious to get everything to line up pixel-perfect when doing manual designs. What would really help is the ability to select multiple elements and align them left/right/top with one click, as can be done in programs like Visio, Photoshop etc.
  • Archetonomy Megamenus are currently only for on-premise SharePoint. Office 365 SharePoint Online is not currently supported. I did hear that a SharePoint Online version might be in the works but have not seen an update about that.

Dynamic Content

  • Links & content in the menu can be displayed dynamically, either individually or in sections, based on:
    • Content search queries, for example:
      • query selects the top 10 most downloaded documents from the HR department
      • selects results based on what logged In user is currently viewing the page (e.g. the last 10 documents I personally accessed)
    • Managed Metadata tagged content: the hierarchy of words that reflects organizational structure, business units & concepts can be reflected in the menu
    • Managed Navigation (TermStore): The specialized portion of Managed Metadata that is focused on site navigation, can be used. This gives special advantages like being able to use “friendly” URL’s.
    • SharePoint list managed navigation (with folder grouping): Standard SharePoint Lists can be used as the place where links are added. This gives the special advantage that the admin can assign certain user permissions to edit that list, allowing isolation of edit rights for the overall menu:
      • For example, the admin could add a section of links in the Marketing Department section of the main menu, which draws its data from a SharePoint list in the Marketing Departments site collection. A user in Marketing with basic training on how to work with SharePoint Lists, could be delegated access to be able to add/edit/remove links from that SharePoint List. This user would not be able to edit anything else in the main menu system other than the links generated by their specific SP List.
    • Three-level hierarchy (List Panels): It’s possible to maximize “screen real estate” and offer a richer selection of content, by adding an interactive Panel bar section. When a user clicks on a horizontal link section, the related content area displays in the same dropdown. In this way we can multiply the amount of content that can be displayed in single, fixed size menu dropdown area:
    • Publishing Pages: When this section is added to menu, it will automatically display all pages in the current Sites Publishing Pages Library, which is the standard place where SharePoint Publishing Pages are created. This makes it simple to render the most typical type of SharePoint CMS content.
    • Audiences, which are predefined groups that users can be added into, for example a typical use case could be “New Hires”, whereby any user in that group is shown menu content & links focused on onboarding topics.
  • Search input boxes can be added anywhere inside the dropdown menu, with the search boxes optionally sending users to specialized search results pages. For example, a search input box inside a HR Department menu dropdown, could send the user to a search results page focused only on HR-related content

Design & Ease of Use

  • Standardized CSS can be used, for example as part of a Branding Solution. In this way, when one adds a new links or content, it can already by default inherit the overall corporate branding styles.
  • Content and site designers can design and create menus directly in the browser without needing to write HTML or CSS
  • Although designing and building menus with Mega Drop Down for SharePoint is not difficult, building highly functional menus requires several skillsets. While the same person can represent many of these skillsets, identifying these roles upfront will further increase your menu’s adoption rate:
    • Information Architect – Responsible for understanding what content exists within your site and defining what options are available for accessing content.
    • UI Designer – Responsible for designing an intuitive and effective interface.
    • UI Developer – Responsible for implementing the design. This person is typically responsible for building the HTML and CSS.
    • Menu Administrator – Responsible for managing the links and updating navigation content.
      • Menu Sub-Administrators– Users in the organization who are granted selective access to add or edit only certain portions of the menu, such as a user in the Marketing Department given access to edit just links & content in that section of the menu

License Manager Installation Guide
Mega Drop Down Installation and User Guide
Product Release Notes
Video Tutorials



Although it’s a shame there’s not a SharePoint Online version of this, it’s still a powerful menu system for those with on-premise SharePoint. The ability to visually design the menu layouts and content is a big win, especially for rapid prototyping – although one needs to consider carefully how much the design should be controlled by manual activities vs how much should be put on rails by creating formal CSS rules.

Being able to add complex controls like Search Inputs, or deliver link content based on Content Search queries can help create truly useful navigation systems. With mega menu powers, comes mega responsibilities: putting everything including the kitchen sink into a menu navigation system also can create it’s own user experience issues, so one has to to be mindful that underlying usability is paid attention to.


Use Microsoft Flow to grab image of the day for SharePoint

The default Search Center in SharePoint is quite minimalist- just an empty page layout with a search box. This post will show you how to use the workflow logic of Microsoft Flow to grab a reference to the Bing image of the day, copy it’s URL to a SharePoint list, and then use clientside scripting to set the image as a background to your search center or use elsewhere in your portal.

There’s been plenty of tutorials posted over the years in terms of SP image rotaters, jazzing up search centers, etc. – the focus of this post is really more about using Flow to parse external RSS data into a SharePoint list on an ongoing basis, and then do something with that data.

1. Create the SharePoint List

In order to not have to query an external RSS feed every time a user hits a page where we want to display referenced images, we’re going to use a SharePoint list as a repository for the image links as they come in each day.

  • In your SharePoint site collection of choice (in this case, i’m using the root site collection), create a new Custom List with the name “Daily Images”. There’s no extra columns or tweaks needed for this List, we’re just going to be using the OOTB Title field to store our daily image URL and that’s it.
    Need help creating a List?:
    -If you’re using the new SharePoint UI style (Lists, Libraries & Subsites listed on “Site Contents” page are text links), these are the instructions.
    -If you’re using the legacy SharePoint UI style (Lists, Libraries & Subsites listed on “Site Contents” page are square, “metro”-style icons), follow these steps.

2. Create the Flow

  • You haven’t checked out Microsoft Flow yet? Come on, get on it – it’s the future of workflow! Head on over and sign up with your Microsoft or organizational Office 365 account.
  • Browse the Templates and locate the “RSS to SharePoint” template by Craig Stanley (thanks Craig!). Click “Use this template”.
  • For the “When a feed item is published” URL, input your image RSS feed URL, e.g.
  • A particularity of this specific RSS feed, is that some image URL’s it was outputting (with “feedproxy” in the URL) we’re not rendering when linked to, so I used the “Add a Condition” link to create a Flow Condition that only registered image links in the RSS feed, that do not contain the string “feedproxy”. For the true part of the Condition, you’re going to have it run the Create SharePoint List Item action, using the URL of the image from the RSS feed for the Title field:
  • It’ll take the flow a bit to pick up some data, so if it’s a daily RSS feed check back the next day. When it’s working and there’s no problems reported in the log, you should see some RSS image URL links showing up like so:

3. Add some script to render the images

We’re going to use Jquery and some of the SharePoint REST API to query our Daily Images list, and grab the latest image. We’re going to run with the assumption you already have your Jquery reference set up. If you don’t have Jquery in there already, you can either bake it into your page layouts (if you’re using custom branding) like this, or add a one-off reference on the page where you’re embedding this Daily Image code, like in this example.

Go to your Search Center homepage ( by default), Edit the page, and add a Script Editor web part with the following code. It renders the latest image of the day as the CSS background image of the #DeltaPlaceHolderMain div. Note that we are doing a string replace to change the original image URL’s provided via the RSS feed, which just happened to be non-SSL http://. Since we’re displaying this image on a secure SharePoint Online page, we’re changing the http:// to https://. Bing, in this case, serves both versions happily- not all image sources may play along like this so double-check they can render https:// before committing.

<script type="text/javascript">
var Module = {} || Module;

Module.GetImages = (function () {
    var pub = {},
        _images = [],      
        _options = {
            listName: "Daily Images"

    pub.init = function () {
        var url = "'" + listName + "')/items?$top=1&$orderby=Created desc"
            url: url,
            type: "GET",
            headers: {
                "accept": "application/json;odata=verbose",
            success: function (results) { createImageView(results, listName); },
            error: function (error) { 
                console.log("Error in getting List: " + listName); 
                $(_options.container).html("Error retrieving your " + listName + ".");

    function createImageView(results, listName) {
        _images = results.d.results;

        $.each(_images, function (index, task) {
			var imageURL = task.Title;
			imageURL = imageURL.replace("http:","https:");
			$('#DeltaPlaceHolderMain').css('background-image', 'url(' + imageURL + ')');
			$('#DeltaPlaceHolderMain').css('background-repeat', 'no-repeat');
			$('#DeltaPlaceHolderMain').css('background-position', 'center');	

    function _onQueryFailed(sender, args) {
        alert('Request failed. \nError: ' + args.get_message() + '\nStackTrace: ' + args.get_stackTrace());

    return pub;

$(document).ready(function () {
    SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function () {

When all is working, you’re going to get a new Bing image of the day each day, as the background to your search center page:

This technique could be applied to any instance where there’s a list of images delivered by an RSS feed, for example:
NASA Image of the Day
Flickr daily interesting image
Wikimedia Image of the Day

For the Bing Image and any other source, make sure to check that you’re obeying the copyright & author attribution & usage requirements of the image provider – the above technique implies nothing about such nuances, it’s only intended as a technical proof of concept/demo.

Microsoft Ignite Conference: Day 1 One Round-Up

Microsoft’s Ignite was a huge event- 23,000+ attendees -and a lot of news came out of it on day one. I’ll share with you here my take on the big items of the day, flavoured through my lens of SharePoint/Office 365.

Since there was so much going on, i’m going to break it out into day-by-day posts- easier to digest and gives me time to collect my thoughts after being hit on the head with a Chicago-sized Microsoft frying pan. 🙂

The core concepts: Microsoft is taking a mobile-first, cloud-first approach with three top priorities: to usher in an era of more personal computing, to reshape work and productivity with enhanced products and processes, and to build trust in a reliable, extensible cloud service offering.

Let’s get started. First, check out the official Microsoft news homepage for the event at

Here’s a selection of  some of the hot sessions now available from Day 1:

Also available in the on-demand recordings is the Monday morning keynote, which was delivered effectively by Microsoft CEO Satya Nadella, and the evening keynote hosted by Harry Shum titled The Next Era of Computing: Seeing the Future Before It Happens.

spark the future
First, a little recap on the sheer scale of the event. 23,000 of some of the world’s best IT Professionals in one spot, yet the Borg-scale capacity of the McCormick + Lakeside Conference Centers seemed hardly enough:
stack overflow

The keynote began on the upswing, with a DJ pumping out music to many, many IT peeps who are perhaps used to a little more mellow entrance in Monday Morning: 🙂

A pretty unexpected kick off to the keynote: The rapper/Artist know as Common takes the stage and delivers some inspiring words:

Soon thereafter, the big boss Mr. Satya Nadella took the stage.

Satya Nadella



Office 2016 Public Preview
Skype for Business broadcasting
Office Delve Org Analytics
SQL Server 2016 on-premise Azure (if you want the deep-dive version, check here:
Windows users can try Office 2016 and its new desktop co-editing feature
Microsoft launches Operations Management Suite to deal with infrastructure across clouds

“Move IT from delivering services in our org, to delivering transformation and innovation.”
“Mobile first, cloud first – but it’s not about the mobility of a single device. It’s about the mobility of the experience. It’s about the cloud back end, and adding intelligence to your experiences.”
“MobileFirst is not about a device, it’s about sharing computing across all the experiences in our life.”

“Social collaboration and co-creation are at the core of what we do.”
“There are going to be more devices than people on the planet.”

“Exchange, Skype for Business and OneDrive span both your personal and work life”
“The next version of SQL Server is considered a breakthrough.”
“It is important to us to build trust into the core of the operating system…that’s not a bolt-on, you have to build that in.”

There was a brief unscripted comedy moment when Mr. Nadella was describing a scenario where Delphi software would allow one to know exactly when their partner was coming home:

Joe Belifiore

– Joe says about 5-8% of users use Alt-Tab to switch between apps. Adding multiple desktop support. Hold down control/Windows/right-arrow and switch between desktops, or left-arrow to go back. Dragging an app from one desktop to another got the first spontaneous audience applause.
– Demos Cortana, and Cortana driving PowerBI
– Demos Continuum, a new way of changing the Windows user interface to change between tablet mode and laptop mode depending on how you hold the device
– Demos Windows Hello, a new facial recognition authentication mechanism that works through the webcam. Takes a cloth off a webcam, and it unlocks his laptop in a matter of seconds without the user doing anything.

.. at this point I had to move on to the rest of the Conference –

The Evolution of SharePoint

– OneDrive integration improvements are a big priority for the SP team
– Experiences, Extensibility & Management are the core principles
– On track in development efforts for delivering SharePoint Server 2016 next year
– Cloud-inspired features eventually will make their way back into the server product. Functionality that doesn’t make it into the server will be offered as Office 365 services that can be leveraged by premises-based systems
– Microsoft is continuing to focus on SharePoint’s Files, Content Management, Sites and Portals components going forward. It plans to make it easier to use hybrid architectures (SharePoint Server plus Office 365 services) and make it easier for organizations to perform migrations when they are ready, according to Seth Patton, global senior director for SharePoint and OneDrive product marketing
– A new About Me next-generation portal coming to SharePoint Server 2016. It uses Microsoft’s Delve content discovery tool, based on Office Graph enterprise search technology, to surface content and organizational information. Microsoft is also planning to ship an upgrade to SharePoint Server 2013 that will enable the Delve portal for those organizations that can’t wait for the release of SharePoint Server 2016.

Information Management with Office 365 in Mind

The Next Era of Computing: Seeing the Future Before It Happens

All in all, a heavy duty day full of news, connections and learnings. Day two recap coming tomorrow, subscribe to my blog to stay looped in!

Microsoft Ignite Session Catalog is now live

Microsoft Ignite
The Microsoft Ignite Session Catalog is here!

Be sure to take a look at the hundreds of sessions covering cloud infrastructure and management, big data and analytics, productivity, unified communications, operating systems, and mobile devices at the biggest enterprise technology event of the year! You’ll find sessions that provide deep technical detail on specific products, as well sessions that provide strategy, guidance and best practices on security and topics including deployment, operations and usage. We will be adding more sessions and labs in the coming weeks, so please check back often for updates.

Get more out of Ignite with a Pre-Day Session
For an additional investment of $500, Pre-Day Sessions on Sunday, May 3, 9:00 am – 5:00 pm. offer a unique opportunity to extend your learning experience with a full day of focused training the day before the conference opens. These sessions are designed to provide you with a deep knowledge base and skills that you can apply as soon as you’re back in the office. You’ll be able to tap into the knowledge and insights of the people who, in many cases, literally wrote the book on their subject.

Network and network, then network some more
There is something special about the connections you make at events. That’s why we’re making it easy for you to find and connect with others interested in similar topics. There will be meet ups in lounges; fire-starter and birds-of-a-feather community-led sessions in theaters; regional, industry and technology-focused meal-time mashups; and after hour networking events with Microsoft tech and business leaders to add to your agenda to unwind, kick back, and truly enjoy the scene. You can talk tech all day and night.

Mark your calendars for #IgniteJam on Twitter
On February 3rd at 9:00 am PT, we’ll have the whole event team and lots of speakers ready to chat with you on Twitter. We’ll be ready to answer your questions about the event and hear what you’re excited about in terms of community experiences and things to do in Chicago. Add the event to your calendar with this link.

To participate in this #IgniteJam

1. Join us on Twitter (or for easier real-time participation join us on Twubs at: to participate (you’ll need to sign in, it’s free)

1. Log in to Twitter at 9:00 AM PT on February 3rd
2. Follow us on Twitter at @MS_Ignite
3. Start tweeting and include #IgniteJam in your tweets!

Feeling fired up? See where technology is headed and meet who’s fueling it—at Ignite. Register today, and add a Pre-Day Session to your Ignite agenda.

App_Offline – Patch, maintain & troubleshoot your SharePoint portal with class

This is pretty slick- we can add a file called App_offline.htm into the root folder of a specific SharePoint web app, and it will have the effect of trumping all other pages and processes with that Web Application. It will simply render the contents of that HTML page.

Good for planned outages e.g. patching, CU’s etc.

I came across this script from MSDN which automates the process. It spins through all the Web Applications in a given SharePoint farm and plops the App_offline.htm in their root folder. When you’re done whatever maintenance window you’re involved in, it will remove. Neato.

Credit to Brendan Griffin over at MS!:

#Load SharePoint assembly
$Assemblies = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")

#Check if the script is running on MOSS 2007
If (Test-Path "C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions12"){$Mode="2007"}

#Grab all Web Apps
$WebApps = [Microsoft.SharePoint.Administration.SPWebService]::ContentService.WebApplications

#Retrieve Servers 
$Farm = [Microsoft.SharePoint.Administration.SPFarm]::Local
$SPServers = $Farm.Servers | Where {$_.Role -eq "Application"} | Foreach {$_.Name}

Foreach ($WebApp in $WebApps)
Foreach ($URL in $WebApp.AlternateUrls)
    If ($Mode = "2007")
    $WebRoot = ($WebApp.GetIisSettingsWithFallback($URL.URLZone)).Path.FullName -replace ":","$"
    $WebRoot = ($WebApp.GetIisSettingsWithFallback($URL.Zone)).Path.FullName -replace ":","$"
    Write-Host "Setting the Holding Page for" $WebApp.Name "- Zone:" $Url.URLZone -ForegroundColor Green
    Foreach ($Server in $SPServers)
        Write-Host "-Updating" $Server -ForegroundColor Green
        Copy-Item "app_offline.htm" "\$Server$Webroot"

Return SharePoint into Service

#Load SharePoint assembly
$Assemblies = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")

#Check if the script is running on MOSS 2007
If (Test-Path "C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions12"){$Mode="2007"}

#Grab all Web Apps
$WebApps = [Microsoft.SharePoint.Administration.SPWebService]::ContentService.WebApplications

#Retrieve Servers 
$Farm = [Microsoft.SharePoint.Administration.SPFarm]::Local
$SPServers = $Farm.Servers | Where {$_.Role -eq "Application"} | Foreach {$_.Name}

Foreach ($WebApp in $WebApps)
Foreach ($URL in $WebApp.AlternateUrls)
    If ($Mode = "2007")
    $WebRoot = ($WebApp.GetIisSettingsWithFallback($URL.URLZone)).Path.FullName -replace ":","$"
    $WebRoot = ($WebApp.GetIisSettingsWithFallback($URL.Zone)).Path.FullName -replace ":","$"
    Write-Host "Removing the Holding Page for" $WebApp.Name "- Zone:" $Url.URLZone -ForegroundColor Green
    Foreach ($Server in $SPServers)
        Write-Host "-Updating" $Server -ForegroundColor Green
        Remove-Item "\$Server$Webrootapp_offline.htm"

Reddit Q&A with the SharePoint MVP Experts Chat On Oct 29th

From the MVP Community Program:

We are launching our SharePoint MVP Expert Chats again!  Have questions about SharePoint 2010 or 2013?  Or SharePoint Online? Office 365?  Please join us October 29th at 1pm EST or 10am PDT where you can have your questions answered live!  We will be using the Reddit Ask Me Anything format.  This is new to us but many of Microsoft teams are using this medium now.  Please create a Reddit account beforehand so you can be ready to ask questions.  More information on the chat and room location will be available on Oct 29th in the SharePoint forum.  Hope you can join us!

Hope you can join us!

MVP Experts Participating:

Gavin Barron Blog Twitter
Andrew Connell Blog Twitter
Cathy Dew Blog Twitter
Randy Drisgill Blog Twitter
Spencer Harbar Blog Twitter
Doug Hemminger Blog Twitter
Sahil Malik Blog Twitter
Sean McNeill Blog Twitter
John Ross Blog Twitter
Eric Shupps Blog Twitter
Melissa Travers Blog Twitter
Kris Wagner Blog Twitter
Doug Ware Blog Twitter
Wictor Wilen Blog Twitter
Shane Young Blog Twitter

SharePoint Code Analysis Framework 5 released

I’m not one to make a blatant product plug but I really like the SharePoint Code Analysis Framework tool and they’ve upped the ante on how effective it is for running QA on SharePoint code, including tests for SharePoint Apps.

What is the SPCAF tool?
A desktop program that evaluates SharePoint code, solutions, features, Apps etc. and  checks all XML, HTML, ASPX, CSS, JavaScript and also assembly code against the quality policies, calculates metrics, generates dependency graphs and builds an inventory report.

Features list here:

Grab it from:

WARNING: This tool can reveal flaws big and small in your SharePoint Solutions. Prepare for some soul-crushing issues to be discovered in your code that your previously considered beautiful.  Hearts may be broken but remember the phoenix always rises out of the ashes. SharePoint is hard, Dev is hard, SharePoint + Dev = well.. a grey hair or two should be expected. Tools like SPCAF help keep us in line with best practices.

You may find that some of the problems reported by SPCAF do not meet your operational engineering minimum standards for rectifying – in particular HTML, CSS, & JS validation is such a patchwork of standards & recommendations, automated validation reports need to be taken with a grain of salt.

Overall, I’ve found SPCAF to be a worthwhile exercise to run on any major chunk of new or updated SharePoint code.

New Features in v5

  • Analyzers
    • New analyzer for JavaScript code applies ca. 150 rules to .JS files in WSPs and Apps
    • New analyzer for SharePoint Apps with lots of rules, metrics, dependencies and inventory checks
  • Client application
    • Completely new client application to improve usability and functionality
    • New client application “Result Viewer” (separate download) to view analysis results without license
    • New settings editor application
  • Migration Assessment
    • New analyzers and reports to analyze WSPs and give recommendations for a transition to the App model
    • Free limited version available
  • Reporting
    • New format of HTML reports with filters, charts, sorting, grouping and many more
    • Extensibility with custom reports and report section
    • New reporting engine based on Razor to ease the creation of custom reports
    • New report type PDF

Can’t wait to try SPCAF? Get your trial now or update the SharePoint Code Analysis Framework already installed on your machine.

New Client Application

The new SPCAF client makes your code analysis even easier.

Just drop your WSP or App Packages in the center of the application and start the analysis or access your recent analysis results directly from the start screen.

Learn more

SPCAF Client

Better Analysis Dashboard

The new analysis dashboard shows you a 360° degree overview of Code Quality, Metrics, Dependencies and Inventory.

From there you can access the individual reports and download Word, PDF, XML or CSV reports to share them with team members.

Learn more

SPCAF Analysis Dashboard
SPCAF Analysis Dashboard

New dynamic reports

The new reports have a simple overview dashboard showing the key findings in a graphical presentation.

You can filter, sort and re-arrange the results and dig down deep into source code to find out what is inside your solution or app.

Learn more

SharePoint Code Quality Report


Code Quality Analysis HTML DOCX PDF XML CSV
Code Dependency Analysis HTML DOCX PDF XML CSV DGML
Code Migration Assessment HTML DOCX PDF XML

New SharePoint Code Migration Assessment Report

Full trust customizations are the main risk and cost driver for migrations to a newer SharePoint version or to Office 365. Without knowing what has been customized you cannot manage the transformation or elimination of custom code.

The new SharePoint Code Migration Assessment provides deep insight into your customizations and allows better effort estimations and risk mitigation.

Learn more

SharePoint Migration Assessment Report

New Analyzers for Apps and JavaScript

With the JavaScript and Apps becoming the only future-proof way of customizing SharePoint both on-premises and in the cloud many seasoned SharePoint developers are now facing a paradigm shift which requires them to adjust their skills.

With the new App and JavaScript analyzers, which contain already in this first release over 170 rules, developers can assure their code quality with SPCAF like they are used to for full-trust code.

Learn more

Documentation of JavaScript Rules

Try it!

Would you like to see these new features in action?

Get a trial and start getting your SharePoint Code under control!

Conditional Color Coding on SharePoint 2013 Task List using JSLink

For SharePoint 2013 branding experts, this may be old hat- there are plenty of great articles out there on working with the new JSLink method of working with the clientside presentation layer of SharePoint. In this case, and for my own documentation, I’m sharing a specific JSLink method to conditionally format a SP 2013 Task List’s Due Date column, based on the date displayed. It also handles cases where there is no Due Date entered for a task.


Conditionally display KPI style indicators on OOTB Task list web parts:

  • red for overdue tasks
  • yellow for tasks due in next 7 days,
  • green for upcoming tasks beyond 7 days in the future
  • blank when no due date is set


1. Create a new field in the list that will be used to display your image. For this example, I’m using the column name of “KPI”

2. Create a JavaScript file TaskListConditional.js (code provided below) that overrides the display of the new field based on your conditions. (To see the script for this file, view Code & Assets > TaskStatusConditional.js at the end of this post.)

3. Upload the JavaScript file to your MasterPage gallery.

4. Select the JavaScript Display Template content type.

5. Set the Target Control Type value to “View.”

6. Set the Standalone value to “Override.”

7. Set the Target Scope value to the URL of your site (e.g. “/sites/site1″).

8. Go to your list view and add the link to the JavaScript file you just uploaded.

9. Browse to the List View.

10. Select Edit Page.

11. Edit the List View Web Part.

12. Under the Miscellaneous group, enter the URL to your JavaScript file in the JS Link property (e.g. “~site/_catalogs/masterpage/TaskListConditional.js”).


After following these steps, the Due Date column should show the appropriate icon image based on the due date of the task. This technique can be used to do many other things in SharePoint List Views. Using only JavaScript and HTML, you can change how any field or even how the entire list view is displayed to the user.


Code & Assets

Images used

Upload these images to a sensible location, e.g. /SiteAssets in the root site collection:

Green Red Yellow



Create this Javascript file and store in a convenient location, typically the masterpage library of the root site collection.

(function () {
    var statusFieldCtx = {};

    statusFieldCtx.Templates = {};
    statusFieldCtx.Templates.Fields = {
        "KPI": {"View": StatusIconViewTemplate}


function StatusIconViewTemplate(ctx) {
	var _dueDate = new Date(ctx.CurrentItem.DueDate);
	var now = new Date();
	var nowPlus = new Date();
	if (_dueDate == 'undefined' || !_dueDate) {
		return '';
	else if (_dueDate < now) 
		return "<span><font style='color:red'>" + _dueDate.toLocaleDateString()  + "&nbsp;<img src=''/></font></span>";
	else if (_dueDate >= now && _dueDate <= nowPlus) 
		return "<span><font style='color:black'>" + _dueDate.toLocaleDateString() + "&nbsp;<img src=''/></font></span>";
	else if (_dueDate > now) 
		return "<span><font style='color:black'>" + _dueDate.toLocaleDateString() + "<img src=''/></font></span>";



..and if you need some backup figuring out what your Field names are, use:

SharePoint 2010 vs SP2010 + FAST vs SP 2013 Search Capabilities Comparison

I put together this article to highlight the enterprise search capabilities that are provided in SharePoint Server 2010, FAST Search Server 2010 for SharePoint, and what’s new in SharePoint 2013. Info presented is tailored towards the search experience desired in typical environments, focusing on key elements and functionality.

O = available † = improved in 2013

Features and Capabilities SharePoint Server 2010 FAST Search Server 2010 for SharePoint SharePoint Server 2013 Enterprise
Keyword Query Language
Keyword Query Language (KQL) KQL is the default query language for building search queries. Using KQL, you specify the search terms or property restrictions that are passed to the SharePoint search service.
FAST Query Language (FQL)
FAST Query Language (FQL) syntax and Keyword Query Language (KQL) syntax for advanced search queries.
Directly Integrated into SharePoint
Meet the scale and performance needs of your entire organization or the specialized needs of individual departments.
Search Analytics
The search system determines the relevance of search results in part by how content is connected, how often an item appears in search results, and which search results people click.
List/Library Inline Search
Search input box that focuses on current SharePoint List/Library, negating the need for end users to “Ctrl-F” search via their web browser – search all items in current list through the convenient additional search box.
Search from Mobile Devices & Tablets
Search beyond the search center. Conduct searches from the Windows desktop and on your mobile device.
Continuous Crawling
Setting this option eliminates the need to schedule incremental crawls and automatically starts crawls as necessary to keep the search index fresh.
Display Templates
Create completely customizable templates for display of search results,
Taxonomy tag integration
Bring the power of taxonomy into search. Tag metadata is shown in results, and users can refine by taxonomy-based tags.
Metadata-driven refinement panel
With the refinement, users can narrow the results of their searches and navigate to the right content faster.
Discover structure and entities in unstructured content
You can store these entities in your search index as separate managed properties and use those properties later — for example, in search refiners.
Phonetic and nickname search
Confidently search for a person’s name as it sounds – without worrying about the exact spelling.
Search Diagnostics
You can access and analyze several query and crawl health reports, logs and usage reports from the Search service application in the SharePoint 2013 Central Administration to monitor the health of the search system.
Contextual search
Tailor different results and refinement options based on the profile of the user or audience.
Thumbnails and previews
Thumbnails and previews make the results of a search query visual, allowing users to recognize the right content quickly.
> 500m content volume with sub-second query response time
Scale to extremes with FAST Search Server 2010 for SharePoint & Integrated FAST in SharePoint 2013 while maintaining sub-second query response times.

I have also attached several documents which provide in-depth detail on the products described;

Getting Started with Enterprise Search in SharePoint 2010 Products : General Enterprise Search Guidance for SharePoint 2010
oit2013-model-sharepoint-search-architecture: Search Architectures for SharePoint 2013 diagram
sp-2013-enterprise-search-model: Enterprise Search Architectures for SharePoint 2013, includes hardware specs.

SharePoint Search Licensing Overview

SharePoint licensing is a complex subject. As well as there being multiple product configuration options, license prices often depend on a number of factors such as the type of organization, the relationship with Microsoft and/or licensing retailer etc.

As a general rule, if you are interested in giving all internal users access to FAST search via SharePoint 2010 Enterprise, you are looking at roughly twice the licensing costs of an installation using the standard features. In SharePoint 2013 Enterprise, FAST functionality is included in the Enterprise CAL’s. FAST Search for SharePoint 2010 is licensed separately so to take advantage of all the enterprise search features you will need additional server licenses for servers running the FAST Search software.

It is also possible to use a single server for any of the above server licenses. For example if you wanted to run an Intranet and a public Internet website on the same server you could apply the SharePoint 2010 Server license as well as the SharePoint 2010 Internet Sites license to a single server. A FAST license can also be applied to a SharePoint 2010 server if required (saving hardware costs but still requiring SharePoint Server and FAST licenses).

itgroove can offer specific license recommendations when the SharePoint version platform is decided.

SharePoint 2013 Search Boundary Key Changes
As perhaps a trade-off for the tight integration of FAST functionality into SharePoint 2013, there are some significant new restrictions in topology that should be known, as they affect search architecture planning:

Limit SP 2010 SP 2013
Crawl Databases 10 per Search Service Application 5 per Search Service Application
Crawl Components 16 per Search Service Application 2 per Search Service Application
Index Partitions 20 per Search Service Application 20 per Search Service Application
Link DB N/A 2 per Search Service Application
Query Processing Component N/A 1 per server
Content Processing Component N/A 1 per server
Analytics Processing Component N/A 6 per Search SA

Although most organizations should be able to meet their immediate requirements for Search with a single Search Service Application (ideally on a single, dedicated SharePoint web application), these limitations should be noted for future expansion. This design sample shows the logical architecture and interaction of search components, and an example of a fault-tolerant server farm that provides enterprise search for a content corpus that contains approximately 40 million items:

Topology Changes from SharePoint 2010

When designing your topology, it is important to understand what has changed since SharePoint 2010 Search and the performance of the components. Due to the technical changes some of them need to be ideally separated onto separate servers when scaling up or if you have a large search user base. In a small to medium farm of 2 to 4 SharePoint servers in SharePoint 2010, the recommendation was to place the query component on the web front end servers. In a medium sized search orientated farm it was recommended to have three physical tiers consisting of separate web front end servers, query servers and crawl servers.

In SharePoint 2013, even with a small farm of two SharePoint servers it is recommended to place the query services on a separate server from the web front end server. The query and crawl services can run together on a separate server. This is applicable for up to four SharePoint servers but once you increase the number of servers, it is recommended to split out the query and crawl components onto their own servers and leave the remaining service applications together.

Here’s the official guidance on modifying your SharePoint Server 2013 Search Topology:

Here’s a couple more great posts from two stand-up guys on how to modify your search topology:
Changing the SharePoint 2013 Search Topology
New-SPEnterpriseSearchIndexComponent could not find part of the path error

How you structure your architecture depends on what you intend to use it for, be it enterprise or for the internet. There are a number of considerations to take into account such as high availability, fault tolerance, the amount of content and the number of queries you will receive.

The query processing component takes most of the load off the SQL server including disk space load and CPU, it therefore requires more local resources than in SharePoint 2010. The query processing component ideally, therefore, should be on its own dedicated server. The index component is equally resource hungry, because it performs two roles in communicating to the query processing component and the content processing component.

The index is the main store of information from the crawled content and can be split into multiple partitions to scale up and provide fault tolerance. Another thing to consider, if you are crawling a large amount of data, it is advisable to have a dedicated web server for crawling. The diagram below is an extract from a TechNet article on topologies, which shows the optimum environment for search oriented environment:
search index

Technical Diagrams for SharePoint 2013 Search

Title Description
SharePoint Server 2013 SearchIC663131
Zoom into the model in full detail with from Microsoft (best on desktop or laptop computers)Visio version (best for users with Visio)PDF version (best for mobile devices or tablet computers)
This design sample shows the logical architecture and interaction of search components, and an example of a fault-tolerant server farm that provides enterprise search for a content corpus that contains approximately 40 million items. For more information, see the following articles:

Enterprise Search Architectures for SharePoint Server 2013IC673360
Zoom into the model in full detail with from Microsoft (best on desktop or laptop computers)Visio version (best for users with Visio)PDF version (best for mobile devices or tablet computers)
This design sample illustrates small, medium, and large-size farm architectures for enterprise search. It contains search and farm topology examples, scaling guidance, and hardware requirements. For more information, see Overview of search in SharePoint Server 2013.
Internet Sites Search Architectures for SharePoint Server 2013IC663133
Zoom into the model in full detail with from Microsoft (best on desktop or laptop computers)Visio version (best for users with Visio)PDF version (best for mobile devices or tablet computers)
This design sample provides guidance on the hardware requirements and performance considerations for Internet Sites search topologies. In addition, the model contains an example medium-sized Internet Sites farm. For more information, see Plan for Internet, intranet, and extranet publishing sites in SharePoint Server 2013.

Using the built-in Windows Problem Steps Recorder to document user woes

I’m re-introducing the Windows PSR (Problems Steps Recorder) as one of those cool tools we come across, get distracted, forget about, and then come back to as “wow that’s hot”.

Problem Steps Recorder (PSR.exe), is shipping on all builds of Windows 7, Windows 8, Windows 8.1, Windows 8.1.1, Windows Server 2008 R2, Windows Server 2012 & Windows Server 2012 R2. Unfortunately, there is no equivalent Microsoft provided program available for Windows Vista, Windows XP, or other Microsoft operating systems prior to Windows 7. This feature enables the collection of the actions performed by a user while encountering a crash or running through the things they are trying to do, so that we as Consultants, Developers, Support Technicians & Admins can figure out what exactly is going south.

To begin creating their documentation, the user would press the Start Record button.

They would then begin going through the steps that took them towards their question or problem. At any point during this process, they can press the Add Comment button to highlight a problem area and add comments. Once they are done, they click the Stop Record button. Once they stop recording, a Save As window appears letting them browse to the location they want to save the documentation. A zip file is created and saved to that location. Inside the zip file is a .mht file containing the documentation. You will need to use Internet Explorer to view the MHT file.

Opening the documentation will present the help desk, admin, or family tech guy with a step-by-step walkthrough of what the user did, complete with screenshots and any comments made by the user.

Click here for a sample of what the recorded output looks like:

In addition to the screenshots, at the bottom of the report file the PSR generates you’ll find a copy & pastable (plain text) output of the events, like the following:

Recording Session: ‎2014-‎05-‎29 7:35:48 PM – 7:36:51 PM

Recorded Steps: 4, Missed Steps: 3, Other Errors: 0

Operating System: 9600.17041.amd64fre.winblue_gdr.140305-1710

Step 1: User left click in “Sites – Internet Explorer”
Program: Internet Explorer, 11.00.9600.16384 (winblue_rtm.130821-1623), Microsoft Corporation, IEXPLORE.EXE  SCODEF:13064 CREDAT:1782837 /PREFETCH:2, IEXPLORE.EXE
UI Elements:

Step 2: User mouse wheel down in “Pages – Engineering – Internet Explorer”
Program: Internet Explorer, 11.00.9600.16384 (winblue_rtm.130821-1623), Microsoft Corporation, IEXPLORE.EXE  SCODEF:13064 CREDAT:1782837 /PREFETCH:2, IEXPLORE.EXE
UI Elements:

Step 3: User left click in “Pages – Engineering – Internet Explorer”
Program: Internet Explorer, 11.00.9600.16384 (winblue_rtm.130821-1623), Microsoft Corporation, IEXPLORE.EXE  SCODEF:13064 CREDAT:1782837 /PREFETCH:2, IEXPLORE.EXE
UI Elements:

Step 4: User Comment: “This is where it breaks”
UI Elements:

How to Use the PSR


  • When you record steps on your computer, anything you type will not be recorded. If what you type is an important part of recreating the problem you’re trying to solve, use the comment feature described below to highlight where the problem is occurring.

    Some programs, like a full-screen game, might not be captured accurately or might not provide useful details to a support professional.

To record and save steps on your computer

  1. Open Problem Steps Recorder by clicking the Start button, and then typing psr. In the list of results, click psr.

  2. Click Start Record. On your computer, go through the steps on your computer to reproduce the problem. You can pause the recording at any time, and then resume it later.

  3. Click Stop Record.

  4. In the Save As dialog box, type a name for the file, and then click Save (the file is saved with the .zip file name extension).

    To view the record of the steps you recorded, open the .zip file you just saved, and then double-click the file. The document will open in your browser.

To send the problem steps in e‑mail

  • After recording and saving a .zip file, click the help down arrow , and then click Send to E‑mail recipient. This will open an e‑mail message in your default e‑mail program with the last recorded file attached to it.


    • You won’t be able to click the Send to e‑mail recipient option until you’ve recorded and saved a file.

To annotate problem steps

  1. Open Problem Steps Recorder by clicking the Start button , and then typing psr. In the list of results, click psr.

  2. Click Start Record.

  3. When you want to add a comment, click Add Comment.

  4. Use your mouse to highlight the part of the screen that you want to comment on, type your text in the Highlight Problem and Comment box, and then click OK.

  5. Click Stop Record.

  6. In the Save As dialog box, type a name for the file, and then click Save.

    To view the record of the steps you recorded, open the .zip file you just saved, and then double-click the file. The document will open in your browser.

To adjust settings

When you adjust settings for Problem Steps Recorder, they’re only saved for your current session. After you close and reopen Problem Steps Recorder, it will return to the regular settings.

  1. Open Problem Steps Recorder by clicking the Start button , and then typing psr. In the list of results, click psr.

  2. Click the help down arrow , and then click Settings.
  3. You can change the following settings for Problem Steps Recorder:

    • Output Location. If you don’t want to be prompted to save a file after recording, click the Browse button to set a default output file name.

    • Enable screen capture. If you don’t want to capture the screen shots along with the click information, select No. This might be a consideration if you are taking screen shots of a program that contains personal information, such as bank statements, and you are sharing the screen shots with someone else.

    • Number of recent screen captures to store. While the default is 25 screens, you can increase or decrease the number of screen shots. Problem Steps Recorder only records the default number of screen shots. For example, if you took 30 screen shots during a recording but only had 25 screen shots as the default, you would be missing the first five screen shots. In this case, you would want to increase the number of default screen shots.

What about the other screenshot tool <X>?

As usual in software-type things, there’s more than one product around that does the same type of thing. For screenshots, even just in the Microsoft stack there’s:
OneNote Screen Clipping –
Office Screen Clipping –

On the general market, there’s:

I use the great SnagIt on a daily basis to make screenshots (just trying out version 12 this week myself) however, it’s more for us as Consultants to create content for consumption by others. The Problem Steps Recorder has the advantage over SnagIt for particular scenarios where you need the user to show you what’s going on:

– Free
– Built into most Windows environments you’ll encounter these days
– Can be run by end users with very little instruction
– Can be used on workstations where remote desktop’ing in isn’t available, performed autonomously by end users
– Handles all the screenshot’ing, layout, description of user interaction events
– Provides detailed descriptions of interaction events that would be otherwise time-consuming/difficult for a human to collect manually

Final Victory of the PSR

The final advantage I see in the PSR in general (as a troubleshooting tool), is a huge one:
By empowering the user to document their own grief, with their own mouse button and on their own time, you are creating a purer user story:

– they are not being influenced by weird remote desktop software running on their workstation
– they don’t have to worry that the visiting technician invading their desktop is going to discover what kinds of oddball websites they visit while poking around
– there’s less time constraints as the user can run this on their own time, again without someone breathing down their neck
– there’s less chance of their user story being tainted as there’s no one coaching them, directly or indirectly


  • 1
  • 2
  • 8