Thursday, December 19, 2013 by Tim Geyssens

It’s almost 4 months since we launched umbraco.tv. If you want see what happened since the launch and what we have in store for 2014 you can watch me tell all about that!

As mentioned in the short screenr, we would love to have your input on what chapters we should add next!

Here is what we currently have in mind (but open to suggestions of course)


  • Forms with Contour
  • Users
  • Members
  • Complete site start to finish
  • Media and Relations API
  • Custom property editors
  • Extending backend with custom sections/trees
Friday, December 13, 2013 by Per Ploug

More than 3.500 installs of v7 has been made since the release (3628 to be exact!) and we've received a lot of great feedback from the brave early adopters. We've listened and have been polishing a lot of the UI, adding missing translation keys, fixing issues around preview and issues regarding the rich text editor."

In addtion we've among other things been working on these issues: 

The biggest issue since 7.0.0 has been with deleting items from the tree, which was caused by inconsistent configuration of IIS allowing HTTP-DELETE verbs. All delete methods now use http-post instead for compatibility.

Moving appsettings and connectionstrings to seperate configuration files has also proved to be a challenge on several setups, so this has been reverted, see upgrade notes below.

In regards to security, we have fully implemented AngularJS's best practices for protecting against jsonp and XSRF vulnerabilities, as well as fixing an issue with user credentials getting logged.

Other then that we have been polishing alot of the UI, adding missing translation keys here and there, fixing a couple of issues around preview, and finally fixing issues regarding the rich text editor.

Complete list of issues fixed can be found on the issue tracker

Recommended upgrade

It is highly recommended that you upgrade from 7.0.0 to 7.0.1 - there are no breaking changes, but irons out alot of those little annoyances.

As always, you can find the release on our.umbraco.org under releases

Upgrade notes

