New Swedish Microsoft ALM/DevOps Meetup


Together with other Swedish ALM MVPs and colleagues at Solidify we’ve decided it’s time kick off a Swedish Microsoft ALM/DevOps meetup! We plan to meet about once a month to discuss the concepts and ideas in our field.

The first meeting is on October 25 at the Solidify office in Stockholm. We’re very happy to have Jose Rady Allende, program manager on the Microsoft VSTS team, join us online to talk about the Microsoft Team Service Agile Transformation story. We’ll also going to have a couple of lightning talks on some cool features in VSTS.

Here’s the link to the  meetup: and make sure to join the group so you don’t miss the next meetup!

VSTS Countdown Widget now supports on-premise TFS

We’ve had the new extensibility on VSTS for some time now, including the ability to create dashboard widgets. With TFS 2015 update 2 the same extensibility became available to our on-premise TFS and with TFS 2015 update 3 we now also have support for custom dashboard widgets.

Give this we just released an update to the Countdown Widget which adds support for on-premise TFS installation, which has been a much asked for capability.

Get the latest version from the Visual Studio Marketplace:

If you are curios how the widget is implemented then I recommend taking a look at the articles Wouter de Kort and I wrote a while back:

Retain builds from Release Management

When releasing with Microsoft Release Manager “vNext” the linked builds don’t automatically get marked as retained forever. If you want to be able to re-deploy released builds you want to ensure the builds are not deleted by retention polices. It’s a good idea to let the release definition take care of this (at some point, perhaps in the release to production stage) and mark the released builds as retained.

Here’s a PowerShell script that gets the builds used in the release and set the “keep forever” flag on the builds:


You can use this from your release definition either by including the script in one of the build artifacts and reference it or using an in-line PowerShell script step:


Note: the script above works with an on-prem TFS (using default credentials), if you want to use it with VSTS you need to include an authentication header instead and pass a personal access token.

$username = “”
$basicAuth = (“{0}:{1}” -f $username,$password)
$basicAuth = [System.Text.Encoding]::UTF8.GetBytes($basicAuth)
$basicAuth = [System.Convert]::ToBase64String($basicAuth)
$headers = @{Authorization=(“Basic {0}” -f $basicAuth)}

Then replace the –UseDefaultCredentials with -headers $headers.

Get the complete script here (rename to .ps1).

Versioning files in TFS Build (vNext)


In my DevOps and Continuous Delivery presentations I’m always including a step in the build process where source files are updated with the current build number. This gives us an easy way to correlate the produced package to the build it came from, which is great for traceability.

Enough people have asked for the script so I feel I should post it here. It’s really nothing special, just a lightly customized version of the original sample script Andy Lewis wrote a long time ago. The sample comes from mine and Jakob’s book on Continuous Delivery so make sure to get a copy if you want more context.

The script will apply a version to the source files, for instance updating AssemblyInfo attributes like this:


Our script will also update the version number for database projects (DACPAC packages) and Android manifest files. It’s easy to extend the script to do the same for Wix projects (MSIs) or C++ (RC) files following the same principles.

All you need to do to add it to your source code repository and use a PowerShell build step to run the script. In our example you need to pass the build source directory and the build number to the task:


Download the complete script here (and rename it to .ps1).

Continuous Delivery with Visual Studio ALM 2015 Book Released!

Just in time for the Connect(); event the new book I’ve been working on together with Jakob Ehn has been released. This book gives hands-on examples on how to implement a continuous delivery process using the latest Microsoft tools. It’s been great fun to have had the opportunity to work with all the new versions of the product and it’s really great to see how well the different tools fit together and help us build DevOps and continuous delivery solutions much quicker (and better!) than before. If you want to learn more about the new build, test and release management systems there should be a lot of useful content here.

Building good software is challenging. Building high-quality software on a tight schedule can be close to impossible. Continuous Delivery is an agile and iterative technique that enables developers to deliver solid, working software in every iteration. Continuous Delivery practices help IT organizations reduce risk and potentially become as nimble, agile, and innovative as startups. Although not sufficient in itself, having a powerful set of tools that lets you implement practices such as Continuous Integration, deployment pipelines, and release management certainly will help you go a long way. With the Visual Studio 2015 ALM suite of tools there is now a very compelling offering that covers all areas when it comes to implementing Continuous Delivery. Also, as this book will show, these tools are open and extensible by nature, meaning that you don’t have to use every part of the suite if you don’t want to.

