Missing Personalization Containers
Combining Composer with Visitor groups on your EPiServer CMS6 R2 site gives your editors a powerful new way of working with ‘personalized’ content, via the built-in Personalization Container Composer element.
This function allows an editor to create a Composer area that will display a unique list of other Composer functions; depending on which visitor group a user is matched to in your site. This means that editors can personalise more than just page content, and can also adjust the page layout and functionality offered to each visitor, by dragging different Composer functions into each Personalized ‘slide’ within the Personalization Container function.
Upgrading a site to 6 R2
After upgrading a few sites from CMS6 to CMS6R2, if you don’t check the option to import PageTypes during the upgrade process (which if you’re using PageTypeBuilder you might think you can skip) thenĀ the Personalization container isn’t created, and you’ll be missing this piece of functionality.
The easiest way to re-create this function is to export the composer PageType information from a ‘fresh’ install of the Composer / R2 Alloy Tech site, and then import this into your site.
To save you the hassle of setting up a fresh demo site. I’ve included an exported Composer Personalization function as a download below (.xml format).
PersonalizationContainer.zip – Import using EPiServer Composer Import / Export page.
You just need to import this using the Composer import feature in EPiServer Admin mode, and hey presto!
A QueryString Visitor Group Criterion for EPiServer
A common usage for advanced website analytics systems (Omniture, Google etc) is to track the effectiveness of external digital marketing campaigns such as banner ads, pay-per-click, sponsored search results……..
Technically, this is normally achieved by adding a querystring key to the campaign link url and then tracking requests that use this key. So for example, a Google Adwords campaign linking to your /products page would also include a querystring parameter of cid=marketingcampaign (example: http://yoursite.com/products?cid=marketingcampaign)
This querystring parameter can be picked up by your analytics implementation and used to track various aspects of the campaign.
On an EPiServer CMS6 R2 site, editors can use the Personalization/Visitor Group framework to provide a unique page experience per visitor, meaning that its possible to provide personalized content for each external marketing campaign on any page on your site.
Out-of-the-box, EPiServer provides a criterion which checks the incoming request Url or the page referrer, but not one that checks the querystring of the incoming request.
Creating a Visitor group criterion is straight forward – the only issue I’ve ever had trouble with; is when working on a .NET 4.0 project – which was solved by Ted Nyberg.
I’ve created a simple QueryString Criterion which will provide a match based on the following:
- Whether the current request contains a user specified querystring key
- and / or whether the current request contains a matching querystring key which also has the user specified value.
The source code is available as part of the Criteria Pack on Codeplex and of course there is a Nuget package on Nuget.episerver.com – (as soon as its been approved!)
GiveCamp UK – a philanthropic software development microcosm
I was lucky enough to participate in the first UK GiveCamp over the course of the last weekend.
Wow, what an incredible experience!
“Pair 120 developers with a collection of UK charities each with an IT need. Lock them in a room, feed with caffeine, cooked pig and sugar. Leave to bake over the course of a weekend, peel open (and off the floor) on Sunday afternoon. Stand back and view the results.”
The concept, execution and community was superb (see @stack72′s post for a great list of thanks to those involved). A special thanks must also go to UCL for hosting the event and the generous sponsors for providing financial support and goodies! Come the Sunday afternoon ‘show and tell’, all of the project teams delivered some great work, much of which will make a tangible difference to each of the UK charities that got involved.
“For the first time in living memory, someone cried because the software we did was so good.”
What better testimonial than this? How many times have you had this reaction whilst working in your day job

GiveCamp UK 2011 - photo by Bert Craven
A software development microcosm
Whilst the time-scales involved in GiveCamp make it an unreal experience, at the end of the day it’s just software development, and so the normal rules and pitfalls of software development apply.
The thing that really struck me whilst working, is that is that it’s very easy to get carried away and lose focus from the end output. Whilst much of this could be attributed to the excitement, intensity (and tiredness) that surrounds the event. Actually it is just par for the (software development) course.
If you’re ever involved in a future GiveCamp (and by all means you should), here are some of my top tips……
Deliver deliver deliver
Don’t overreach and try to build the Tower of Babel. Solving one problem well, is better than half solving many problems.
This means you constantly have to question the solution to make sure that every design decision that is made, is made for the right reasons. Do you really need that level of granular security or additional view? Focus on your core functionality only.
Remember building ‘cool’ stuff is not the output you’re looking for. Delivering a working solution that solves a real world problem is the ONLY goal….
Engagement
As ever, it is important that you have a engaged stakeholder / product owner – who is actively available to field questions and define their needs (we all know this from our day jobs right?)
Remember though, the charities will be like a kid in a sweetshop – whilst you are their ‘knight in shining armour’. It’s ok to question their requirement wish-list. 41 hours is not a long time to deliver a solution. So always make sure you stay focussed on solving a real and well defined problem.
Keep it simple stupid
After the weekend, the solutions are handed over lock and key to the charities. You need to make sure they know what you’ve built for them and that they have enough information to support it going forwards. This could mean documentation! One team produced a 40 page document on how to install a SQL Server instance. The time spent on that document was way more important than any one additional software feature. Without it, the solution wouldn’t have even been deployed.
Remember – not everybody knows the things you as a developer takes for granted. Imagine that you’re delivering a solution for your dear Nan. That’s the level you should aim for.
Focus on what you know
When you’re under pressure to deliver, don’t go off-piste and make some ‘left-field’ technology choices, so you can learn the latest new and shiny thing. Stick with what you know and what your team has capabilities with. Don’t worry, they’ll still be plenty of opportunity to learn.
For me I was working with ASP.NET / MVC but I still learnt more about Git, Entity Framework and what an awesome service AppHarbor provide.
Future me
I definitely wish I’d had ‘future me’, looking over my shoulder to remind of those things throughout the weekend (especially at 2am on Sunday morning when the adrenaline was wearing thin). However I also know that ‘future me’ would have told me how proud he was of all of us who donated time and effort to help out.
Top stuff to all involved. Here’s to GiveCamp UK 2012!

