SharePoint Online continuous deployment with IonFar Migration

Install-Package IonFar.SharePoint.Migration

The common stack I am currently using to build SharePoint Online solutions generally consists of the following components:

This stack allows automated deployment of the project against a continuous integration (CI) environment. Simple migration scripts (written in PowerShell) are cumulatively run against the environment, and can be easily promoted to a UAT and then Production environment.

Example migration script

Continue reading SharePoint Online continuous deployment with IonFar Migration

SharePoint 2013 – Team Site Guide

A SharePoint deployment typically has different types of sites, with different levels of governance. The central published site usually has tight governance over structure and information, whereas group and team sites have less restrictions and more flexibility.


This guidance is around team sites, where although the site collection must initially be set up by a SharePoint administrator, at least some team members have administration permissions to the site and can manage the site schema and structure. Continue reading SharePoint 2013 – Team Site Guide

Apps and other SharePoint client-side development

An expanded client-side development model, which includes Apps as well as techniques such as remote provisioning, was released with SharePoint 2013. SharePoint Online does not support server-side development, apart from limited sandbox solutions, so client-side development must be used, whereas for stand alone SharePoint both the new client-side model as well as the original server-side model are available.

I have used several of the different alternatives for client-side development, and thought I would provide my overview of when each is suitable and my current preferred approaches.
Continue reading Apps and other SharePoint client-side development

A sensible guide to branding SharePoint 2013

This post details my thoughts on where to start with branding for SharePoint 2013. In particular, I think Themes (.spcolor, .spfont) are now usable, and recommend to start there, linking to a couple of resources. But first, I talk about what not to do.

What not to do

It might seem like a good idea to get a graphic design company to develop a whiz-bang look for your intranet, then turn around and ask a web development company to turn it into a SharePoint branding. Often this starts out with an HTML reset or HTML boilerplate.

The core SharePoint stylesheets have over 10,000 lines of CSS — unless you want to rewrite all of that, you do not want to be doing a CSS reset. You never know when BI dashboard widget XYZ is going to need to display a green/red traffic light based on some CSS buried deep within the core files.

Don’t do it.

Continue reading A sensible guide to branding SharePoint 2013

Ways to load jQuery in SharePoint (2010/2013)

There are many different approachs to using jQuery with SharePoint. Here is a summary of several different methods I have used, including how to get it to play nicely with NuGet.

There are three main decisions to make:

  1. Decide where to put the jQuery files
  2. Add the jQuery (and other) library to the project
  3. Referencing the scripts

Continue reading Ways to load jQuery in SharePoint (2010/2013)

WSRP ‘support’ in SharePoint 2013

Web Service for Remote Portlets (WSRP) is a standard for aggregating content within a host system, allowing the content to come from an external system, yet styling to be provided by the host.

SharePoint has ‘support’ for WSRP since SharePoint 2007, via the WSRP Viewer web part (Enterprise), however while it may technically meet the standard it is all but useless for anything except the most basic of requirements (as at the current version, SharePoint 2013).

Continue reading WSRP ‘support’ in SharePoint 2013

SharePoint 2010 logging levels

According to MSDN “in Microsoft SharePoint Foundation 2010 the preferred method of writing to the Trace Logs is to use the SPDiagnosticsServiceBase class” (

MSDN also provides some guidance on the trace and event log severity levels to use (, however the WriteEvent() and WriteTrace() methods use slightly different enums; the diagnostics logging configuration in Central Administration is slightly different again, and then you have a third set of values accessed by the PowerShell command Get-SPLogEvent.

The table below shows the mapping of levels from these different sources.

Despite the complicated mapping, in general I think things go in the right direction with events writing to the event log and trace log at the same time, and having a high trace level. The distinction between event logging and trace information is also good, with independently set thresholds.

EventSeverity EventLogEntryType TraceSeverity ULSTraceLevel ULSLogFileProcessor
None = 0 None = 0 0 (None) Unassigned = 0
ErrorServiceUnavailable = 10 Error 1 Critical = 1 (or ErrorCritical)
ErrorSecurityBreach = 20
ErrorCritical = 30
Error = 40
Exception = 4
Assert = 6
Warning = 50 Warning 8 Warning = 8
FailureAudit = 60
Unexpected = 10 Unexpected = 10 Unexpected = 10
Monitorable = 15 Monitorable = 15 Monitorable = 15
SuccessAudit = 70 Information 18 Information = 18
Information = 80
Success = 90
Verbose = 100
High = 20 High = 20 High = 20
Medium = 50 Medium = 50 Medium = 50
Verbose = 100 Verbose = 100 Verbose = 100
VerboseEx = 200 VerboseEx = 200 VerboseEx = 200

Continue reading SharePoint 2010 logging levels

SharePoint 2010 design considerations

SharePoint 2010 introduces the ribbon bar as a central place for all the editing controls, that in earlier versions could be scattered across the page.

When designing custom master pages for SP 2010 you may want to visually integrate the ribbon bar into the design, as is done in the out-of-the box v4.master (wiki & workspaces) and nightandday.master (publishing portal) pages.

To do this, I have documented the size of the different elements, so they can be included in the design.
Continue reading SharePoint 2010 design considerations

Australian SharePoint conference 2010 – day 2

Content Deployment Bootcamp (Mark Rhodes)

Reasonable mix of slides and demos. Several of the slides had an interesting grab of quotes from the community on the new SP2010 content deployment — most of them positive (or at least optimistic).

There was a brief mention of the problems with content deployment in MOSS2007 (particulary with variations), with the comment that despite initial issues MOSS2007 deployment actually got better with the various service packs and cumulative updates.

The demo was nothing special (it’s relatively easy to get simple content deployment working in a demo/lab environment — it was always real world deployment, with WAN issues, etc, that had problems).

SharePoint 2010 web part development (Ishai Sagi, Brian Farnhill)

The presentation was mostly demos (there were slides, but they weren’t used much) — which actually worked quite well. The two presenters worked well together and packed in a heap of demos — an AJAX web part built from scratch, a Silverlight web part, how to upgrade web parts from 2007 including a demo of existing WSP’s just working versus ones that need recompiling (or updating), plus a demo of the new developer dashboard and how you can use it to troubleshoot web part perfomance issues.

It was a lot of demo’s they packed in and fairly informative. A good session overall.

Information Management with SharePoint 2010 (Rai Umar, Gayan Peiris)

A business-focussed session with a good overview of the information management aspects of SP 2010.

SP 2010 has expanded many of the record management features to be applicable anywhere you want in the system (not just a single record center). Another key component is the managed metadata service with hierarchical taxonomies.

There was a good slide with the positioning of different elements (MySites, digital asset management, etc) fit on a scale of managed taxonomies to open folksonomies and scope from team to enterprise-wise.

SharePoint 2010 Development – Business Connectivity Services (Adam Cogan)

The session title was not a good description of the content — Adam went off on quite a tangent and a significant portion was spend on Facebook integration (I think this is just Adam doing his own thing — something I have seen before).

Anyway, after a brief demo of BCS connecting to Adventure Works as a power user (including pulling the result into Outlook), the majority of the session was about integrating SharePoint + Facebook.

Admittedly one of the options for integrating with Facebook was via BCS, which may have been the point of the demo (not sure). In terms of other options given there was pulling from Facebook (via JS or API) or pushing to Facebook (via Workflow or Event Receiver).

It was suggested that the push model (e.g. Workflow) may actually be best for organisations that want to own their own data, plus push to multiple locations (SharePoint, Twitter, LinkedIn, etc), although the BCS option was the one demoed.

For the BCS option, the Facebook Development Kit (from Codeplex) was used to show how easy it is to integrate SharePoint + Facebook.

In Depth Architecture and Design Planning

Slides only presentation covering a wide range of architecture and planning. Started with an refreshing on MOSS 2007 capacity planning, then moved into SP 2010 considerations.

A brief mention of upgrade options, with in-place upgrade not recommended in most cases. (The database mount aka database attach approach was recommended as best practice; there are also many situations where in-place is not even directly possible, e.g. where hardware migration is needed.)

There was a discussion of disaster recovery solutions, mostly focussing on database mirroring. SP 2010 is failover aware, but using a SQL alias for your database is still a good idea for databases such as the config database.

Australian SharePoint conference 2010 – day 1

Keynote (Arpan Shah)
Some of the slides were re-used from other presentations (e.g. Services Ready content), but a reasonable overview. One thing particularly interested was some statistics that were provided: 17,000 SharePoint customers, 4,000 SharePoint partners, and 500,000 SharePoint developers.
The developer stats seem a bit iffy, but the customers/partner information is interesting — if you do the maths it works out at 4 customers per partner, which gives an idea of the level of competition in this space.
Manipulating the SharePoint 2010 Ribbon (Todd Bleeker)
Todd is a very enthusiastic presenter, and provided plenty of side tips and suggests that are obviously based on experience, e.g. "Start with an Empty SharePoint project rather than with a specific item, so that you can give the item a nice name when you add it", or "The first thing I do is move the key.snk into the Properties folder because I never touch it and want to clear the screen real estate".
The presentation had a good mix of slides and demos, and continued with the tips, e.g. "Deploy .js files into a library so you can apply security management — such as making them accessible to anonymous users.". He then went on with issues how the blank site template doesn’t have a Site Assets (or Site Pages) library, so you need to also ensure they exist.
Taking SharePoint offline with SharePoint Workspace
I don’t know what I was expecting from this business track presentation, but it did deliver on some of the changes/improvements in SharePoint Workspace (previously Groove) and the limitations.
I think SharePoint workspaces are a good solution for the ‘occassionally disconnected’ worker, but you need to think how you organise your SharePoint to support it, e.g. having one site with a large document library (with folders, etc) doesn’t synchronise well (you can’t limit SPWS to only part of a list); you want to have individual collaboration sites per department, project, etc.
Developing with REST and LINQ in SharePoint 2010 (Todd Bleeker)
Another good presentation by Todd, which covered two extremes of accessing SharePoint data. Half the demo was on the JS Client Object Model, and the other half jumped right to the other end of the spectrum and show cases using LINQ on the server-side to access SharePoint data.
DataView web parts
This presentation was plagued by demo issues and suffered a bit. It was also oriented towards no-code solutions, so limited in scope. It did show how far you can get through only customising dataview webparts (XSLT, etc).
There was also a nod towards the new client-side object model and the potential for developing significant solutions without the need for any server code.
Building Line of Business Applications using ECM solutions
I found this presentation a bit bizarre. The presenters started off selling themselves and it initially felt like I was in a vendor session. Whilst other sessions may give away books, CDs, etc, these presenters decided to give away five dollar notes, which I found quite strange.
Another example of something that struck me as strange was presenting some statistics about the types of successful projects but drawing the wrong conclusion regarding how likely a project is to be successful based on its type (affirming the consequent fallacy — "a lot of successful projects are type A" does not mean that "type A projects are likely to be successful" — maybe there are simply more type A projects).
The bulk of the session was actually an okay case study about building a demo OH&S business process consisting of an Infopath form for incident reporting kicking off a workflow that then led to a case management workflow (where necessary). The case management workflow used the new document set functionality, where a special folder (call a document set) of items can be group together, applying metadata, workflows, records management, etc to the document set as a whole.
(As an aside, if you want to take advantage of SharePoint Workspaces then you need to think carefully about how you structure you documents — do you really want all cases in a single document library.)