This Book

  • Explains the concepts of Continuous Delivery.
  • Shows how to implement a Continuous Delivery process using
    a modern development platform based on Visual Studio 2015,
    Team Foundation Server, Visual Studio Online, and Microsoft
  • Gives you practical guidance and ready-to-use recipes to help you
    build your own Continuous Delivery pipeline.

What You Will Learn

  • What Continuous Delivery is and how to use it to create better
    software more efficiently using Visual Studio 2015.
  • How to use Team Foundation Server 2015 and Visual Studio
    Online to plan, design, and implement powerful and reliable
    deployment pipelines.
  • Detailed step-by-step instructions for implementing Continuous
    Delivery on a real project

Table of Content

  • Chapter 1: Introduction to Continuous Delivery
  • Chapter 2: Overview of Visual Studio 2015 ALM
  • Chapter 3: Designing an Application for Continuous Delivery
  • Chapter 4: Managing the Release Process
  • Chapter 5: Source Control Management
  • Chapter 6: PowerShell for Deployment
  • Chapter 7: Build Automation
  • Chapter 8: Managing Code Quality
  • Chapter 9: Continuous Testing
  • Chapter 10: Building a Deployment Pipeline
  • Chapter 11: Measure and Learn

Automatically update test plan with build number, take 2

A while back I wrote a PowerShell script to automatically update a test plan with the latest build number (

This script works well as long as the build server has permission to read and update test plans. But in some environments (such as when running on a hosted build agent in VSO) we need to do an explicit authentication. The solution I’ve choosen is to simply pass in credentials to the script and do an authentication before using the TFS API.

The script now takes two optional parameters if you want to authenticate, username and password, and you can just pass them in from the build definition.  You can use ether basic authentication and pass both or use the safer option and pass a Personal Access Token (PAT) in which case you only pass the PAT as the password.

Here’s an example where you go to manage your credentials in Visual Studio Online. First go to your profile:


From the Security tab you can either create a Personal Access Token:


Press Add to create an access token:


Copy the PAT (it cannot be retrieved later):


If you want to use basic authentication go to the Alternate authentication section and fill in the secondary username and password:


With this you are ready to use the script. Download the latest version from here:

Check in the script to Source control and update a Xaml build definition to use the script. In the following example I’ve used a PAT and only pass the token as the password:


Check out the old post if you want a step-by-step instruction on how to setup the build and test plan.

WitCustomControls for 2015 released

We’ve just published a release at adding support for TFS 2015, we had to update the release due to a namespace change from 2015 RC.

Release Notes

This release contains the following changes:

· Updated to support TFS 2015.

Download the release here:

Post feedback to the Codeplex site if you experience any problems with this release.

Controls for 2013 and earlier can be downloaded from the release:
Controls for 2015 RC can be downloaded from the release:

Visual Studio ALM Videos – ALM Potpurri (SWE)

För ett tag sedan spelade jag och Dag König på Microsoft in en serie filmer om Application Lifecycle Management med Visual Studio 2013 och TFS/Visual Studio Online. Förhoppningsvis finns det både smått och gott i samlingen av klipp som vi spelat in, är det något som saknas eller som du skulle vilja se? Lämna gärna en kommentar här eller på Channel 9.

Hela serien finns nu på Channel 9:


Här är en sammanfattning av innehållet i filmerna:

Ämne Innehåll
1. Intro ALM

Vad står egentligen ALM för? Och vad står det för nuförtiden? Lyssna på Dag och Mathias reflektioner över hur TFS och ALM området utvecklats sedan produkten kom ut 2005, nästan tio år har gått och produkten har naturligtvis vuxit och förändrats på många sätt under åren.

2. Intro Visual Studio Online

Med Visual Studio Online har vi tillgång till en hel utvecklingsplattform i molnet. Detta innebär bland annat stöd för planering, versionshantering, byggautomatisering, testning och deployment. Vi kan ha en hel mjukvarufabrik igång med bara några knapptryckningar! I detta avsnitt får du veta mer om hur VSO fungerar och även se hur enkelt det är att signa upp sig och skapa sitt första projekt.

3. Planering Backlog

I detta avsnitt går vi igenom hur verktygen i TFS och Visual Studio Online kan användas för att skapa en backlog för produktutvecklingen. Vi tittar på hur man arbetar med hierarkier av uppgifter och går igenom principer för estimering och prioritering.

4. Kravhantering

Ärendesystemet i TFS är väldigt flexibelt. Men hur hanterar man egentligen sina krav i verktyget? Vi tar en titt och ser om stödet för produktplanering är rikt nog för att även hantera kravdokumentation. Med de nya funktionerna för texthantering och länkning så kommer nog även de mest omfattande kravspecar hitta ett hem i TFS.

5. Sprintplanering

För att ett team skall kunna arbeta effektivt krävs bra samarbete och bra processer. Även verktyg visar sig vara en viktigt komponent för att få till ett snabbt och smidigt arbetssätt. I detta avsnitt tar vi en titt på hur TFS hjälper teamet planera, få en översikt och kontinuerligt följa upp arbetet i en iteration på ett bra sätt.

6. Team Wiki

Det har länge saknats en bra lösning för mer informell dokumentation i TFS. Men med stödet för Markdown så kan vi nu skapa en wiki i vårt team projekt där vi lätt kan skapa allt från enkla sidor där vi dokumenterar procedurer till omfattande dokumentation kring utvecklingsprocessen.

7. Team Explorer

Mycket av arbetet i TFS sköter man nu i webklienten. Men som utvecklare är det smidigt att kunna hantera utvecklingsnära uppgifter direkt inifrån Visual Studio. I detta avsnitt tar vi en titt på hur Team Explorer funktionen används för att enkelt få åtkomst till funktioner i TFS.

8. My Work

Med funktionen My Work i Visual Studio får vi ett smidigt verktyg som förenklar arbetsflödet och gör det lättare att fokusera på en sak i taget. Du ser direkt vilka ärenden som är tilldelade dig och kan med det inbyggda stödet i TFS snabbt växla fokus i koden utan att behöva checka in eller skapa kodbrancher för att isolera arbetet.

9. Testplanering

Det är många som missat att TFS har riktigt bra stöd för testning. En av orsakerna har varit att vi tidigare haft en lokal klient för testning men nu har vi merparten av dess funktioner tillgängliga i TFS-webklienten. Vi tar en titt på hur testplanering går till i TFS där vi alltid har fokus på att arbeta nära produktutvecklingen, testningen är tätt kopplad både till planerings-, krav- och utvecklingsverktygen i TFS.

10. Testkörning TCM

I detta avsnitt tittar vi på hur TFS kan användas för att köra manuella tester och enkelt skapa buggar om man hittar avvikelser under testandet. Nytt sedan ett tag är att vi har stöd för detta i webklienten vilket gör att det är lätt att använda på alla plattformar och i alla miljöer.

11. Utforskande test med MTM

Även om mycket av testfunktionerna i TFS nu finns i webklienten så har vi en del som fortfarande testklienten (Microsoft Test Manager, MTM) gör bäst. I detta avsnitt tar vi en titt på hur vi genomför utforskande tester och skapar buggrapporter med rik datainsamling från systemet under test.

12. Continuous Delivery

På senare år har vi blivit allt bättre på våra olika specialiteter i utvecklingsarbetet. Men för att leveranserna skall gå snabbare och behålla god kvalitet är det viktigt att hela leveransprocessen fungerar bra. I detta avsnitt diskuterar vi vad continuous delivery är för något och hur detta synsätt hjälper oss få till fler och bättre releaser.

13. TFS Build

Byggsystemet i TFS är en av grundpelarna i produkten och något som varit med i många år. Men under åren har funktionerna ändrats så i detta avsnitt tar vi en titt på hur systemet fungerar idag. Vi visar hur du enkelt sätter upp en automatiserad byggprocess för din produkt (vi tittar till och med på hur du kommer igång med utökningar av den inbyggda processen). Med Visual Studio Online får du dessutom tillgång till en hel byggmiljö i molnet vilket gör att du är igång på bara några minuter.

14. Intro RM

För att få till en komplett lösning för continuous delivery behövs en lösning för deployment av systemet. I TFS har vi en produkt, Release Management för Visual Studio, som gör just detta. Och mer, det visar sig att RM inte bara är ett deploymentverktyg utan en komplett releasehanteringslösning som innefattar konfiguration av releaseflöden, deploymentprocesser, konfigurationshantering, behörighet och mer. I detta avsnitt går vi igenom vad RM är och hur du kommer igång med produkten.

15. RM Deployment

I detta avsnitt tittar vi på hur vi med Microsoft Release Management definierar en releaseprocess för en webapplikation. Vi kopplar deploymentverktyget till releaser gjorda i TFS build och skapar en releaselösning där alla (med behörighet såklart) kan hjälpa till att göra releaser.

16. Visualisering av projektstatus

En stor del av projektarbetet handlar om att hålla ordning på det vi arbetar med; aktiviteter, planer, testresultat, produktkvalitet för att ta några exempel. För att detta arbete inte ska ta onödigt mycket tid från utvecklingsarbetet så kan vi utnyttja funktioner för uppföljning och visualisering i TFS, tex. genom att ställa frågor mot TFS och visa resultatet som diagram på en dashboard.

17. Testrapporter

Som testledare (och andra i projektet för den delen med) så är det viktigt med bra stöd för uppföljning av testarbetet. I detta avsnitt tar vi en titt på rapportstödet i TFS som kan användas för att följa upp status på testplaner, utfall från testkörningar och status på buggar funna under testandet. Du får också se hur du kan spara ner testplan och resultatet från testkörningarna i olika format så du kan dela med dig eller spara undan som dokumentation från projektet.

18. Quick load test

En ny spännande funktion i Visual Studio Online är Quick Load Tests. Med denna funktion kan du superenkelt skapa ett lasttest som körs mot din applikation och direkt ger återkoppling på hur den beter sig under last.

19. Load Test

Om du någon gång provat att göra ett storskaligt lasttest så vet du att det är ett rätt stort projekt. Detta leder till att man inte genomför lasttester eller i alla fall inte så ofta som man skulle vilja (eller borde). Men med Visual Studio Online behöver det inte längre vara ett hinder, i VSO har vi tillgång till en omfattande infrastruktur för lasttestning. Med denna lösning kan vi fokusera på att skriva bra tester och analysera resultat. Infrastrukturen för lastgenerering använder vi sedan i VSO och sparar på så sätt både tid och pengar.

20. Branchningsstrategier

Versionshantering är något som vi (förhoppningsvis) tar för givet nuförtiden. Det är sällan ett hinder att checka in och ut filer från Visual Studio utan det bara finns där. Det som däremot kan vara utmanande är att hantera koden på ett sätt som inte skapar konflikter i arbetet och på så sätt drar ner på utvecklingstakten. I detta avsnitt diskuterar vi val av branchningsstrategier och hur rätt val rejält kan förenkla och snabba upp kodhanteringen.

21. TFVC vs Git

Hur viktigt är egentligen ett versionshanteringssystem? Och spelar det någon roll vilket man använder? På senare tid har det varit mycket snack om centraliserade kontra distribuerade versionshanteringssystem. I detta avsnitt tittar vi på likheter och skillnader mellan Team Foundation Version Control och Git, som är det två alternativ till versionshantering vi har i TFS idag.

22. Application Insights

Vet du hur din applikation fungerar i produktion? Får du tidiga larm om något börjar bete sig ovanligt? Med Application Insights har vi en funktion som låter oss få just denna typ av förståelse för våra system, något vi kan använda för att reagera snabbt på fel, få bättre verktyg för felsökning och inte minst även få insikt i hur våra användare använder systemet.

23. Feedback

En liten doldis i TFS plattformen är en spännande funktion för hantering av synpunkter från våra användare. Det är alltid intressant att få in användares åsikter om produkterna vi tar fram men vi är inte alltid bra på att samla in och återkoppla kring den feedback vi fått. Med detta verktyg har vi en klient som låter användare samla in information från tex. en testkörning och direkt skapa feedback ärenden i TFS.

24. TCM vs MTM

Arbetar du med testning och undrar när du skall använda Microsoft Test Manager eller test funktionerna i webklienten? I detta avsnitt diskuterar vi likheter och skillnader i verktygen och när det är en fördel att använda det ena över det andra.

25. Spårbarhet

En stor styrka i TFS är dess centrala lagringsplats för arbete vi gör under utvecklingsarbetet. Speciellt centralt är ärendesystemet som kan länka ihop saker man tar fram under utveckling och kan synliggöra det på ett bra sätt, exempelvis visa status på ärenden, kopplingar mellan ärenden och testresultat och även kopplingar mellan ärenden och källkod. Allt för att ge oss bättre inblick i hur våra produkter utvecklas över tid.

Build Status Badge for TFS 2015 and VSO

A while back I wrote a post about how we can create a build bagde in TFS just like some of the other CI server can. It was actually really simple but since it was a custom extension it needed to be deployed outside of TFS, which of course is a bit of a pain. 

With TFS 2015 RC and the new build system I’m happy to see there is now a new feature that let’s you get a build badge automatically!

To get a build badge you just need to enable it on the build vNext build definition:


Note how nice the url to the badge is presented:


With this you can easily include the build badge in any web page. I really like the new Markdown support so I would include it in your wiki by simply point to in the badge url:


Save and it renders nicely like this:


So with this my suggestion on Uservoice can be closed.

Thoughts on Visual Studio ALM