To upgrade from 7.0.0 to 7.0.1 you will need to perform these tasks manually, the rest is handled by the installer:

  • Remove all uGoLive dlls from /bin These are not compatible with V7
  • Move appSettings/connectionStrings back to web.config If you are on 7.0.0 you should migrate these settings into the web.config instead of having them in seperate files in /config/
  • Delete all files in ~/App_Data/TEMP/Razor/* Related to issues with razor macros

The general upgrade guide applies for V7 upgrades as well, find it here

To upgrade from V6, this guide applies as well: Umbraco 6 to 7 upgrade guide

Thursday, December 12, 2013 by Tim Geyssens

Your favorite Umbraco form builder addon is now also available for Umbraco v7!


It’s the exact same version as you would run on v6 but we’ve just made some minor changes to make sure it supports v7 and it respects the v7 styling. So designing forms from the ui, conditional logic, full control over markup, prevalue sources, data sources, … it’s all still in place!’


If you are migrating from v6 to v7 and you have Contour installed you’ll also need to update Contour to the latest version (3.0.18), it’s a simply xcopy command that takes care of it! For a full overview please check our upgrading documentation http://our.umbraco.org/projects/umbraco-pro/contour/documentation/Installation/Upgrade

Of course when upgrading you won’t need to buy a new license, your existing license will still do the trick (just remember to keep it in the /bin dir)!


What’s next for Contour? Well we’ll see if we can make the UI even better and move to using angularjs and Web Api for the backoffice pages. If you have further feature request make sure to put them on our issue tracker. http://issues.umbraco.org/issues/CON

Like usual you can find Contour on it’s project page at http://our.umbraco.org/projects/umbraco-pro/contour, enjoy!

Thursday, December 12, 2013 by Per Ploug

During our very last round of testing before releasing 7.0.1 today, we unfortunately found a show-stopping isssue in our installer, and the way we handle upgrades between Umbraco 6.1.x and 7.0.1.

With an issue like this, we cannot release today, which is really unfortunate, but we need extra time to sort out this issue properly before 7.0.1 can get out.

I expect this issue to be resolved tomorrow (Friday).

Issue details on the issue tracker

Thursday, November 21, 2013 by Niels Hartvig

On behalf of the amazing core team, I’m thrilled to announce the release and immediate availability of Umbraco 7.

This is the beginning of a new era for the Umbraco project. It’s the culmination of 18 months of dedicated work, focused on bringing the project back to the roots of Editor Simplicity & Developer Happiness.

Umbraco 7 features the stable engine of Umbraco 6 powering hundreds of thousands of websites, but now enriched with a completely new, remarkably fast and simple user interface.

Umbraco 7 in action

I know you and your clients will love Umbraco 7 and we recommend that you start all new projects on this version. Once you’ve tried it, there’s simply no going back – so download it now.

Umbraco 7 is the result of incredible passion from a lot of hard working people. So thank you Per, Shannon, Tim, Morten, Sebastiaan, Paul and the many, many external contributors and testers. High five, you rock!

Godspeed, Umbraco - Share Simplicity!

Tuesday, November 5, 2013 by Niels Hartvig

The Umbraco Future is here today: After years of research, prototypes and more than five hundred beta testers, it’s with incredible joy that we’re announcing the Release Candidate of Umbraco 7 – the most important release in the history of Umbraco since version 2.0.

No botox, just a diet
Umbraco 7 is the CMS you know and love, but with a completely new User Interface. It’s not just a simple skin for the back office, but re-thought from the ground up and optimised for speed and editor happiness.

Standing on the shoulder of giants – using ASP.NET 4.5, the best server side technology from Microsoft, and AngularJS, the latest client side technology from Google – Umbraco 7 isn’t just a quick makeover. We believe it raises the bar and sets a new standard in the CMS industry of how fast and how simple working in a Web Content Management System can be.

While the back office is completely new, it uses the super stable rendering and query engine from v6. This means that you can use everything you’ve learned when it comes to implementing sites, yet enjoy a modern looking CMS working on any device – whether it’s on your desktop, your iPad or your Surface.

So what are you waiting for? Stop doing what you’re doing and start downloading and play with Umbraco 7 now (files, release notes and details in the link)!

Thursday, October 31, 2013 by Niels Hartvig

TL;DR: We’ve made more changes to the last phase of Umbraco 7 than originally planned and therefore it’ll need more testing. Release Candidate is coming this Tuesday, Release is postponed three weeks. Our Core Project Manager is not to blame!

First of all, based on feedback from the alpha and beta, we put in substantial more changes than planned, so considering the amount of new code written between beta and the release planned today, it would be irresponsible to go straight to final release without additional testing.

Normally these changes to the release schedule would be caught by our Core Project Manager Sebastiaan Janssen, but I had moved him to Umbraco as a Service the last couple of weeks. The old saying of not knowing what you have until it’s gone, is once again true. Lesson learned!

As we need one final round of public testing before the release goes out, we’re preparing a release candidate this week which we’ll release on Tuesday November 4th.

Then we’ll have a final - and extended - round of testing and we will release the 7.0 final release on Thursday November 21st.

As for Umbraco 6.2 we haven't got a release date planned, but it'll be post v7.

Friday, October 11, 2013 by Per Ploug

It's been 2 weeks since we did the Umbraco 7 alpha, and since then, we've been working hard on finalizing APIs and database change, since the beta release date is the final deadline for changes of this kind.

So today, we're releasing the beta of Umbraco 7 aka "belle". as you will see, we've been going through the ui and streamlining it, we've been fixing most of the reported issues from the alpha, and finally Shannon has been hard at work finalizing the APIs for the new member editors, tagging and loads more internal plumbing.

Going forward from here, we will focus on tightning up all those added features and sort out remaining bugs, there a couple of property editors that still need some adjustment, or get additional functionality added, but we're looking at a close to feature complete version of Umbraco 7.0

So, I hope you enjoy the beta, take your time to report any issues, big or small, so we can make the final release really solid.

Get the release from our.umbraco.org here

Report any issues you find on the tracker here

New In beta:

Container document types - loads nodes in a table view instead of the tree


  • Serverside data is localized
  • Clientside API for localizing angular views
  • Directives for localizing elements and labels
  • Ongoing localization of the new UI bits

Member editor

  • the member editor has been ported over to angular
  • Member trees have been ported over to the new format
  • internally it uses the new memberservice


  • now supports direct access to the context menu for each result

General bugfixes

  • Tree tweaking and syncing
  • Visual indication on node state in tree
  • Menu folding
  • dialogs consistency

New property editors

  • Related links
  • Member picker w/ search
  • Multinode treepicker with search


  • you can now configure plugins and buttons as in V6
  • insert internal/external links
  • insert macros

Internal plumbing

  • You can now save json objects directly, no need for csv's or funky xml conversion
  • New Tags API and data structure


  • Timeouts shows the login, but keeps the editor state
  • Active logout clears the app
  • Login with a different user clears trees and editors

Plugin developer support

  • Developers can now store all their editors and trees inside /app_plugins/plugin
  • Better validation of package manifests
  • general dialogs for links, images
  • completed the property editor, prevalue editor, parameter editor apis
Monday, September 30, 2013 by Sebastiaan Janssen

We've just released a small update for people using Umbraco 6.1.x that fixes two issues:

  • Sometimes date parsing went wrong while saving items in the backoffice and that would lead to one of those feared Yellow Screens Of Death
  • On some specific windows 2008 server configurations people would get errors trying to access their site.

In addition, people trying out Visual Studio 2013 RC will be happy to learn that the problems with the Microsoft Browserlink tool have now also been fixed.

These and a few other small issues have now been fixed in Umbraco 6.1.6

The upgrade is very simple, just overwrite the bin folder, no aspx files or config files have been changed.

Friday, September 27, 2013 by Per Ploug

I'm so happy to finally be able to present the very first public alpha of the next version of Umbraco: Version 7 AKA "Belle".

This very first Alpha release is meant as an early preview of the finale release which is still about a month away. Its also a great opportunity for you to test your current implementation and packages, so you know what to do when its time to upgrade, and most importantly, you give us much needed feedback that we can turn into improvements in the final release.

We have prepared a release page on our.umbraco.org which outlines the different areas we would love to have tested and get feedback on, you can find those instructions here, along with a link to download 7.0.0 Alpha.

There is a number of known issues:

  • Preview currently doesnt work
  • The datepicker is reported to not work in IE 10
  • We have not had time to polish the content dialogs (sort,move,etc), so several of them will look "off"
  • If you enter wrong credentials on login, it requires you to edit both name and password
  • During install, you cannot pick a skin for the startkit
  • Search context menu is currently not active
  • If you swictch user, the trees do not reset, so a browser refresh is needed
  • Help isn't implemented yet
  • TinyMCE Dialogs are incomplete and have inconsistent layouts

Finally, on behalf of the team who has been working so hard on getting to this point, I hope you enjoy this very first release of Umbraco 7, take the time to try out the new things, and give us feedback, both good and bad - we really appreciate it.

Thanks and have a nice weekend, - this calls for a Campari!

Thursday, September 26, 2013 by Niels Hartvig


Happy days at the HQ as we're approaching the end of a long journey with the near release of Umbraco 7 - the artist formerly known as "Belle". I'd love to share where we are, what to expect and most of all hopefully calm a couple of concerns.

The same stable engine as Umbraco 6

While the version number is bumped up a notch, the runtime engine that runs your site and implementation is the same. This means that a website, implemented on v6 would work the same on v7 when it comes to your templates, macros and custom code - whether it's based on Webforms or MVC. This is really important to know, if you're concerned about the stability of a new major version of Umbraco.

A new User Experience

What's new in Umbraco 7 is of course the User Experience - the "Back Office" is completely new. With Umbraco 7, the project is returning to the roots from back when I originally created Umbraco, where the majority of the focus in Umbraco was making a tool that was easy for non technical people to use. A tool that supported the daily tasks of a website editor - back when they were called "Webmasters".

A lot has changed since 2003 and we believe that editors deserve a tool that's designed ground-up to support their daily tasks - from simple content editing on an iPad, over editing photos with a couple of touches, to managing large amount of content. The majority of the focus and resources in 7.0 has been on re-designing and re-writing the Content and Media areas of the back office. Made in AngularJS - an open source Javascript framework curated by Google - Umbraco 7 is now as lightning fast as it's simple and beautiful.

Not all roses

While we've begun the work and Umbraco 7 is much prettier and easier to use than Umbraco 6, we've only just started. There's plenty of things that we'd have loved to add to 7, but will have to wait for later. We believe that we got the foundation right and solid, which we find more important than new bells and whistles.

It also means that we had to keep the focus solely on Content and Media, despite that we have plenty of ideas to also improve the user experience for designers and developers. It'll come later this year. For now, we were able to find a simple way of re-using Umbraco 6 parts and while they won't be as slick and fast as native, re-written Umbraco 7 components, they'll do the job.


More than 70 developers attended our “Belle Lab” in London earlier this month, where Per Ploug Hansen showed how to write new Property Editors for Umbraco 7 – photo: Douglas Robar

Breaking changes

With a re-written Back office, breaking changes is inevitable. In Umbraco 7, old custom Property Editors won't work, neither will Macro Parameter Editors. They'll need to be re-written and we've been in touch with the most popular package developers to encourage them to start the work and many have done so.

We've also done our best to make sure that old custom sections, trees and apps work. But some packages might have used a bit too neat "tricks" to customize the back office and they could break. We don't have the resources to check all the packages out there, so if you're a package developer, make sure to test your packages and submit any issues you encounter. Some might be possible for us to fix, some might require you to do things differently. Make sure to read the documentation on customizing Umbraco 7 and follow best practices. It'll also make your package more compelling.


Soon we’ll be able to high five to a fantastic new Umbraco version that we all collaborated on testing – photo: Douglas Robar

Let's get there together

We're releasing an alpha of Umbraco 7 tomorrow. It's an alpha. Not a beta and definitely not a release. It means that the foundation is done, that there's feature freeze and no more API changes. It also means that it's not polished and only have had limited testing. In other words, there's bugs and it's not for production.

But we need your help. The earlier you start testing Umbraco 7 and submit feedback, the sooner you'll have a stable product for your clients. And the more you do it - rather than hoping we or someone else in the communtiy do it for you - the more rock solid it'll be.

Testing Umbraco 7 will probably be an emotional rollercoaster ride. From wow to meh. From the feeling of "wow this thing is beautiful and fast" to "did anyone even test this thing". But hang in there and help us with reports. Then do it again when we've fixed loads of issues and release a beta.

You'll love it in the end and so will your clients. Here's to a bright and "belle" future of Umbraco - and for everyone - including you - to be a part of making it happen.

Wednesday, September 18, 2013 by Sebastiaan Janssen

As Niels blogged about a few weeks ago, this fall is going to be amazing for us Umbracians and we're excited about all the great stuff that we're working on for you.

With the recent release of Umbraco 6.1.5 we feel like we have a great version out there for everybody to use in the next few months and with that we've been prioritizing the work on Belle and Umbraco As A Service (UAAS) over doing yet more bug fixing on core.
While we would love to do both, we also know that context switching is the enemy of productivity. We're wrapping up some great new stuff in UAAS that is guaranteed to make all of you very excited but we need to spend some more quality time on doing that over releasing a new version of Umbraco.

With that said, we've decided to delay the release of Umbraco 6.2.0 so that we can build on it some more, optimize it for use on UAAS and make sure we test all of the new goodness that we're putting in there.

This is also a call to arms, we would love a bit of help with making Umbraco even more awesome! We're organizing a PetaPoco Hackathon early November, your chance to work with this cool new micro ORM we've been talking about for a while now.

Speaking of priorities: If you're in or near Copenhagen on Sept. 27th then why not join me and Per for another edition of Umbraco drinks KBH?

Sunday, September 1, 2013 by Sebastiaan Janssen

Just a quick update: we've just released Umbaco 6.1.5 after discovering a particularly annoying bug where if you had an image cropper on a media type then drag & drop uploading didn't work any more and there would be null reference errors in DAMP. 

We also had a report of an event handler not doing its work any more, which has now also fixed along with a fix to make sure the 301 URL tracker keeps working.

If you're affected by these issues, you can easily upgrade to 6.1.5 (as always with a path release, there's no config file changes nor database changes).

We're putting in additional unit tests and will be paying better attention to changes involving event handlers to help prevent us from releasing a version with these kinds of defects in the future.

Thursday, August 29, 2013 by Per Ploug

We have been talking about Belle / Umbraco 7 since april, showing off mockups, prototypes, and somewhat working applications. Then we went a step further and started releasing nightly builds and documentation for developers, and now we go a step further again.

You can’t learn everything from a written tutorial or from playing around with a site on your local machine, sometimes, you just need to see the entire context and flow to really get the idea.

So Friday August 30th, 2:00 pm (GMT+1) , I will be hosting a live coding session on Google Hangouts, where I’ll go through how you build an editor component for Umbraco 7, how you configure it, and how you can start taking advantage of the new javascript APIs to help you build great editor UIs.

It will be all javascript and html, no c#, no slides, and with a working editor on a live Umbraco 7 as the end result.

I hope to see you there, it will be live streamed from this youtube channel, and the direct link will also be posted here on the umbraco blog.

During the hangout, I will try to answer questions, which you can post on twitter to @perploug or as a comment on this blog post.

Stream below, it will go online at 2PM

Thursday, August 22, 2013 by Tim Geyssens

The Fall of Fabulous releases in the Umbraco Ecosystem has begun early. Today we are incredibly proud to announce that we've released the brand new Umbraco TV site.


70 up to date vids teaching you all about Umbraco v6

More than three hours - and much more to come - of completely new Umbraco Tutorials optimized for the very latest versions and ready to be watched where ever you are and what ever device is in your hand. It works on PCs, tablets and smartphones and just like Netflix, it'll remember where you left.

Earn badges

To make sure you fully understand the content of the videos you can  test your knowledge by taking a multiple choice quiz for each chapter. If you score at least 80% you’ll earn a new badge for your profile.

Login with your existing account

Although the tv site is now separated from umbraco.com you won’t need to register again but can just login with your umbraco.com account. Everyone with an active tv subscription should have access (If you're a Gold Partner, you have free access to unlimited TV accounts). If you are interested in getting a subscription please take a look at our plans http://umbraco.tv/plans-signup/ (access starting from €12,50 a month).

What’s next?

We’ll we are in the progress of recording new chapters (including UmbracoApiController / Media / Events) but it would be awesome if you could let us know what you would like to see next so we can consider that while planning the new batch of videos.

So get learning http://umbraco.tv !

Thursday, August 22, 2013 by Sebastiaan Janssen

Good day, dear website visitor, wherever you are!

Today markes the day of a spectacular new release of Umbraco, the one we named 6.1.4. It has bug fixes (surprise!) and is generally more awesome than the previous version. 

Shannon and Morten have jumped on the perfomance bandwagon and they've been improving perfomance left and right on their Freedom Fridays. Yeah, to some people performance tuning is actually a hobby.. go figure.
Other than that we've fixed some annoying bugs and are once again thankful for the lovely pull requests we've had from the community, keep them coming! 

A little bonus for the NuGet lovers out there: If you are using the Publish-feature in Visual Studio you should be happy to know that we now have a build script included that makes sure to copy the umbraco and umbraco_client folders (which are not included in the Visual Studio solution) to the deploy package or file system.

So, make sure to jump on the brand new umbraco.tv and start learning what this v6 thing is all about so you can use this latest release more effectively!

Make sure to download 6.1.4 beforehand so you can follow along with the videos.

Thursday, July 25, 2013 by Sebastiaan Janssen

Today marks the release of Umbraco 6.1.3. Yes, just one version, your prayers have been answered and you no longer have the heavy burden of having to choose the right version for you. ;-)

So what's new? Notably:

  • The default datatype for a new property on a document type is now Textstring (which is by far the most frequently used) of course this is configurable in the umbracoSettings.config so you can choose your own preferred default
  • We now no longer truncate messages in the MiniProfiler so you can see all the information you need
  • The installer now has a checkbox for using Integrated Security for SQL server databases

Other than that this is a regular patch release, with 35 bugs fixed PLUS a whopping 20 (!) contributrions from you guys: the community. We love that the people who are passionate about Umbraco want to help fix what annoys them and the buzz is that now that the source is up on GitHub that helping out is so much easier. Keep up the good work, #h5yr!

Pull requests

Speaking of contributions, some of the larger pull requests we could use a little help on, if you're not subscribed to the development mailinglist yet, you might want to keep an eye on it as I'll regularly post screencasts to gather feedback. For example:

If you have any input on these or future pull requests then make sure to let your voice be heard. We don't bite (hard).


Time for you to download and install our shiny new release of Umbraco 6.1.3!

Sunday, July 14, 2013 by Sebastiaan Janssen

So you've heard about this MVC thing and are still a little scared of it, maybe you want to try it out a little bit but you're not sure where to start? 

Just so you know, I'm not an ASP.NET MVC expert and am still learning more about how it works every day. But I know enough to be dangerous.. and do some pretty cool stuff with it, easily. I really HATE the WebForms/UserControl way of adding stuff in my "view" (the ascx file) to do validation and form field rendering. I think the way it's done in ASP.NET MVC is much cleaner, easier to use and easier to debug. Also, Model Binding is fantastic (although I hear that's possible in WebForms now as well).

In this post I'll show you how to create a simple contact form that, optionally, allows people to write testimonials. The testimonials will be stored as nodes in Umbraco using the ContentService (new in Umbraco 6). I start out with a WebForms site and will move everything over to MVC after that.

Bonus: the full site is available for download at the bottom of this post!

MVC - Not too scary

A few months ago, I finally figured out why MVC shouldn't be scary for WebForms developers because in their basis, they are very similar. 

Think about it, the ascx file could be considered to be the View, the ascx.cs file looks a lot like a Controller and the ascx.designer.cs file looks an aweful lot like a Model: 

Usercontrol -mvc

The only difference is that Visual Studio will generate the designer file for you and you can visually move items from your toolbox on your usercontrol's surface. This will then produce some HTML over which you have little control.

With MVC you take back that control, which leads to a little more manual work but in my opinion that's completely worth it. If you're lazy like me though, you can always use the Scaffolding NuGet package to automate a lot of this work.

Let's get started

Enough talking, show me the code! Okay, relax, it's coming.

So let's start with the UserControl by producing this tagsoup thing (yech!).


In the codebehind I manually fill the "Type of inquiry" dropdown with some values but this data could easily come from some data source like a database table. I have a mail helper class to help me send an e-mail and I need to give it some of the values from the form.

Note that when the type of inquiry is a testimonial, I create a new node under the Testimonials node in Umbraco. Also notice that I'm not using the old Document API so only a few lines of code is needed to create a new document, set the values and then you can just say: SaveAndPublish, awesome!

public partial class ContactUs : UmbracoUserControl
    protected void Page_Load(object sender, EventArgs e)
        ContactType.Items.Add(new ListItem("Contact", "contact"));
        ContactType.Items.Add(new ListItem("Request for quote", "quote"));
        ContactType.Items.Add(new ListItem("Testimonial", "testimonial"));

    protected void SendMail(object sender, EventArgs e)
        if (Page.IsValid)
            var mail = new Mail.MailVariables
                            From = Email.Text,
                            FromName = Name.Text,
                            Content = string.Format("Contact type: {0} <br /> {1}", ContactType.Text, Message.Text),
                            Subject = "Contact mail from site",
                            To = "contact@example.com",
                            ToName = "Site Owner Name"

            if (Mail.SendMail(mail))
                if (ContactType.SelectedValue == "testimonial")
                    CreateTestimonial(Name.Text, Message.Text);

                Form.Visible = false;
                Thanks.Visible = true;

    private void CreateTestimonial(string name, string body)
        var contentService = Services.ContentService;
        // This should be a macro parameter of course :-)
        const int testimonialPageId = 1068;
        var content = contentService.CreateContent(name, testimonialPageId, "umbTextPage");

        content.SetValue("bodyText", body);


So I wrapped this UserControl in a macro and add that macro to the Contact.master template. 


Wonderful, I have a working form now that optionally creates testimonials if I select that from the "type" dropdown. Just what I wanted... Almost.

Convert Masterpages to MVC Views

I really wanted to explore MVC and make a clean implementation. In order to do that, I decided to convert all my templates to MVC Views. Which really is surprisingly easy.

Let's start with a few configuration options:

  • In umbracoSettings.config set the defaultRenderingEngine to Mvc (instead of WebForms)
  • In the web.config, add two new keys in the appSettings section that are going to help us later with client-side validation:
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />

Okay, with that out of the way, create a new file in the Views folder called umbMaster.cshtml. This is the exact same filename as the masterpage had. Into umbMaster.cshtml I copy everything that is already in umbMaster.master.

Then I can make a few simple changes to turn it into a full MVC view. For this, it's easiest to use the Masterpages2Views cheatsheet and just find everything that says runat="server" and replace it with the MVC View equivalent.

Here is all I had to do for the masterpage I had, 10 changes, 1 of which is adding "MVC Template" in the text somewhere to make sure everything worked as expected (click for a larger version):


Even fewer changes are needed for the umbTextPage template. Again, I'll do the same thing: make a umbTextPage.cshtml file, copy the contents of umbTextPage.master into it and make a few changes to turn it into a View.


From UserControl to SurfaceController

Now, on to the meat of the matter: moving our form to MVC. Let's start with a model. Remember, it's a lot like the designer.ascx.cs file, it holds the fields that we'll be using on our form:

public class ContactModel
	public string Name { get; set; }

	public string Email { get; set; }
	public string Message { get; set; }

	public List ContactTypes { get; set; }
	public string ContactType { get; set; }

Nice, the validations that I previously had to put in the tagsoup on the ascx file are now added as simple attributes on the fields here.

Next up, I can make the Controller and you'll notice that the code is almost completely the same as the codebehind I had on the UserControl earlier. For the most part I only changed Email.Text, Name.Text and Message.Text to model.Email, model.Name and model.Message. Easy:

public class ContactUsController : SurfaceController
    public ActionResult HandleContactSubmit(ContactModel model)
        //model not valid, do not save, but return current umbraco page
        if (ModelState.IsValid == false)
            return CurrentUmbracoPage();

        var mail = new Mail.MailVariables
            From = model.Email,
            FromName = model.Name,
            Content = string.Format("Contact type: {0}<br />{1}", model.ContactType, model.Message),
            Subject = "Contact mail from site",
            To = "contact@example.com",
            ToName = "Site Owner Name"

        if (Mail.SendMail(mail))
            if (model.ContactType == "testimonial")
                CreateTestimonial(model.Name, model.Message);

            TempData.Add("Success", true);
        return RedirectToCurrentUmbracoPage();
    private void CreateTestimonial(string name, string body)
        var contentService = Services.ContentService;

        // This should be a macro parameter of course :-)
        const int testimonialPageId = 1068;
        var content = contentService.CreateContent(name, testimonialPageId, "umbTextPage");

        content.SetValue("bodyText", body);


Of note are these two calls:

  • return CurrentUmbracoPage();
    This will return the contact page with everything in the form still filled in, if client side validation failed and we notice an error on the server side, I want return to the filled in form to show the errors and make it easy for the user to correct them.
  • return RedirectToCurrentUmbracoPage();
    This does a full redirect to the contact page, meaning that when you then hit refresh in your browser you won't get asked if you want to post the form again, instead it just loads the empty form again.

Now for the final pieces of the puzzle: the View. All of my views, including the Contact.cshtml have to inherit from UmbracoTemplatePage so that the relevant Umbraco bits are added into it. Inheriting from this class allows me to use things like Umbraco.Field and Umbraco.RenderMacro. The model for these views is the "current page".

However, to be able to render the form and our validation, I need a view that uses my previously made ContactModel as a model, not the current page.
So what I can do to achieve this is render a partial view from my UmbracoTemplatePage. Hence, my Contact View looks like this (note the Html.RenderPartial and me passing the values for the dropdownlist in here, which is not best practice but easier for this example):

@inherits UmbracoTemplatePage
    Layout = "~/Views/umbMaster.cshtml";

<div id="page-bgtop">
    <div id="content">
        <div class="post">
            <h2 class="title"><span>@Umbraco.Field("pageName")</span></h2>
            <div class="entry">
                    var contactTypes = new List<SelectListItem>
                           new SelectListItem {Selected = false, Text = "Contact", Value = "contact"},
                           new SelectListItem {Selected = false, Text = "Request for quote", Value = "quote"},
                           new SelectListItem {Selected = false, Text = "Testimonial", Value = "testimonial"},

                    Html.RenderPartial("~/Views/Partials/Contact.cshtml", new OneContact.Models.ContactModel { ContactTypes = contactTypes });
    <!-- end div#content -->

    <div id="sidebar">
    <!-- end div#sidebar -->
    <div style="clear: both; height: 1px"></div>

 So now all that's left to do is create a form in the Partial View, which looks like this:

@using OneContact.Controllers
@model OneContact.Models.ContactModel
    var formSent = false;
    var success = TempData["Success"];
    if(success != null)
        bool.TryParse(success.ToString(), out formSent);

<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@if (formSent)
        <p>Thanks, we'll get back to you soon!</p>
    using (Html.BeginUmbracoForm<ContactUsController>("HandleContactSubmit"))
        @Html.LabelFor(model => model.ContactType)<br />
        @Html.DropDownListFor(model => model.ContactType, Model.ContactTypes)<br />

        @Html.LabelFor(model => model.Name)<br />
        @Html.EditorFor(model => model.Name)<br />
        @Html.ValidationMessageFor(model => model.Name)<br />

        @Html.LabelFor(model => model.Email)<br />
        @Html.EditorFor(model => model.Email)<br />
        @Html.ValidationMessageFor(model => model.Email)<br />

        @Html.LabelFor(model => model.Message)<br />
        @Html.TextAreaFor(model => model.Message)<br />
        @Html.ValidationMessageFor(model => model.Message)<br />

            <input type="submit" value="Submit" />

A few things to note here:

  • In the ContactController I created earlier, I added some TempData when the form had been successfully posted. I use that here to either show the form or the success message.
  • I've added a few javascript libraries that will help with client side validation.
  • If you're used to "regular" MVC, you'll notice that I'm not using Html.BeginForm but Html.BeginUmbracoForm. This is so that Umbraco knows how to do the routing correctly.
  • The HTML produced by Html.EditorFor is already very clean and simple, we could also just say something like <input type="text" id="Name" /> and that would work perfectly fine as well and allows me to have full control over the HTML. 

Of course I could've added any HTML that my frontend developer gave me to get the exact form styling that they've defined. My frontend developer was late though, so I just put in some line breaks.. ;-)


So in short what have we done:

  • Copy our complete masterpages to views with the same name and tweaked them a little
  • Created a Model to hold our form fields
  • Created a SurfaceController and copied all of the businesslogic from the UserControl's codebehind in it, with a few easy tweaks
  • Created a View and a Partial View to show the form and be able to post it, again, using most of the HTML that we already had in our masterpage earlier

Once you wrap your head around it, you'll realize that making templates and forms the MVC way is not so hard and you can move on to more advanced scenario's, taking advantage of AJAX forms for example, and Umbraco Partial View Macro's to pass in parameters, or MVC's powerful EditorTemplates and DisplayTemplates. The world is your oyster!

The complete site, including the source code is available so you can run it play with it yourself and copy the code for your own purposes. To log in to the backoffice, username: admin password: test

Thursday, June 27, 2013 by Sebastiaan Janssen

First for some Umbraco 4 news. A few months ago, Niels created (but never published) a blog post called "Who's afraid of v6". Then I had a quick look at the download numbers and install statistics for v4 and v6 and it turns out: Nobody was afraid of v6! In fact, I've just looked at them again and 4.11.9 has has had 400 downloads whereas 6.0.6 has nearly 5000.

So, after checking with our friends at the CodeGarden retreat, we decided to stop active development on v4. Of course if any security issues are found, we'll provide patches for v4. 
Due to two mistakes we introduced in 4.11.9, we have made a few fixes and we've released 4.11.10 today so that the final version of v4 is super stable.


And then we have some v6 updates for you, these are regularly scheduled patch releases so nothing too exciting in there. 

As of 6.0.7 and also in 6.1.2 you will be able to use an interface for route hijacking controllers which is something that a few of you have requested to make your MVC lives easier. Also, when you install a package update, it will now be listed only once in the packages section and the details of the package will show a list of previously installed versions. This makes the installed packages tree a lot less confusing.

Then there's some regular bug fixing, as always your detailed bug reports are very welcome and help us out a lot. Thanks!

For you NuGet users, the files in config folder are no longer overwritten by default so you can choose to merge them from the packages folders instead. That way your customizations aren't overwritten and you're not required to go through the merge from the backup folder. The Web.config file is still backed up and then overwritten as before.


BoratSpeaking of helping out: we haven't formally announced it on the blog yet, but the core of Umbraco has now been moved over to GitHub, where social coding is happening! And boy have we noticed how easy it now is for the community to contribute. We've already been able to accept 26 of your contributions and 15 of them are still pending. This all in two weeks time, awesome!

A lot of those are easy fixes which you can do easily from within the GitHub site just using your browser, which is a tremendous help to us. Thank you so much to all of the contributors, #h5yr!

If you would like to help out too, we have documentation on contributing up on Our Umbraco. GitHub has made it a lot easier, if only because it's much much faster than CodePlex.


This also means that we've said goodbye to another old friend: CodePlex. So the Umbraco downloads are now available from Our Umbraco. Here's some direct links for you:

Sunday, June 9, 2013 by Niels Hartvig

Retreat 2013 - Photo by Douglas Robar

This weekend I’m in a country house together with 15 fantastic Umbraco people. We’re talking about the core, the community, the project and where all of it should head the next twelve months. Being the sixth year in a row to do that, it’s fair to say that it has become a tradtion – and a good one. It even has a name – The Umbraco Retreat.

When I created Umbraco back in 2003, it was because it was the tool I wanted when I built websites for my clients – the classic story of scratching your own itch. But for a long time, I haven’t done websites for clients and neither has anyone else in the HQ. It’s great because it means that we have the hours to work on the core, that I didn’t had back when I did client sites. But when you work on the Umbraco project every single day, it’s easy to get a tunnel vision in terms of what’s important.

That was the reason for starting the retreat back in ‘08; “we have all these great conversations on the mailing list, but what would happen if we actually met up and could walk the walk?”. So every year since 2008 we’ve invited the most active people on the core together with the MVPs to spend four days prior to CodeGarden at the retreat and a lot of great and bold ideas has originated from this event.

This year is filled with amazing energy as Umbraco has found back to its roots again. We’re talking Umbraco 7 (“Belle”) and how we can ensure as much backwards compatiblity as possible while not being stuck in the past. We’re learning about AngularJS which is the foundation for the future Back Office client in Belle. We’re talking about improving Our and are fortunate enough that a group from the Danish and Innovation line at the Danish Technical University is dropping by and are presenting a report on how the work system of Our can be improved.

Most important and wonderful though, is the conversations about what Umbraco as a project is and should be. And we can’t wait to share the thoughts, code and energy from these days with 350 people at CodeGarden next week.

Godspeed, Umbraco.

Tuesday, June 4, 2013 by Anders Stentebjerg

We're thrilled to announce the return of the Umbraco awards at this year's CodeGarden. We actually did that a while ago, but only on Twitter and we forgot to blog about it. So apologize for the short deadline – it is, however, worth the rush to submit an entry!

There's a lot of great Umbraco work going on in our community with people using Umbraco in many impressive ways. Now it's time to get all that fantastic work out in the limelight. We've made it free to participate and we'll have the following categories.

Best Technical Solution
In this category we'll promote the best and most innovative usage of Umbraco, the concepts and API's. So the focus is on the technical usage of Umbraco. So show us the clever things you have done with Umbraco.

Best Designed Site
We're looking for the designs that blow you away. Not only visually, but also in respect to web standards. Where stunning design meets clean markup.

Best Integration
Usually Umbraco doesn't stand alone and is often integrated with other systems. We've got an award ourselves for integration (BNP CMS Awards) and we'd like to see how you're using Umbraco as a hub for other systems. 

Last years winners


Best Design: livingroom.gg

"livingroom.gg was selected because it is beautifully crafted, easy to use & mobile friendly. We were impressed with the thought put into the responsive layout and we found it extremely intuitive to use. It demonstrates current web trends in an appropriate way."

Best Integration: Giltrap.com

"We were impressed with their integration of a full email marketing suite into the back office of Umbraco. Editors were able to create send and manage their campaigns directly from the back office without the need to interact with the third party tool directly."

Best Technical: Folkeskolen.dk
"Folkeskolen has massive amounts of content. Content items are stored in a custom DB which is loaded into a custom Lucene engine for indexing and faceting. Custom content is edited via a custom version of DEWD. The Lucene implementation allows for incredibly quick searching. This solution is packed with stuff that makes your average developers head go BOOM!"

Case studies
Here at the Umbraco HQ, we think that with all these great submissions that it would be a brilliant idea to turn these into case studies. So by entering into the Umbraco Awards please make sure you and your client agree that we may use your submission as a case study on the umbraco.com website - its great exposure for you and your client.

How do I enter?
To enter the Umbraco Awards is simple, just fill out the form over on the CodeGarden13 website.

But what are you waiting for? Come and show us your best stuff and see if you can win an Umbraco Award that you will be proud to show off to your clients and colleagues. With it being an Umbraco Award you can expect the award itself is something unique and cool that you will want to show off.


  • An individual or company can only participate once in each category
  • Only submissions with full details are evaluated & considered for nomination
  • The submitter must be the creator of the work
  • Voting will be done by the Umbraco HQ


  • Deadline for submissions is Thurs 6th June
  • We'll announce the final winners during CodeGarden13


  • If you submit a website to the Umbraco Awards you will most likely want to buy a ticket to CodeGarden, so that you or your company can pick up the award in person if you win.
  • By entering into the Umbraco Awards please make sure you and your client agree that we may use your submission as a case study on the umbraco.com website - its great exposure for you and your client.

One last thing - Good Luck!

Tuesday, June 4, 2013 by Niels Hartvig


It’s time for the final interview in our series on tips and tricks for going to CodeGarden. Previously, I’ve spoken with CodeGarden veteran Lee Kelleher and Lotte Pitcher who had her first time at CodeGarden last year. This time, it’s my pleasure to ask the same questions to the Dutch Package Machine aka The Umbraco Don of SEO aka Mr. Richard Soeteman.

Who are you and why is Umbraco and CodeGarden relevant to you?

Hi I’m Richard Soeteman. People might know me from some packages I’ve created, like CMSImport for example.  I’m using Umbraco on a day to day basis since 2008 and therefore it’s very important to attend Codegarden every year. Codegarden is not like a regular congress where it’s only about sessions. Codegarden has some great sessions but maybe just as important are the talks with other attendees between sessions and lunch where you learn a lot how others are using Umbraco.

If you have a specific question just ask someone and I’m pretty sure you get the answer to your problem before you go home. I think that is the true spirit of the Umbraco community, just a bunch of friendly people that will help you where they can. But besides that the conference is very hands-on too. Sessions are usually about things you can use the next Monday you return into your office. 

What's your best memory from previous CodeGardens?

I think the best memory (besides boat party, playing bingo, pillow fights, crashing someone’s office, oh and great sessions too  ;-)) comes from the the first Codegarden in 2009 I attended. This was just awesome because I finally had the chance to meet with the people I knew for a very long time from twitter, or the forum in person. And this happens every year since the community is growing fast. For me that alone is a reason to attend Codegarden every year.

If this was your first CodeGarden, what's your top three list of tips you'd wish someone had told you?

  1. Don’t be shy, you can talk to anyone. There are no ego’s at this conference.
  2. Bring some shorts and sunblock, it can be hot in Copenhagen in June.
  3. Bring your laptop, most likely you get some inspiration during this week.
  4. Don’t bring to much luggage you never know what you might win at the Bingo ;-).
  5. Don’t leave Friday. Copenhagen is a lovely city. Take at least one extra day to visit the city.
  6. Don’t think you can get any work done during the week.
Monday, June 3, 2013 by Sebastiaan Janssen

While for the most part the 6.1.0 release a few days ago went very well, some of you did run into some oddities that we hadn't seen in testing so far:

  • A few of you have seen duplicate nodes appear in your content tree, this problem showed up only if you had multiple upload fields on a document type and one or more of them was holding an image
  • Right-clicking on an item in the Media section would only allow you to refresh it, but create, delete, move and were gone (ouch!)
  • Updating template inheritance in the backoffice didn't save the inheritance correctly
  • The Examine dashboard section we promised, wasn't actually in the Dashboard.config file, so you had to enable it manually

So, we immediataly worked on fixes for those issues, sorry for the inconvenience.

6.1.1 is now available for download, enjoy!

Monday, June 3, 2013 by Niels Hartvig

7185916463_195c5eb040_bLast week we heard Lee Kelleher share his experiences from being at four CodeGardens before. This time, it’s a bit different. I asked Lotte Pitcher who was at CodeGarden for the first time last year, the exact same questions.

Who are you and why is Umbraco and CodeGarden relevant to you?

I run PAM Internet, a small web development company in London.  We develop with ASP.Net, SharePoint and, of course, Umbraco. 

We discovered Umbraco 18 months ago, and wish it had been earlier.  Technically, it was such an obvious fit for our years of .Net experience.  It is now, definitely, our preferred framework to use to build public facing websites.

At CG13 I expect to learn, and to be inspired.  As a small business owner, I find it hard to make much time for either normally. At CodeGarden there are the obvious things, such as hearing about packages I was unaware of, and seeing what the HQ is up to.  But I also really enjoy the opportunity to see how other developers work, and what tools they use. 

What's your best memory from previous CodeGardens?

The boat trip at the end of the first day of CG12. 

Last year was my first CodeGarden, and I went on my own knowing only one other person (Darren Ferguson who had done my level 2 training course).  Having only used Umbraco for about 6 months I was a bit daunted by spending 3 days with Umbraco-geniuses.  I’d been to a couple of Microsoft conferences previously and, whilst very educational, found them soulless and impersonal.

It was on the boat trip that I realised just how different this ‘conference’ was.  These weren’t ubergeeks – but a bunch of fun, friendly and interesting people who happened to do a similar thing to me. This was a community I wanted to be part of!

If this was your first CodeGarden, what's your top three list of tips you'd wish someone had told you?

  1. Tell your office to manage things as though you are on holiday.  Chatting in the breaks and the evening to other Umbracians is just as important as attending the sessions (if not more).  You will be missing out if you are back in the hotel on your laptop as soon as the formal sessions finish.
  2. Make a note of the people who have helped you out: whether with a package, on the forums or who post useful stuff on Twitter.  Seek them out, say hello, and offer to buy them a beer to say thank you. 
  3. Get plenty of sleep beforehand.  Seriously!
Friday, May 31, 2013 by Niels Hartvig


In the spirit of sharing, I’ve asked Lee Kelleher, Lotte Pitcher and Richard Soeteman what they think people coming to CodeGarden ‘13 should know.

Today we start with Lee:

Who are you and why is Umbraco and CodeGarden relevant to you?

Hey, I'm Lee Kelleher, I've been using Umbraco since 2007 (v3.0.3). Attended my first CodeGarden in 2009 and have been going ever since.

For me CodeGarden is the centrepiece of the Umbraco community, it is a place where like-minded people come together through knowledge and sharing of their favourite CMS.

What's your best memory from previous CodeGardens?

Tricky question, there are so many great memories. I guess my best memory was at the end of day 1 at CG09 - it was crazy and totally unexpected. Whilst chatting away, I was promptly told to pick up a couple of glasses, a bottle of champagne and head to a bus. Still no idea of what we were doing (or where we were going), we soon arrive at the canal. The boat tour is an excellent way to see beautiful Copenhagen whilst having beers (and champagne!) with friends.

If this was your first CodeGarden, what's your top three list of tips you'd wish someone had told you?

  1. Things your mother would say: put on sun-cream; keep hydrated - drink lots of water; stay warm (at night); etc
  2. Don't worry about schedule conflicts - all the sessions are recorded, if you miss one then you can watch it later.
  3. Don't be shy! You may be starstruck when you recognise people from the forum and packages, but we're all friendly - come say 'Hello!'

#h5yr, Lee – see you in less than two weeks!

Thursday, May 30, 2013 by Sebastiaan Janssen

Indulge LGYes, you are reading this correctly THREE new shiny releases of Umbraco today.  Of course all three releases have fixes in it for the recently discovered security vulnerabilities (make sure you take action now if you're still on older versions!). The most unexciting versions of today are the bugfix releases 4.11.9 (changes) and 6.0.6 (changes).

Okay, so not that I've blogged about those let's get to the meat of the matter: 6.1.0.

So what's new in 6.1.0?

  • UmbracoApiControllers (docs) - These are regular ASP.NET Web API controllers but you don't need to do any work to set them up and they come with all of the Umbraco Authorizations (role and/or membertype based) out of the box. It's "/base" on steroids!
  • There's now a Examine management dashboard in developer section, making it easier for you rebuild and optimize your indexes and do searches straight from the backoffice.
  • Debugging and profiling (in both WebForms and MVC) is being made easier with the wonderful MiniProfiler that now comes with Umbraco. Just add ?umbDebug=true to your querystring and dig in. For example, I've added a Thread.Sleep(1000) to a macro here:
  • Bulk publishing (right click a node to publish it and all of it's descendants) and sorting now perform much better (the updates for sorting required us to make a minor breaking change, if you rely on Save/Publish events triggered by sorting, please read the issue description).
  • Speaking of performance, we've optimized the loading of large trees in the backoffice.
  • We've streamlined how cache is invalidated making it much more consistent. For load balanced environments cache handling is now also much improved we fixed a lot of other bugs for those types of environments.
  • In MVC, you now have the ability to easily change the default controller used (docs).
  • The whole request pipeline has now been made public so that you can hook into almost any part of it with your custom code. Mad props to Stéphane for getting that done!
  • There's now a simple Relations API to make it super easy to relate content, members, media, etc. to each other (check out ApplicationContext.Current.Services.RelationService).
  • FaultHandling is part of 6.1.0, so this is the release that has retry strategies in place for PetaPoco to support SQL Azure (Morten made me write this to give Umbraco "a dash of enterprise": we have transient fault handling).
  • And of course we took your super valueable feedback from the beta releases and fixed the bugs that turned up there. Thanks everybody! #h5yr

Are you overwhelmed yet? ;-) We look forwared to hearing your feedback as always.

Upgrading from 6.0.x is totally easy, one change in the web.config (details on the 6.1.0 release page) and copy /bin, /install, /umbraco and /umbraco_client over the existing ones. This kicks in the upgrade installer and after that you're done.

Ps. Did anyone notice that version 6.0.x (first released in January 2013) now has more downloads than version 4.11.x (first released November 2012)? To celebrate this, we're now making v6 the recommended release!

Okay, enough text already, I'll stop writing now, head on over to the releases page and indulge.

Happy Umbraco'ing!

Tuesday, May 14, 2013 by Per Ploug

Codegarden - the Umbraco event of the year, is less than a month away, and its time to reveal the complete program, which in my humble opinion is the best speaker line-up we have ever had.

Watch the complete program here, we are adding the complete session abstracts as we get them reviewed and approved by speakers.

We have case stories from Redbull, Sainsbury's, The danish state and german hospitals. Indepth tech sessions on the core API's, data layer and request pipeline. As well as sessions on the Umbraco 7 UI, Umbraco as a Service, Responsive Imaging, designing websites in the browser and so much more. 

All presented by experienced and knowledgeable speakers.

We are running out of tickets

There are only about 40 tickets left now, so if you havn’t already purchased your ticket, it is about time to do so. All codegardens in the past have sold out, and do you really want to miss this? - get your ticket here.

More then just the planned sessions

Besides the planned sessions, there is a complete track of open hackathon sessions, with guidance from Umbraco HQ developes, Core team members and community geniueses.

A whole day of open space sessions, where the community come together to discuss the present and future direction of Umbraco as an open source project, software and community.

Amazing social events like the wednesday canal tour after party with music, champagne and a festival vibe. A delicious organic dinner on thursday evening, complete with live hammond organ and the traditional and bizar Umbraco bingo.

There’s even a pre-conference social meetup tuesday, arranged by other codegarden attendees.

Oppunities to celebrate our community with Umbraco package competions and Umbraco Website awards, as well as meeting all thos helpfull people from our.umbraco.org to give them that well deserved high-five.

About the present and the future

Since codegarden 12 last year, Umbraco as a project and as a company has moved at an amazing pace.

There is not a single major component in the Umbraco core that we havn’t refactored, reimplemented, improved or tweaked, there are new API’s, new major versions, a new hosted service, a brand new UI coming, a lot of new fantastic sites has been launched, and a ton of lessons has been learned.

And there is only one place, where you can learn about all these things and that is at Codegarden, so I look forward to meeting you there. 

Friday, May 10, 2013 by Sebastiaan Janssen

It's here! 6.1.0 beta 2 is out now and it is much improved over the first beta thanks to your excellent feedback! There's nothing much new since the previous beta but we did put in plenty of bug fixing so 6.1.0 is now rock solid. 

Yes, the security fixes have been applied to this version and no, they haven't been committed to source control yet for security reasons. 


2013-05-10_141714Many people noticed that in Mvc mode, Umbraco can't give you tracing any more, which made finding bugs and performance issues harder.

This is about to change as we've now built the awesome MiniProfiler - by the great people at StackExchange - into the core of Umbraco!
Over time we can start adding more and more useful information into the profiler so you can find out exactly what is going on on your site.

Oh, and did I mention it works in the backoffice as well? We look forward to optimizing performance with this treasure trove of data we're now easily able to grab!

To get the profiler to show up, make sure that umbracoDebugMode is set to true in your web.config and then add umbDebug=true to your querystring. 

The MiniProfiler is also awesome because you can easily add your own profiling anywhere you want:

Umbraco.Core.Profiling.Profiler.Instance.Step("Hello World");

or nested profiling like:

using (Umbraco.Core.Profiling.Profiler.Instance.Step("This will take long")) {
   Umbraco.Core.Profiling.Profiler.Instance.Step("Here we go...");
   Umbraco.Core.Profiling.Profiler.Instance.Step("Ahh, finally done");

And as an added bonus this also works in WebForms mode!

We're looking forward to your feedback on this release. It looks like we're on track to release it by the end of the month unless we find more serious flaws.

Umbraco 6.1.0 Beta 2 is available now on CodePlex and NuGet.

Wednesday, May 1, 2013 by Niels Hartvig

TL;DR: Motivated by this week’s discovery of a security vulnerability, we analysed the entire Umbraco core and found two additional major vulnerabilities, so you’ll need to patch your installation as soon as possible. Download a patch for your Umbraco version in the bottom of this post.

Update: 4.11.8 / 6.0.5 released, see the last paragraph of this post.
Update 2: 
Versions before 4.5.0 are not affected by these new vulnurabilities, however yesterday's security alert still applies (recommendation is still: delete umbraco.webservices.dll).
In light of this information we will not be publishing custom builds for versions lower than 4.5.0. 
Update 3:
Some people are using 4.9.0 / 4.9.1 with a custom patch, the dll versions are now in the table below and patch files have been added ("Inline Xslt Fix" versions).
Update 4:
Unfortunately we can't  provide a patch update for 4.7.1, please email sebastiaan@umbraco.com for alternatives.

We've found two more major vulnerabilities

In parallel with the earlier security alert, we’ve been going through every method in Umbraco that deals with external requests. Based on this analysis, we’ve found two additional vulnerabilities and therefore we strongly recommend that you update your installation(s). The following steps are necessary even if you have already deleted the umbraco.webservices.dll.

To make this as easy as possible, we’ve created patched versions of all Umbraco releases from the past three years. To secure your site, find what version of Umbraco you’re using and download the corresponding patch in the bottom of this post. The patch is a zip file that includes updated and secure versions of umbraco.dll and umbraco.webservices.dll. Once these files are copied to your /bin folder your installation is patched and secured.

We know this is frustrating as you’ve probably already spent time this week updating your installations. We hope you understand that we took this double approach with delete first, patch secondly to ensure that your Umbraco installation would be as secure as possible in the quickest possible way.

In addition to the incredible efforts from the core team in dealing with these issues, I’d like to thank the brilliant partners and security analysts we’ve worked with over the last couple of days for their tireless help and constructive feedback in making Umbraco as secure as possible.

Last year - after Codegarden - we added a new workflow for core submissions with more thorough code reviews of both internal and external code, but unfortunately the vulnerabilities discovered were related to core changes before this governance was implemented.

We apologize for the inconvenience that these security vulnerabilities have caused, we’re doing everything we possibly can to ensure you won’t experience a deja vu anytime soon. We'll share details of the vulnerabilities in June when you've all had time to secure your installations.

How to patch your installation

The updated files can be downloaded from the list below. Back up your /bin/umbraco.dll and /bin/umbraco.webservices.dll and replace them with the versions you find in the zip file below.

Custom Umbraco build or not able to patch?

If you're not able to patch your installation or if you run a modified version of Umbraco - if you have modified the source of Umbraco and build your own version - we recommend that you setup a firewall to protect against external calls to /umbraco. You can see if you run a custom build of Umbraco by comparing your assembly version with the one in the table below. If the dll is of the below version number then you can safely overwrite the current version with the patched version (after making a backup, of course).

Umbraco version







not present



not present



not present



not present


not present



not present










4.9.0 with Inline XSLT fix






4.9.1 with Inline XSLT fix















If you're using Umbraco v4.5.1-4.7.2 and have the umbraco.webservices.dll file in your bin folder and you absolutely cannot live without it, then there's a secured version available for Umbraco 4 and for Umbraco 6.


We've just released version 4.11.8 and 6.0.5. The only changes from their previous versions is the security fixes, so it's a safe upgrade. Head on out to CodePlex or NuGet to get them.

Monday, April 29, 2013 by Niels Hartvig

During one of the regular security audits that independent security firms (in this case: MWR Labs) do of the core, a severe security vulnerability was found in the integration web services of Umbraco and we recommend everyone to take immediate action to prevent any exploit.

More details will come in a few weeks when people have had a chance to update their installations, but for now we ask you to remove the following file from all your Umbraco installations:


The security vulnerability affects all versions of Umbraco that contains the file above. If your installation doesn’t contain the file, you’re not affected.

If you DO have this dll in your bin folder and you absolutely cannot live without it, then there's a secured version available for Umbraco 4 and for Umbraco 6.

This will not affect the daily use of your Umbraco installation. It *might* affect integration with your Umbraco installation, but less than 1% use the integration web services. For those who do use the integration web services we recommend that you get in touch with sebastiaan@umbraco.com.

We’re sorry for the inconvenience.


  • If you do use the webservices in your custom code, adding IP restrictions to /umbraco/webservices/api/ can be an option to secure your servers instead
  • Load balancing setups should not be affected by the removal of the dll, the cacherefresher code for that is in a different dll
  • uComponents v3+ should not be affected
  • The umbraco.webservices.dll file has not been included for a while in some umbraco releases due to a bug in our build environment, so if you can't find it, you're not affected by this issue


Thursday, April 25, 2013 by Sebastiaan Janssen

Security -sml1It's time again for our regular patch release and this time we've added some improvements to back office security.

As part of a security audit done by a Umbraco Confidence customer and  independent security company MWR Labs we made some updates to the core to prevent that an authenticated Umbraco user would be able to access certain edit screens in sections of Umbraco that the User hadn't been granted access for. 

Don't be scared, the risk of these security issues being exploited is very low.

Other than that, this is a pretty small patch release for both v4 and v6. There's of course bug fixes and and you should see improvements in bulk publishing (more improvements to come soon).

For a full list of changes:

The releases are now available on CodePlex and on NuGet (6.0.4 & 4.11.7), enjoy!

Monday, April 15, 2013 by Niels Hartvig

Umbraco Festival T-shirt

I love the Umbraco community and nothing is better than meeting it in real life. So Friday was a day of pure bliss as our fabulous partner Kraftværk had arranged an Umbraco Festival for the Danish members of the Umbraco tribe. With more than 165 people in the room (and 25 on waiting list), the DK Umbraco Festival had more than doubled(!!) in size from last year.

It was a whole day packed with sessions in two tracks and from the HQ we had the pleasure of talking about two projects that we're working hard on:
- The artist formerly known as "Project Concorde" - which is Umbraco as a Service.
- "Project Belle", the new UX for Umbraco coming in v7

Me doing the keynote

Umbraco as a Service
Ever since the beginning of the Umbraco history, we've been working on lowering the bar of entry for Umbraco and while we've gotten far when it comes to downloading and installing Umbraco, it's still not for everybody. So about two years ago, we started wondering if we could use the awesomeness of Azure to deliver Umbraco as a service and at last years CodeGarden, Paul Sterling showed an early demo of what we had accomplished so far.

Since then we've realized that rather than "just" a version of Umbraco in "the cloud", we had the chance of inventing a smarter way of doing Umbraco projects making it safer, faster and more fun to do Umbraco. And what a joy to finally be able to show the first glimpse at what's coming in public.

Umbraco as a service - or "Umbraco.com" as it'll be called - is combining the convenience of an always up-to-date version of Umbraco running on a scalable cloud platform, with best practice environment setup and one click deployments. This means that an Umbraco.com project isn't just one live install, but also Staging and Development environments with git endpoints and one click deployments of both files and Umbraco (db) changes. All designed in a way where you don’t need to know or worry about neither infrastructure or the massive amount of technology that makes it possible.

There's much more details, but that'll have to wait for another blog post (or rather a dozen).

Project "Belle"
The future of Umbraco isn't just about Umbraco.com - we also showed the progress of the new UX for Umbraco which we expect to be finished this year.

Anders Stentebjerg and Per Ploug Krogslund from the HQ showed the latest iterations of the coming User Experience, so beautiful and clean that Twitter almost blushed from all the compliments by the wowed crowd. Completely build around how editors work, "Belle" isn't just about the looks but also about ensuring the smoothest workflows for managing your site, whether you're in the office on your desktop or on the move with your tablet.

But as if the stunning mockups wasn't enough, Per made his best demo to date when he showed a prototype that implemented parts of the design using a completely new HTML/JS architecture. Based on AngularJS - an HTML+JS application framework from Google - he showed that the future of Umbraco UX isn't just beautiful, but also fast and flexible beyond anything seen before. He topped it all of by showing that the Umbraco "Belle" back office can be extended by frontend developers using just HTML and Javascript and proved it by implementing a Google Map property editor in just a couple of minutes from his Macbook.

The prototype of Belle is available on GitHub and in the time leading up to CodeGarden we'll arrange several hackathons to ensure that as many as possible can contribute to this super exciting future of Umbraco.

Douglas Robar as the UmbracoMan

The community is the killer feature
A part from our sessions, there was a great varirity of content from a techincal session about Source Controlling Umbraco projects, followed by an inspiring session about Responsive Design and not to forget Douglas Robars talk about being a Superhero for your editors.

As always, the sessions was complimented by great hallway talks that turned into late night drinks. The willingness of the Umbraco community to share knowledge and experience is second to none and once again confirms that Umbraco isn't just a piece of software.

Umbraco is a complete philosophy about how to build beautiful websites and have fun doing it.

#h5wr – see you again at CodeGarden ‘13 – and a #h5yr to Niels Steinmeier for the fantastic photos.

Thursday, April 4, 2013 by Sebastiaan Janssen

2013-04-04_192722If you've been keeping an eye on our release schedule then you know today marked the release of version 6.1.0. And it is here! But it is also in beta form because we want to do more real-life testing before we mark this as a final release. 

When the final release of 6.1.0 is coming depends on your feedback and our internal testing. We'll make sure to keep you posted when we have more to say about a final release date.

In the mean time, we're still doing bugfixing on the stable releases (6.0.x and 4.11.x) so you have a solid environment to build your current sites on.

And that's also the plan moving forward for the next few months, releases will be small updates that involve fixes for stability and immediate bugs plus some polish of the editor experience here and there.
Until "Belle"(v7) we're not planning any big new features in the core, we're just smoothing out the core for now. 


We've been updating a few things to the caching mechanism to make it support load-balancing scenario's much better. Now this is a very touchy area and fixing one thing could possibly lead to other things breaking. We're being careful here and need to do more extensive testing ourselves. Even on single-server sites, we just want to make sure that you can upgrade with confidence.

That said, we need your help putting the new bits to the test. We're pretty sure that we didn't break anything major, but we're looking forward to the community helping us verify that. So if you have a chance, please check out 6.1.0 either on a load-balanced server or not.

What's new

Not so much, we think this release (apart from the load-balancing improvements) will be a total snore. There's a new dialog for managing host names and languages and some fixes in host name/language support on which Stéphane has been working really hard but it should all be very seemless during the upgrade, everything is backwards compatible.

Other than that: 

  • The document type editor can finally show all icons again (see the new DocumentTypeIconList option in umbracoSettings.config)
  • Improvements to publishing children including field validation
  • UmbracoApiController for using ASP.NET WebAPI with an Umbraco context

 As usual, the list of changes is available from the release info page.

There's still a few items not completed on that page, because we intend to include them in the final release of 6.1.0 but they need a little bit of extra work.

Known issues

  • Preview doesn't work as expected any more, we'll look at fixing that in a nightly update soon.
  • The AutoSort package by TheFarm is currently throwing errors, it's possible that other packages that are adding items in the right-click menu have stopped working. 


So there you go, we would love for you to give 6.1.0 beta a spin and look forward to hearing your feedback.

Wednesday, March 27, 2013 by Sebastiaan Janssen

Toot Your Own HornThe v6 release is being picked up by more and more people and we're very happy with the uptake and the relatively few bug reports for it, all in all it's looking like v6 is very solid indeed!

Okay, enough tooting of our own horn, we're not perfect and there were bugs:

The first thing we missed was strictly v6 related, and it was a total oversight on our part: when fixing the document type related issues for version 6.0.2, we forgot that the package installer is happily doing it's own thing. Oops, sorry!

So when you were installing a package with nested document types similar problems to the ones we fixed in 6.0.2 cropped up. We've now addressed these issues and tested over 30 of the most popular packages PLUS most packages that we could find that would install a nested node structure.

Another bug fix, in both v4 and v6, was because we accidentally broke a feature in Razor. If you had properties that store something other than text (like a date or an integer), querying those suddenly returned strings, instead of a date or an integer. This is now fully working again.


One new thing (in both v4 and v6 releases!) is that you now have much better control over how macro errors are handled. We had help from Adam Nelson who sent in a pull request for this.
The default behaviour for macro error is the same: just show an error inline in the html. However, in your umbracoSettings.config you can now set the MacroErrors behaviour to be completely silent or you can throw an error.
These errors can now also be handled through Application_OnError or the umbraco.macro.Error event. So if you want an email or an SMS whenever a macro fails, no problem, just write a few lines of code! Thanks Adam, #h5yr!

 He's not the only one to contribute though: Steven Lemmens, Andy Butland, Stephen RobertsAsbjørn Riis-Knudsen and Brian Powell also offered their fixes for various issues. Awesome work, thank you. A big #h5yr to you too AND to the people reporting bugs and responding to our follow up questions, our community is on fire!

Go forth..

Other than that, there's a big number of small(er) bugfixes, mostly relating to MVC and updates to document type editing. Of course you can find a full list of bug fixes on our progress pages:

 The downloads are now available on CodePlex and NuGet and we hope that Microsoft accepts 6.0.3 in the Web Application Gallery soon so it will also show up in the Web Platform Installer.

So with that.. Go forth and download the shiney new bits for your easter enjoyment!

Ps. Sorry, we didn't have time to put any easter eggs in there.. ;-)

Friday, March 22, 2013 by Tim Geyssens

Umbraco.tv has been around for a while and a valuable resource for both newcomers to Umbraco as well as seasoned devs wanting to keep up to date. Today we are thrilled to announce the beta launch of our revamped video tutorials site.


Launching with 2 hours of fresh material

5 chapters of new episodes are available today with a total of 33 videos (covering just over 2 hours) learning you the basics to get started with building Umbraco sites. All of these of course cover the latest and greatest Umbraco v6.

New content bi-weekly

We are aiming at having a steady stream of new content coming in bi-weekly, to make sure you are up to date with the latest topics.

Desktop, mobile, tablet

Of course the site is accessible from any device with an internet connection so you should be able to learn from your desktop, mobile and tablet devices. You can even resume a video between devices! And we made sure the video and audio quality is up to standards.

Earn badges

To make sure you fully understand the content of the videos you can  test your knowledge by taking a multiple choice quiz for each chapter. If you score at least 80% you’ll earn a new badge for your profile.

Login with your existing account

Although the tv site is now seperated from umbraco.com you won’t need to register again but can just login with your umbraco.com account. Everyone with an active tv subscription should have access. If you are interested in getting a subscription please take a look at our plans http://beta.umbraco.tv/plans-signup/ (access starting from €12,50 a month).

It’s a beta

Remember it’s a beta launch so you might encounter some minor glitches but by helping us test and provide feedback we can get those final issues sorted!

So what are you waiting for go take a look! http://beta.umbraco.tv

Wednesday, March 20, 2013 by Per Ploug

We have a new session to announce for this years Codegarden: Responsive Imaging by none other than Nathanael Jones

Codegarden, is the annual 3-day Umbraco conference, early bird tickets are available untill April 1st.

For those who don't know Nathanael, he is the man behind one of the most popular .net components: "ImageResizer" - and at the same time one of the people on earth who knows most about handling images on the web. 

Scott Hanselman has a very positive review of ImageResizer, as Nuget Package of the week.

 At Codegarden, Nathanael will talk about Responsive Imaging, how you handle images as part of responsive webdesign, from his session abstract:

Images are a time-consuming part of content management. How can we improve this while supporting an ever-growing range of devices? How do we gain agility while offering even more image variants?

Image management doesn't have to be hard. We will examine packages, techniques, and libraries that can simplify your workflow.

Even with messy photo collections of varying aspect ratios, there are easy ways to implement image galleries, light-boxes, slideshows, and Pinterest-style layouts.

How should you handle exponential growth of media assets? How do you transition to blob storage and a CDN? 

As websites grow more image-heavy each year, how can we leverage new formats like WebP and JPEG XR to cut bandwidth costs and delays?

And last, how can we provide future-proof responsive images *today*?

If you havn't already, I highly recommend that you get your ticket now, we have so many high-quality sessions lined up this year, that you will be forever sorry you decided to stay home, register now and save 150eur

Tuesday, March 19, 2013 by Per Ploug

Last week I spend 3 days with 30 students from Business Academy Aarhus (eaaa.dk), our goal? to learn Umbraco and MVC in just 3 days, and get the Umbraco developer certifications.

Running a 3 day course, with 30 attendees is pretty exhausting, but at the same time it’s exciting to see students, who are used to listening, learning and sucking in knowledge, just dive into the subject, without fear and without some predefined ideas on how to do things, it gives you energy to be reminded how carefree you can approach things.

To us in the Umbraco HQ, running a course like this, makes a lot of sense:

First of all, it prepares students for jobs, they will have a solid, and highly requested skill to put on their resume, which hopefully makes it easier for them to find the right job.

Secondly, our partners and Gold Partners are actively looking for developers with Umbraco skills, and especially around the Aarhus area, there are multiple partners. So our goal is that those companies will connect with these students.

And finally, a lot of these students plans to, or already have freelancing businesses set up, and I know from experience (as I went the same route back in the day) that Umbraco is the perfect tool for a web-development freelancer.

We see education, certifications and getting Umbraco into the hands and minds of new developers and designers as one of the HQ’s primary goals, our partners are in great need of people with these skills, and our entire ecosystem depends on a steady flow of new people, so we believe this is a perfect fit for both us, partners, students and the schools.

Any schools or companies who want to hear more about these student-courses, get in touch with me: per@umbraco.dk - it has been an absolute pleasure for us to coorporate with the Business Academy in Aarhus and would love to expand to other schools.

Thursday, March 14, 2013 by Per Ploug
Lee Kelleher
Lee Kelleher, speaking at the Codegarden 2012 Keynote

The 2nd chapter in our series on sessions at this years 3-day Umbraco Codegarden Conference.  taking place in Copenhagen, June 12th-14th, early bird tickets are available untill april 1st.

Lee Kelleher is a Director at Umbrella, an Umbraco Certified Partner.
A key figure in the Umbraco community Lee has contributed and developed many packages including the ever popular uComponents project. Voted Umbraco MVP status in 2010 & 2011.

Umbrella have delivered sites for Jaguar, Asthma UK, Mark Boulton Design and Microsoft. 

Lee and Umbrella also consult and support various agencies and developers around the UK with their Umbraco projects. 

The quick Lee Kelleher intro-speech, where you from, what do you do, packages, etc etc
Hello, I'm Lee Kelleher. I'm from the UK, originally from Liverpool, now based near Bristol. I run a company called Umbrella. Discovered Umbraco back in 2007 and have been building websites with it ever since. I guess many people in the community know me as the "uComponents guy".

Tell me about your session, what will someone being at your session at codegarden learn?
Over the past few years, I've had the fortune to speak at various Umbraco events, which have all been about uComponents... so when considered to speak at this year's CodeGarden, the suggestion was made to talk about "anything, but uComponents"!

Given the number of Umbraco websites that I have built; I will be present my top 5 most useful packages, (not uComponents). This is an ideal opportunity for attendees to discover lesser known packages and functionality, as well as hints & tips to aid their own Umbraco development.
As for what are the 5 packages? You'll have to come to CodeGarden to find out.

What do you look forward to at this years Codegarden?
To me CodeGarden isn't about the technology itself, it is about the people and how a technology can bring like-minded people together through knowledge and sharing.  This year will be my 5th time at CodeGarden and every year I look forward to meeting friends (old and new) to learn more about how we use Umbraco.

Tuesday, March 5, 2013 by Per Ploug


This is the first post in our series of Codegarden session spotlights. This time we talk to Anthony Dang, from Umbraco Gold Partner: The Cogworks in the UK, and the man behind a ton of Umbraco packages, he will be presenting at Codegarden about how he converted his uBlogsy package to Umbraco 6, from Umbraco 4. 

Codegarden takes place in Copenhagen, June 12th-14th, early bird tickets are available untill april 1st.

The quick Anthony Dang intro-speech, tell me where you from, what do you do and so on:
I'm Anthony (@anthonydotnet). I'm from Sydney, Australia, but I'm currently living in London. I'm a Senior .Net developer for a super Agile UX and Tech agency, called The Cogworks. I've been using Umbraco since 2008 and have had many wonderful (sometimes dangerous) adventures with it. I have made a handful of packages, but I guess my claim to fame is uBlogsy.

So Tell me me a bit about uBlogsy, what does it do, and why would anyone install that package?
uBlogsy is simply a blog package/starter kit. Out of the box it gives you the type functionality that you expect from a blog: tagging, categorisation, comments (with spam detection), RSS, Date folders. It has widgets for showing latest posts, archive, latest comments, related posts (based on tag and category). It does filtering by author, tag, category, and of course keyword searching. And it all just works out of the box.

People have been using uBlogsy for all types of things. A very common usage is for a News section. After all, a blog post is basically the same as news article.

In short, uBlogsy is feature packed, and will give your website a working blog/news section out of the box. And it's super easy to style.

Umbraco 6 and MVC, does uBlogsy work on that, and is that even important?
Yes! uBlogsy 3.0 is specifically built to work with Umbraco 6 MVC.

MVC is becoming more and more popular, and I think it is important to keep up to date. People using Umbraco MVC for the first time will see that views are cleaner to look at than Webforms masterpages. Less clutter! MVC also gives us power (with less hassles) to do what we want in the frontend and backend.

For example, implementing multiple forms on the same page is much easier in MVC than Webforms. Things like this become more and more apparent as web applications become more complex. So yes, I think MVC is important.

Tell me about your session, what will someone being at your session at codegarden learn? what is the single most important point you want to get across? 
My session is about uBlogsy, and how I converted it to Umbraco 6. I'm going to give a step-by-step walk-through of what I did, and how you can convert V4 sites to V6.

What is the single most important point I want to get across? Porting to use one API to another is actually quite easy. Most of it just find and replace, with some clever ideas of course.

What do you look forward to at this years Codegarden?
I'm looking forward to the ridiculous amount of partying and drinking. Last year seriously took about 10 months off my life. Prepare yourself with every hangover remedy you know.

I'm also looking forward to Friday. Some people tend to leave early on Friday to go back to their respective cities, but it's seriously the best day. I highly recommend that you stay and hang out with all the friends you met during the 3 days. I'll be staying all weekend to experience the Copenhagen night life.

Monday, March 4, 2013 by Sebastiaan Janssen

Only two days after releasing 6.0.1 we already have to do a new patch release, with a big Mea Culpa from the core team. As mentioned in the 6.0.1 release blog post, we fixed some problems in the document type editor that popped up in the 6.0.0 version. Unfortunately, the upgrade script for 6.0.1 was not entirely correct and caused tabs and/or properties to disappear from your document types.

Who's affected?

If you've put a property on an inherited tab, the upgrade from 6.0.0 to 6.0.1 would have caused problems for you.

So let's say you have a "Page Settings" document type, with a tab called "Navigation". As a child document type of "Page Settings" you have "Homepage". If you've put one or more properties on the "Navigation" tab on the "Homepage" (inherited from "Page Settings"). See the picture below (click it for a larger version):


What can you do to fix?

Unfortunately, some properties and tabs might have gotten deleted. We hope you've used the usual precaution and made a backup of your database. Make sure to restore the database in which your document type structure was fine (the 6.0.0 version). The installer of the 6.0.2 version will now properly upgrade your database without deleting properties/tabs.


We're very sorry that this has happened. We were focused too much on making sure that document type editing worked as expected in 6.0.1 and didn't pay enough attention to people who were upgrading. For future releases we'll make sure to test the upgrade path thoroughly as well. 

For this 6.0.2 release we've upgraded a bunch of sites that were previously affected and they all worked as expected after doing the upgrade from 6.0.0 to 6.0.2.

6.0.2 is available from CodePlex and NuGet now!

Thursday, February 28, 2013 by Sebastiaan Janssen

Today brings not one, but two scheduled patch releases! Remember we are doing a patch release every month now (next to the scheduled minor and major releases) unless we have an emergency fix to release sooner than that.


After 4000 new installs of 6.0.0 in the past month, people have noticed some problems mainly with document type definitions. We’ve worked hard over the past few weeks fixing those and doing thorough testing. The 6.0.1 release contains all those lovely fixes and some more things:

  • Updates to 404 handling, to make that more robust.
  • Some of you heavy MVC users out there have found some issues that were breaking the normally expected MVC behaviour, so we’ve put in some fixes for that.
  • We’ve made some improvements to Razor methods that weren’t working properly.
  • A bunch of other quirks and oddities have been fixed: sorting was sometimes different from v4, after renaming nodes you’d sometimes see the old name pop up, items in the recycle bin would sometimes show on the frontend, etc. All small things, and we’re happy all of those installs has surfaced them so we could fix those quickly, thanks for finding and reporting them!!

One other rather big fix in v6.0.1 is an updated version of Examine, which improves sorting options, improves multi-word searches, duplicate fields are now handled gracefully.
In addition to that, we’re making the config files more simple, so currently in the InternalIndexSet you’d list the properties you want indexed, but that’s no longer necessary, all of those properties are now indexed automatically with no additional configuration necessary.


The 4.11.5 release contains only a few fixes to stabalize v4 even further.
All of the v4 fixes have also been applied to v6, so here you’ll also see the 404 handling improvements, new Examine updates and MVC handling improvements.


Upgrade instructions (for both 4.11.5 and 6.0.1): Follow the general upgrade guide and note that there are NO changes to the web.config.
The only thing you should merge is the ExamineIndex.config (a few keys that are no longer necessary are removed) and the umbracoSettings.config (adds a “trySkipIisCustomErrors” option all the way at the bottom of the file).

There are no breaking changes in these versions so the upgrades should be smooth.


Tuesday, February 26, 2013 by Per Ploug

Codegarden - the annual Umbraco 3-day festival is getting closer and closer, and as is tradition each year, we now have a dedicated site online, all about the event at codegarden13.com

Codegarden is 3 days of focused Umbraco sharing, networking and learning. For designers, developers and companies who work with Umbraco, this is the one event you cannot miss. So make sure you secure your tickets as fast as you can, early bird tickets end on April 1st.

Buy a ticket now

This year’s designer

This year Sara Blake has designed the stunning floral center-piece on the site, she’s an amazing artist located in New York and has been fantastic to work with, so be sure to see her work at hellozso.com The rest of the site was done internally here at the HQ based on Sara’s work.


We already have a good deal of the speakers secured for this event and will be blogging about their sessions each week from now and until Codegarden, so be sure to keep an eye on the blog and @codegarden. We have some amazing speakers lined up this year, which I’m really looking forward to share with you.

Suggest a session

There is of course also plenty of room for community involvement and suggestions, so be sure to suggest a topic or speaker if you have something you would really love to see, you can do that here - and don’t be scared, Codegarden is not a tech conference, so let us hear about your passion for UX, your javascript library or what you learned from building a site in Umbraco, it doesn’t have to be tech mumbo-jumbo to fit into Codegarden.


Thats right, after a short hiatus, we are bringing back the Umbraco Community MVPs, voting will start on March 1st, shortlisted from the our.umbraco.org karma highscore list. So be sure to vote and support your favourite community member.

Open space

Yes, this year will also have a full day of open space on day 3. After last years massive open space session. which lead to several great discussions and initiatives, it is here to stay.

Friday, February 8, 2013 by Sebastiaan Janssen

You may or may not know that a bit over a month ago in Copenhagen we held a hackathon in which we open sourced almost all of the source of Umbraco's community site Our Umbraco and started working on some of the annoying little bugs that we had here and there.

Since open sourcing it, we've had a number of super valueable contributions from the community which have just been deployed to the live server. 

The main new thing right now is that the search has been improved by Chriztian Steinmeier, who now made it so that the area you're searching in gets automatically selected in the dropdown for the areas. So if you're in the documentation section, you'll automatically only search the documentation. If you're in the forum, you'll only search in the forum. Of course you can still select multiple areas but most of the time you wouldn't want to. Joy is in the little things!

2013-02-08_160807Documentation, did I say search in Documentation?? Yes! Examine GURU Ismail Mayat helped us out in making an index for the documentation MarkDown files and adding them to the search results. Looks pretty, doesn't it? Oh and did you know you can also do AND / OR searches already?

Some other things that have changed are:

  • The overview of topics you've participated in now has working paging, so you can go back through all of them thanks to Lee Kelleher
  • The active topics listing now has more useful paging, showing only 10 pages at a time but you can still go through all of them
  • Searching for packages from your Umbraco installation's packages section is working again
  • When you create a new topic, suggested topics are shown on the right side, they can now be safely clicked without you loosing the post you were creating.

For a full list of recent changes have a look at the issue tracker for Our and make sure to create new issues if they don't exist yet. If you feel like helping out yourself, the source is up on GitHub, send us a pull request, we love those!


Wednesday, February 6, 2013 by Sebastiaan Janssen

Shadow _version _gt 11We hope you're enjoying Umbraco 6 as much as the other 1200+(!) people who have already installed it in less than a week's time!

So, what are we up to next? If you've been paying attention to our release page then you might have noticed some updates recently.

First a reminder of the fact that we're using SemVer for our version numbers, and will be able to adhere to the guidelines of that specification much better now that v6 is out. A short reminder of what Major, Minor and Patch means:

A version number is built out of 3 digits, x.y.z, where x is the Major, y is the Minor and y is the Patch version number.

Let me list them for you:

  • Patch releases are now listed seperately.
    • A patch release ONLY contains bug fixes, no significant new features and certainly no breaking changes.
    • After listening to all you had to say on the subject it was pretty clear that a monthly release cycle for patches was preferred, which is what I have put in the calendar.
    • Patch versions will not automatically be released when all of the issues are fixed, we will keep pulling in issues when they make sense and release according to the schedule.
    • However, if a serious bug arises, we will do a release of the patch version as soon as possible and reset the calendar to do another release 4 weeks after that.
  • We're still doing patch releases for v4, so if you're not ready to upgrade to 6 yet, we've still got your back.
  • The release cycle of Minor versions has slowed down to doing one every 8 weeks, instead of 4 weeks.
  • In true SemVer fashion, we'll not be allowing breaking changes in Patch and Minor releases (so no breaking changes until 7.0.0) - this is rather easy to detect when we're changing public method names and signatures, but sometimes can be really hard to see when there are behavioral changes. While we do test our changes, we really appreciate feedback from the community in finding things we might have overlooked.
  • The main new features in 6.1.0 for now are a new Member API, Child Action Macros and better control over your routing but we're still coordinating about the other things that will fit into that version, so keep an eye on the release page for updates.
  • v7.0.0 will be virtually identical to v6.0.0 but it will feature the brand new interface dubbed "Belle". It's our intention to have v6 and v7 share as identical codebases as possible and over the next months we'll know how well that will turn out in practice.
  • Releases are now planned for Thursdays and not Fridays.


1291131680_two -thumbs -up

So that's where we stand right now. The last thing I would like to mention is that with 1200+ installs of 6.0.0 we've seen very few big bugs, which is something that makes us proud and shows that taking a few weeks of extra time to perfect the release was absolutely the right decision! 

Thanks for all of you who have already tried v6 out and for the people who haven't: what are you waiting for?! ;-)







Friday, February 1, 2013 by Sebastiaan Janssen

We've just released Umbraco 4.11.4 and an additional package to fix a serious issue in all versions of Umbraco between 4.10.0 and 4.11.3.

In v4.10.0, when you move a node to a different parent, the path property did not get updated properly. This, in turn, led to a bug where Examine could not index the nodes. It would result in a "yellow screen of death" saying or "value can not be null 'attribute'". To make matters worse, the node could never be edited again, you kept seeing this error.

We identified the bug and fixed it in 6.0.0, so moving nodes updates the path correctly in 6.0.0. Now, we've also fixed the same move issue in 4.11.4, so from 4.11.4 onward, moving a node will work fine again.

"Path Fixup" package

If your site was ever of version 4.10.x or 4.11.x (up until it is possible that this bug has caused problems for you. You can easily fix these problems by installing the fixup package made by Shannon.

The package will install an extra dashboard in your Developer section. Once it starts fixing, it will look at all of the nodes in your website and determine if the path is correct. If it is not correct, it will fix the path and publish the node.

To make it very clear:

  • if your site was ever of a version between 4.10.x and 4.11.x (anything lower than 4.11.4) you should run this package. 
  • if you have just upgraded to 6.0.0 and your site was ever of version 4.10.x or 4.11.x you should run this package.
  • new installs of 4.11.4 are fine
  • installs of 4.9.x and lower are fine
  • new installs of 6.0.0 are fine

What else is new?

Previewing nested unpublished pages now works and when in preview mode, macro's won't be cached.
Other than that, w
e fixed 36 issues for your enjoyment and we highly recommend you upgrade to this version. No breaking changes, so no need to worry.

Download your copy today!

Thursday, January 31, 2013 by Per Ploug

Umbraco 6 is out!, and it brings a ton of new, and exciting features to Umbraco, like new API’s, datalayer and MVC.

Read more about Umbraco 6 here 

UPDATE: Over half of the seats are now sold in under 24 hours.

As a special event for Umbraco Level 2 certified developers, we now offer a 1 day upgrade course, at a very tempting price: € 499.

Order a spot on the course

For this first class, it will exclusively take place in Aarhus, the city of smiles, but also the city of Umbraco Partners, so a natural place to start these new courses.

In short, this one-day class will go through:

  • The grand overview of all the new terms and features in Umbraco 6 and MVC
  • How you update an existing webforms-based site to MVC
  • Hands-on exercises with the new Media and Content APIs
  • Templating in Razor views
  • Strongly typed views ← ?  
  • Working with forms in MVC
  • Building custom controllers
  • Hijacking Routes and building your own urls

Read more about the corse on the course page here, and sign-up for the course right here.

Thursday, January 31, 2013 by Sebastiaan Janssen

8100154382_5146c 7b 407Well, well, well, what have we got here? Is that a shiny final release of Umbraco 6 - The future of Umbraco? Why yes, yes it is!

After nearly a 1000 testers on the beta and release candidate, v6 is now ready for prime time! 

In the past 10 days, we've fixed bugs we found internally after doing dozens of clean installs and upgrades. We also fixed a few dozen bugs that YOU, the community have found and we can't thank you enough for all the bug reports, they have helped us a lot in making this a high quality release.

We've also had a lot of feedback on the upgrade process, especially the database step that was scary because it was using the wording of when you install Umbraco from scratch. So now we properly indicate that we are upgrading, doing some extra tests to determine which database upgrades are necessary and will show you errors that are easy to digest if something does go wrong. 

As a reminder of what's so great about v6:

  •  A brand new API for Content and Media - Read Niels' blog post about the ContentService
  • Upgrade from MVC 3 to MVC 4 and support for Partial View Macros
  • You can now use PetaPoco and the database migrations framework that we added onto it
  • Support for nested media types in the backoffice
  • Ability to restrict the document types that you can create under the Content root node
  • 99% backwards compatible with Umbraco 4

For all the details, check out the download page and then get with the future and start installing!

Monday, January 28, 2013 by Niels Hartvig


Umbraco may have been my brainchild, but it would never have gotten this far if it weren’t for the many people who’ve helped along the way. From my wife who told me to “just do it or stop nagging about the other tools”, to Thomas Madsen-Mygdal, Kasper Bumbech and Anders Pollas with whom I sparred in the very early days or the many, many other developers, designers and editors who through code, feedback, packages, community help and testing have helped make Umbraco what it is today.

That’s the story we all love and also use in sales pitches. It’s the product of a big community with thousands of contributors. More than 100.000(!) people visit Our Umbraco every month, we’re beyond 500 add-ons and the amount of pull requests for the core are at an all time high.

Umbraco is the product of all of us, not just me or the employees in the HQ. The idea that a tiny company of less than a dozen people could have such a huge impact on the world of CMS is flattering, but unreal.

There’s so much to love about a project like Umbraco, but of course there’s no such thing as a free lunch. When you love to use Umbraco to win a project because you’re standing on the shoulders of a big community, remember that you’re that community too. That the quality of Umbraco can never be greater than the amount of investment in that community.

When a new version of Umbraco is released, it shouldn’t be just the product of a handful of developers in a tiny Danish company. It should be the product of all of us. There’s so much potential if all of us could find just an hour a year to help with testing, fixing bugs and sparring on new features.

When we release a beta of Umbraco, it’s a great chance to help. Not just installing it - but by trying some of the stuff you’d do when the release comes out. Like using some of your favorite packages, testing your own code, running it on your usual host and maybe even trying to upgrade an existing site. Helping catching bugs during the beta phase is what leads to a better release and less frustration when it really hurts. Last year we launched a contribute section to help you get started.

The quality of the core is the responsibility of all of us - from the employees in the HQ, to the smallest of agencies using it for their clients.

So don’t think what the HQ can do for you, but what you can do for your CMS.

Friday, January 25, 2013 by Niels Hartvig


Maybe you’ve heard about Umbraco CodeGarden, maybe not. Maybe you’ve heard about it, but yet don’t really know what it’s about.

CodeGarden is our annual Conference about Umbraco and takes place in Copenhagen, Denmark on June 12th - 14th 2013. But in short you could also describe CodeGarden like this: “If you haven’t been to CodeGarden you haven’t experienced Umbraco”.

I believe that Umbraco is great because it isn’t just a piece of software. From the very beginning the community has been a big part of what it was and it’s been an increasing motivation for me to keep believing in the project.

Umbraco is fundamentally about inspiring and empowering people to build great sites. The software is a big part of this, but the inspiration comes from people that through our forums, their blog posts and by sharing open source packages, opens a lot of peoples eyes and help them realize that they’re capable of much more than they’d think.

You’ve probably used our community site “Our Umbraco” a few times - maybe even without knowing it. If you’ve ever installed a package, that’s Our Umbraco who did that for you. If you looked up documentation, that’s Our Umbraco too. So is the roadmap. And of course, if you’ve ever needed a question about Umbraco answered, it was probably powered by Our too. You could easily say that without “Our Umbraco”, there wouldn’t be “Umbraco”. That’s where you’ll find the very soul and vision of Umbraco - what’s sets us apart in a very crowded marketplace.


Umbraco CodeGarden is Our Umbraco - but in real life. It’s where you really understand what Umbraco is all about. You may have felt like you’ve already been there - you could have seen all the sessions on video, browsed through all the beautiful photography taken by Douglas Robar throughout the event and heard so much about the parties and related events.

But like music is great on an iPod, its only experienced and truly felt at a concert. I wholeheartedly recommend that you come to the Umbraco Festival that CodeGarden is. It’s fantastic.

As we’ve already sold more than 30% of the 400 tickets available, don’t hold your breath. Make sure you order your ticket today and experience Umbraco in real life.

And, yes. A website with all the details about CodeGarden ‘13 is coming up very soon!

Wednesday, January 23, 2013 by Niels Hartvig

We’ve succesfully moved Our Umbraco and the issue Tracker to new servers on Azure!

The last couple of days the Our Umbraco site, the issue tracker and also this site have had a lot of downtime, which has been caused by a series of chained events at the virtualisation environment at our ISP. The good folks there have worked almost around the clock for the past three days, but unfortunately it keeps misbehaving.

We’re now in the process of moving the Our Umbraco site and the Issue tracker and hopefully, this will be finished by the end of today. In the meantime, both sites will be unavailable.

We know it sucks and the timing couldn’t be worse with the Umbraco 6.0 RC just released. We’re doing everything we can to get them up fast so you can focus on building great sites and we can focus on improving the current tools – not the infrastructure.

Tuesday, January 22, 2013 by Niels Hartvig

The website and the source code used in this tutorial is available on GitHub.

In this little tutorial, I’ll show you how the new APIs in Umbraco 6 works, by importing a CSV file with products into Umbraco nodes.

For a start, I’ve downloaded Umbraco 6 (currently the RC) and installed the Basic starter kit with the “Sweet As” skin. That gives me a nice baseline for a simple site and also confirms that Umbraco 6 is compatible with most of the existing packages.

The products that I want to import, comes from our own ERP in the HQ. We use a SaaS product called E-conomic (which is awesome, btw) and it’s easy to export our products into an Excel/csv file. For simplicity, I’ve kept it to a very simple model where each product has a Product Id, a Name, a Group and a price.

So to prepare for the import, I’ve made three Document Types:

  • A “Store” document type, which is basically just a container for the products
  • A “Product Group” that lives beneath the store. It has a single property which is the e-conomic (our ERP) GroupId. As we only had seven product groups, I’ve just created them manually.
  • A “Product” that is a child of “Product Group”. To match my exported data it has a Product Id, a Name and a Price. The nice thing about Umbraco is that I can always enrich the boring ERP product data with Umbraco properties such as photos and Rich text descriptions (including embedded YouTube videos to show off the product).

Let’s get started

As I won’t go into details about parsing CSV files (you can look at the full source for that), the code shown in this tutorial is the simplified methods that takes a Name, Product Id, Price and a Product Group and creates it as a node. But as I want to be able to upload a CSV file, I’ll add a simple .NET UserControl to the Dashboard inside Umbraco which contains a File Control and a button. It’ll look something like this:

Screen Shot 2013-01-22 at 12.10.30 PM

If you’ve never played with customizing the Umbraco Dashboard, it’s as easy as editing the /Config/Dashboard.config file. In that file you can add tabs to sections, place User Controls inside the tabs and even add permissions to what type of users can see what tabs. The details, however is a different story – this tutorial are supposed to be about the new API!

Meet ContentService

The new API consists of a number of services which is your “gateway” to Umbraco data. In this tutorial we’ll look at the ContentService which – as you may have guessed – is our “gateway” to interact with content in Umbraco.

When you’re in a User Control or a Template, accessing the ContentService is easy and we’ll get to that in a minute. But before we show you the easiest way, it’s good to know that there are various ways to get to the ContentService. Most of all it depends on whether you’re already in a context of an Umbraco page (technically in an UmbracoContext - for instance in a Template or a view) or if you’re in a Console App (yes, that works!). No matter where you are you can always get to the ContentService via ApplicationContext.Current.Services.ContentService. The ApplicationContext as well as the various Services lives in the Umbraco.Core namespace and is part of the Umbraco.Core.dll. The UmbracoContext and UmbracoUserControl is found in the Umbraco.Web namespace which is a part of the “umbraco.dll” assembly (and that is the name – not Umbraco.Web as that would break backwards compatibility with v4).

So to get started, you’ll need to make a reference to “umbraco.dll” in your Visual Studio project. When you use the ContentService through a User Control, it’s also a good idea to make a reference to “Umbraco.Core.dll”. This allows you to make your User Control inherit from “Umbraco.Web.UmbracoUserControl” instead of the normal “System.Web.UI.UserControl” and gives you super easy access to local Umbraco data as well as the ContentService.

In this example I am using an UmbracoUserControl, but be aware that all the examples could also work in a webservice, a console app or even a Windows Service as long as you can get hold of a valid ApplicationContext.

Ok, enough boring theory – let’s import some products

As you may remember, the original purpose of this tutorial was to show you how simple it is to import our ERP product data as Umbraco Content items (nodes). Now that we’ve learned about the ContentService, UmbracoUserControl and our product Document Type, it’s really easy to creating content items:

private void ImportProduct(int productId, string name, int productGroup, int price)
        // Get the Umbraco Content Service
        var contentService = Services.ContentService;
        var product = contentService.CreateContent(
            name, // the name of the product
            1000, // the parent id should be the id of the group node 
            "product", // the alias of the product Document Type

        // We need to update properties (product id, original name and the price)
        product.SetValue("productId", productId);
        product.SetValue("originalName", name);
        product.SetValue("priceDKK", price);

        // finally we need to save and publish it (which also saves the product!) - that's done via the Content Service

Because we’re in an UmbracoUserControl, we can access the ContentService via a local variable called “Services”. The ContentService has a handy method to create content called “CreateContent” which takes 4 parameters:

  • Name of the new Content item being created
  • The parent id of the new Content item
  • The alias of the document type
  • The id of the user creating the content

The CreateContent method returns a Content item (an IContent) which also allows us to easily edit custom properties via the SetValue method that simply takes the alias of your custom property and a value (Object).

Once we’ve populated our content item, it’s time to Save and maybe also Publish it. It’s as simple as passing our Content object (product) to the SaveAndPublish method of our ContentService.

If you’re used to the old APIs, then you know that this wasn’t needed as data was saved the moment you assigned values to the properties. This caused a lot of database queries and really not considered good practice. With the new API, it’s not until you pass the Content item to the ContentService that a database query is made within a single transaction. With the old API the code above would generate at least five queries but maybe even more if the cache wasn’t up to date.

In the old API you also had to call two different publish methods – one that prepared the document for publish and one that refreshed the cache. With the ContentService, all you need to do is call the SaveAndPublish() method and you’re in business.

The Visual Studio sample project contains a more thorough example where I also update existing Content items and use the fabulous uQuery to look for data.

More to come

In this little tutorial we’ve shown you the first glimpse of what the ContentService can do for you and I’ve deliberately tried to keep it very simple. But the ContentService is more than just simple save and publish - it also support transactional bulk saves as well as bulk publishes. I’ll show you how we can easily refactor the code to support this in a coming tutorial.

Is there other examples or things you’d like to see covered? Let me know in the comments!

Monday, January 21, 2013 by Niels Hartvig

Gentle(wo)men start your engines - Umbraco 6 RC has landed!

After more than 500 downloads and loads of feedback of the beta, we’ve worked hard on getting the last issues fixed and as the baby passed all the items on the release checklist this morning, we’re proud to mark it the Release Candidate, which is fancy lingo for “we think it’s ready and if you don’t prove us wrong really fast, this will be the release”.

In other words - Umbraco 6 is here and real.

But what is Umbraco 6 - 159 great reasons?

Umbraco 6 is everything you loved about Umbraco 4, but with a whole new - and super fast - data layer as well as a new Public API. If this sounds very technical, it simply means that Umbraco is now much faster and more stable in the way it fetches and stores your content and that developers have a much nicer way to interact with Umbraco that follow best development practices.

Umbraco 6 also brings true MVC support (as well as continuous Webforms support), native Razor support and a lot of bug fixes and polish. Like support for master Media types, filtering of what Document Types can be allowed in the root of your site and a bunch of new razor templates to make you work faster. All in all, Umbraco 6 is the product of 159 work items.

But I know and love Umbraco 4 - do I have to learn everything again?

No. Umbraco 6 is 99% compatible with Umbraco 4 and you can work the exact same way that you’re used to and use (most of) the packages you can’t live without. The core team have even made sure that legacy code and packages will be automatically enhanced as well, as usage of the old API will automatically be re-wired to the new APIs behind the scenes.

So while Umbraco 6 brings you true MVC support, native Razor support and a whole new shiny API, if what you love is your XSLT, your webforms and the weird API that I originally made, you can keep doing it in Umbraco 6. But of course we’ll strongly recommend learning the new free toys right in front of you. We’ll even relaunch Umbraco.TV in February with loads of new content to help you get up to speed.

But why are you even reading this, when you can play with Umbraco 6 instead. Go download now!

Wednesday, January 16, 2013 by Sebastiaan Janssen

We're big fans of JetBrains' TeamCity product here at the HQ and use it to produce our nightly builds, all of the Contour and Courier builds. We're also using it to deploy our upcoming Concorde portal and the Our Umbraco sandbox site (and the live site in the future).

In the past few months we've worked hard to bring more quality into the core of Umbraco and our other products and have introduced unit tests using the NUnit framework. This is working out great and whenever we see new tests failing either locally or on TeamCity, we know that we messed something up without realizing it. Cool, that really helps making our releases of higher quality.


There's one problem however, that I noticed recently: deploys and nightlies appeared online while the tests for them were actually failing. So anybody downloading those releases got a version with known bugs, not good.

When I looked into this, the cause was evident: TeamCity runs NUnit, NUnit reports that it did it's job and found x failing tests and y succeeding test. Nothing failed in NUnit itself, so it reports back: "I did my job succesfully, nothing to see here". In other words: The errorlevel was 0.

Thing is.. TeamCity can cancel the next steps if the errorlevel is higher than 0, but NUnit tells TeamCity: "I just did my job there were no exceptions in my code. There might have been in the code I was testing, but I functioned just fine. Errorlevel: 0".

Apparently this issue has been known for a while and JetBrains don't currently have plans to make modifications.


I had a terribly difficult time finding a workaround, but I finally did.. and it's really pretty easy!

I've set up a TestProject on BitBucket and if you look in the tools folder I added the most minimal set of files needed to run NUnit. 

Update: As Eugene points out in the comments another workaround is also possible, that will give you the test output while it is running. The workaround below will only give the output after the tests are done.

To make this happen, copy the TeamCity NUnit addin dlls into your NUnit folder and then run the NUnit console. It's basically the same what I'm doing below but with the added benefit of getting real-time test results. 

See the Teamcity2.proj file in the TestProject for an example as to how to configure this.

In TeamCity I can then define a build step of type Command Line and have it run the tests, outputting a results XML file, in the case of the testproject the command looks like this:

tools\NUnit\nunit-console.exe TestProject.Tests\bin\Debug\TestProject.Tests.dll /result=TestProject.Tests\NUnitTestResults.xml


This results in a proper Errorlevel. 0 if there were no tests failing, something else if there are tests failing. Result: the next build step is not performed, awesome!

But.. TeamCity gives you a super handy overview of tests results and allows you to drill down into them when something fails, this was now missing, there's just a message "process exited with code 1". Not very helpful.

Then, I discovered: Additional Build Features. You can find this option in your TeamCity project configuration on config step 3, under the build steps. One of the build features you can add is XML report processing. And that's where our NUnitTestResults.xml file comes in.

Conveniently, there is a report type called NUnit and all you have to do next is tell the report processor where to find it, in the monitoring rules, in my case I had to enter: TestProject.Tests\NUnitTestResults.xml


Et voliá! The build result is once again complete, including the failing unit tests, and the next step will be cancelled because this step is correctly reporting an errorlevel that is not 0.


I hope this helps some people out there who are as frustrated about this as I was! 

In the TestProject, I also have a TeamCity.proj file that uses the MSBuild Community tasks library to run NUnit and that produces the exact same result. So you don't have to do this using a command line, you can incorporate the same thing in an MSBuild file if you want.

Friday, January 11, 2013 by Sebastiaan Janssen

It's a new year, high time for a new Umbraco version number!

Short version: Umbraco 6.0.0 beta is out, it's awesome for developers, go download it!

What to expect

v6 has very strong ties to v4, in fact we've been building 6 while v4 was under development and have very regularly synced the changes from 4 into 6. So everything will look and feel the same, but a lot of things have changed under the covers.

This makes v6 a very developer-centric version, here's what you get:

  • Completely rewritten API's for working with Content and Media in your custom code and packages (some documentation will come later, but make sure to explore the ApplicationContext.Current.Services.ContentService and ApplicationContext.Current.Services.MediaService)
  • The API makes use of PetaPoco a tiny object relational mapper. We've also built a layer on top of that so that all the syntax difference between SQL, SQL CE and MySQL have been abstracted away, so no more need to write three different queries
  • With the above change it was also fairly easy to write a little migration framework that can take care of database updates, again: no more need to have upgrade scripts per database type
    • PetaPoco and the migrations framework are public, so you can use them in your custom code as well!
  • We now support Partial View macro's if you're using MVC in Umbraco, these macro's supercede Razor macro's (although, don't worry, you can still use them and you will be able to use them for a long time to come!)

These are the most important and big new changes to v6, check out all the links on the release page as well.

Breaking changes

There are some breaking changes in this release, the most important one is the way that properties are saved has changed. Previously, we had this insane thing going on where when you did this:

doc.getProperty("pageTitle").Value = "Hello World";
doc.getProperty("dogName").Value = "Lassie";
doc.getProperty("iLove").Value = "Umbraco";

every line of this code would update the document, so 3 updates to the database where you only really want one.

In v6, you can finally just update all your properties first and then save them all in one go. But it means that if you want them saved, you have to explicitly call the save function:


And now you've saved the document with the 3 changes above in one nice update statement!

So.. if you're not using .Save() already, start doing it for everything: content, media, members, etc. Everywhere you set properties, add a .Save().

Currently the behavior has only changed for Content and Media, but it will change for the other API's as well.

Go get it!

Remember that this is a beta and not everything is perfect yet. But I did drive Morten insane by breaking all kinds of things and installing all of the popular packages, most of which should work in v6. So please, create new issues in the issue tracker when you spot them and set the "Affected Version" field to 6.0.0 so it's clear that they popped up in that release.

Other than that, I think internally we're all very, very excited about this release, paving the way to the future of Umbraco. Surprisingly little seems to have actually broken and that's a great thing!

So head on over to CodePlex and give it a whirl! Bonus tip: You can even upgrade v4 to v6 easily!

Thursday, January 10, 2013 by Sebastiaan Janssen

It's been brewing for a while now, we have the last few remaining issues for 4.11.2 fixed and it's up on CodePlex now! As we promised earlier the nightlies for patch releases are very stable and it's been fun to see people have picked them up and used them, leading to a few more fixes.

The upgrade is really easy and does not break anything, we've even managed to sneak a few things we had to for for v6 into this one. If you're on 4.10.x or 4.11.x it's a highly recommended upgrade, have a look at the list of fixes on the issuetracker.

As you can see, 4.11.2 mainly fixes some publishing problems that have cropped up, so make your editors happy and upgrade as soon as possible. The download is ready for you on CodePlex and of course NuGet has also been updated.

We're not forgetting about you v4 lovers and we're dedicated to providing more bugfixes to v4 in the future.

And yes, a v6 beta is on track to be released very, very soon, hold that thought!

Update: I made some mistakes during the release, oops! Version is all good though. :-)

Monday, January 7, 2013 by Niels Hartvig


Happy New Year!

I can’t remember the last time I’ve been this excited about getting back to work after a holiday. While 2012 in hindsight was about getting lost and messing up, followed by soul searching, finding back to the roots and coming out healthy and strongly of a crisis, this year seems much more bright, especially as we can start building on what we learned last year.

There’s a lot of positive change coming to the Umbraco project over the next twelve months, including two new major versions, followed by the Umbraco-as-a-Service cloud offering we’ve been working on for quite a while here in the HQ. The overall agenda for all three projects, is getting back to the roots of making Umbraco a powerful, yet simple tool to build websites.

The Umbraco Roots (photo by Douglas Robar)

Two new major versions in the horizon - what does that really mean?
A major version of a piece of software can always sound scary and in the world of Umbraco - with v5 in hindsight - it could be nothing short of a horror movie. However, in the core team we’re doing everything we can to make it G rated.

First of all, a new major version doesn’t have to mean major changes - and in particular nothing like v5 brought. Been there, done that, got the t-shirt and not only didn’t it fit, it was also damn ugly. One of the decisions following CodeGarden and the v5 aftermath was to move our versioning to SemVer. It means that if we add changes to the core that could break (but might not for all), we need to bump up the version number. With the coming v6, that’s what we might do.

V6 for dummies

Umbraco 6 is in its final stage of testing and while it looks and behaves just like the Umbraco you know well, it brings a completely new CRUD API. Fancy as it may sound, it simply means that the way that Umbraco creates and updates its data has been completely re-written from scratch, bringing greater performance, less database queries and a core that’s easier to maintain and test. In other words; faster, stronger and eventually more stable.

However, the old APIs will still work. In fact, the backoffice of Umbraco in v6 still uses most of the old APIs. But the core team, have made some super clever engineering that means that even though you call the old APIs, internally your calls will be re-wired to the new APIs. So not only does this mean that we can use the existing back office to test if that really works, your old code will work, just much faster yet you don’t need to do anything. We’d like to call it respecting our legacy.

With v6.1 that follows - knowing that the new APIs worked as we expected -  we’ll be changing the back office to use the new APIs directly and mark the old API methods as obsolete (though you can still use them without build errors). You could call that paving the way for the future of a - code wise - more stable and elegant core codebase.

V7 for dummies

Umbraco v6 and v7 living bon mariage style

While v6 is all about internals and code, ensuring a beautiful inner soul, v7 is all about beauty on the surface. With v7 we’ll be introducing the new UX - the artist also known as project “Belle”. It’ll use the exact same core as v6 - in fact the two versions will be maintained in parallel for quite a while.

Again, we’ll be respecting legacy as people are not forced to jump on a whole new look and feel until it make sense to them (and before it’s completely stable). And again we’ll be paving the way for the future as we can focus on the richer possibilities that modern browsers brings, leaving older browser support at the doorstep of v6 (if your organisation for some reason are forced to stay on an old version of Internet Explorer, you can continue to use Umbraco through the side-by-side maintained v6).

Umbraco as a Service aka “Concorde”

While our baby is still to receive its final name, the final thing in the horizon is our cloud offering of Umbraco, which is the artist formerly known as “Codename ‘Concorde’”. It’s not your usual “CMS hosted in the cloud”, instead we’ve been designing a whole new development and deployment experience with the possibilities that a cloud platform brings us.

There’ll be a lot to talk about and even more to show over the next months, but it’s worth mentioning here as we’ll be able to move existing Umbraco installations onto our new platform opening up a whole new way of developing, sharing and deploying despite you didn’t started out on the “Concorde” platform originally.


So 2013 will bring us three major new goodies; a whole new faster and stable API, a stunning new user friendly look‘n’feel and finally an easier and faster way to develop and deploy your fantastic Umbraco solutions. And all that in a way, that’s compatible with what you know today while giving you the chance to learn smarter ways to do Umbraco in the future.

Wednesday, January 2, 2013 by Per Ploug

It’s the beginning of a new year, and time for new year’s resolutions. We think a very important resolution for any Umbraco developer or company, is getting Umbraco 6 training and certifications, which is why we, right now, offer it at a very special price to celebrate the new year.

An Umbraco Developer Certification helps developers showcase their Umbraco skills, get them jobs, helps companies become official partners and build a solid reputation.

As a special offer, right now you can get unlimited access to umbraco.tv video tutorials, full licenses to Contour and Courier when you sign up for a Umbraco 6 Master Class. That means for the 900EUR course price, you get umbraco.tv and product licenses worth 700EUR included with the course. The next round of classes are in January in Copenhagen, book a seat today before it sell out.

The Level 1 Master Class

Enables web designers to build complete content managed websites with Umbraco from scratch. With full control over html and design, and with a UI that is a pleasure to use for editors. Umbraco 6 comes with a new suite of editor components for easier content management and an overhauled media library which makes media management much more intuitive.  

See if there any available level 1 seats left

The Level 2 master class

For .net developers who understands how Umbraco works, but wants to build advanced applications on top of umbraco or integrate with 3rd party services using Visual Studio. Umbraco 6 comes with a brand new set of APIs which are a pleasure to use combined with full asp.net MVC support giving developers access to a modern developement pattern from Microsoft. Be the first to learn the new, faster way to build Umbraco sites.

See if there any available level 2 seats left

We have announced a full training schedule for the next 6 months, with training locations all over the world, see the full schedule here.

This offer expires on February 1st 2013.