Friday, February 12, 2016

Sitecore Hackathon 2016

After participating in the Sitecore Hackathon of 2015, we had really been looking forward to this year’s edition. And it turns out that this edition was again very valuable, an opportunity to work together closely, explore unexplored aspects of Sitecore and deliver another valuable building block to Sitecore.

But let’s kick this post of by explaining what a Hackathon is all about.

A Hackathon is a community driven event that aims at creating new functionalities around an existing concept or product.  As the event is participated voluntarily, no real product enhancements are developed to be incorporated into the base product. Often these Hackathon events are organized as small competitions to increase the gamification factor and add some healthy competition.
A Hackathon mainly aims at developers although some front-end and analysis is often required to conceive and complete the project. A Hackathon usually has a timeframe of 24 hours, this allows for the team to prove their ability to approach a project independently and in a structured fashion.
The idea behind adding these new functionalities can be very diverse:

  • Adding new desired functionalities
  • Presenting a proof of concept
  • Proving an in-depth understanding of the product

This year’s Hackhaton

As this was a Sitecore Hackathon, obviously all the registered teams would have to work with Sitecore at the heart of our solution. However, the actual assignment (that helps guide or structure your concept) is only revealed to all the teams one hour before the start.  A total of 48 team signed up, making for a total of 132 developers participating. More information can be found here:

This year, we had been given a heads-up that the emphasis would be placed on Sitecore Habitat. Sitecore Habitat is a solution example built on a modular architecture. It aims to streamline the development process and optimize productivity within a Sitecore project. As the Sitecore Habitat framework is built around modularity, features and an overall granular approach, it offered a perfect basis for the Hackathon.
The 3 categories that were presented one hour before the start were the following:

·         New Habitat Feature
Create a new feature module for the Habitat website exhibiting a clearly defined business objective.
Add visible renderings on the website and optionally extend the Sitecore interface.
·         3rd Party System Integration
Create an integration to a 3rd party system in the Habitat example site.
The solution can contain one or more new modules or can extend or customize the existing Habitat modules.
·         Customer Demo Site
Showcase a customized customer demo site built on Habitat as you would do for a prospect.

After 24 hours, all participating teams can upload their code, documentations, Sitecore packages and content to a team of community judges that will take their time to go through all the submissions and choose a winner in each of the categories.

Team “No Weekend 4 Us”

Our team consisted of myself and my colleagues Gert Gullentops @Gatagordo and Nick Vierstraete @NickVierstraete
Supported by the entire company and the multitude of visitors and messages we received we found ourselves strengthened to work on our Habitat feature and give it our best.

We chose to go for the first option and provide a new Habitat feature. In the 24 hours available to us we built a fully functional Habitat feature around the concept of event management within your Sitecore solution.

We aimed at making a skimmed down version of all the features we would love to see in a full-fledged solution in a real-world Sitecore solution. This approach aligns perfectly with the basic idea behind Habitat. The idea is to create mid-tier features that remain abstract but are very stable and can easily be expanded on.
Thanks to this Hackathon event we were able to deep-dive into Habitat, use a clean version of Sitecore 8.1 and approach all aspects of a mini-project.

A very big thanks goes out to:

  • Everyone that supported us
  • Akshay Sura and Sitecore for making this possible
  • The local fast food solutions offered to us by The Reference @TheReference
  • Special thanks to Simran Singh and Jeroen Vantroyen

We have a whole new year ahead of us to build on our expertise, discover new possibilities and muse on new ideas. Time enough to position ourselves again at pole position for the Hackathon 2017.

Sitecore Hidden Gems - Updated: Admin Pages (based on Sitecore 8.1)

About a year ago I wrote a blog post on the admin pages and some of the hidden functionalities with Sitecore.
This post is meant to elaborate on that by showing the differences that have come up since then with the release of the Sitecore 8.1 version.

You can read up on the previous post here:

And I will not be repeating myself endlessly, so my goal is to list the differences in this post.
I think a good excercise could be to start of in pretty much of the same structure and post :

The List


When comparing these two we can see the following differences:

  • ContentTestingUpgrade.aspx
  • InstallLanguage.aspx
  • kill.aspx *
  • PathAnalyzer.aspx
  • RebuildKeyBehaviorCache.aspx
  • RedeployMarketingData.aspx
  • UpdateSocialProfiles.aspx 

The updated admin pages - what are the actual differences and funcionalities

As my previous blog post already goes into enough detail on the other admin pages, I have narrowed the listing below to the delta mentioned above.


    Located at /sitecore/admin/ContentTestingUpgrade.aspx | One of the many migration admin pages. This one allows you to cleanly migrate your test data. I have not used this one yet.


    Located at /sitecore/admin/InstallLanguage.aspx | Again a convenience method that allows you to quickly add new languages to your Sitecore environment. The fancy part is that is can handle all the rebuilding of indexes and links automatically and behind one click.

    However, I think it is very risky to have the "Republish master database" and "Run the website and the Sitecore UI in this language" presented here as well. Even though we all know what we are doing at this point, a mistake is easy to make... So be very carefull around this functionality!


    This page was marked above with an "*" since this page does not appear by default in a Sitecore installation but was provided by Sitecore to close your session and have the xDB populated as you kill off your session.

    <%@ Page Language="C#" AutoEventWireup="true" %>
    <script runat="server">
    public void Page_Load(object sender, EventArgs args)
     Response.Write("visit ended");*/
      <p>The session was abandoned.</p>

    As noted by Brian Pederson (@briancaos) on his blog, it might even be better to use this code:



    Located at /sitecore/admin/PathAnalyzer.aspx | This page gives a quick overview of the maps manager and their deployment status. There are no actual visualizations of the data behind these maps.

    Further down the page you have the possibility to rebuild historic maps, run agents (even though it is mentioned that these should run on an interval basis) and finally and upgrade utility that needs to be performed when an upgrade from Sitecore 8 to Sitecore 8.1 was performed.


    Located at /sitecore/admin/RebuildKeyBehaviorCache.aspx | This page allows you to clear out the cache that holds the information regarding the interactions with the end user such as:
    • Campaigns
    • Events
    • Goals
    • Outcomes
    • Channels
    • Venues

    For more information on the Key Behavior Cache see:


    Located at /sitecore/admin/RedeployMarketingData.aspx | Basically allows you to revert segments on the experience analytics as well as all the default Path analyzer maps.

    If anyone has used this and has specific information on this, please send it through.

    UpdateSocialProfiles.aspx *

    Located at /sitecore/admin/UpdateSocialProfiles.aspx | Unsure if this is one we added after installing the social connect module but you can use this if (like a lot of customers) you are moving from Sitecore 8 initial to a more recent version.

    The screenshot says it all in my opinion: