Tuesday, 15 July 2014

Demystifying the Scrum of Scrums

The Scrum of Scrums is often saw as something ‘which grew out of control’, ‘just for Scrum Masters’ or something suited just to very large organizations.

It isn’t, actually…and it’s not rocket science, either.

A Scrum of Scrums is the best possible way of clearing doubts and questions raised among teams. It must not be merged or confused with a bigger standup meeting (as I’ve heard it…) because it is something brought on by the teams’ representatives – the Scrum Masters.

Its scope is to get a clear understanding of the problem’s domain and provide a solution – as the Scrum Master is there to remove impediments.

And yes: a Scrum of Scrums can have its own backlog, Jeff Sutherland defines the Scrum of Scrums as “…an operational delivery mechanism”, so having a backlog is perfectly reasonable.

Thursday, 10 July 2014

Why is the new VSO Stakeholder Plan a game changer?

Yesterday Brian Harry announced the new Visual Studio Online Stakeholder Plan – basically, full access to Work Items only in Visual Studio Online (and on-premise Team Foundation Server) for everybody, free of charge.

I believe this is a true game changer: it’s at least four years that we talk about ‘involving stakeholders in the process’, ‘synergy among the parts in the organization’, Product Owners, etc. We could do that, for a fee (the Visual Studio Online plan or the on-premise TFS CAL) but it was perceived as a bit unfair against who could use that CAL/plan at full power (a developer would use all the features provided by the platform, a stakeholder certainly wouldn’t, 99% of the time).

Right now there are no excuses anymore Smile as you can involve as many stakeholders as you wish without paying a penny.

As there are evidences of how involving stakeholders in the development process is a staggering improvement compared to other methodologies, it is a great opportunity to push hard on the quality pedal and starting to achieve great results!

Tuesday, 8 July 2014

Test Suite and Test Plan customizations in TFS 2013 Update 3 – synergic work between development and testing

IMHO the most exciting feature of Team Foundation Server 2013 Update 3, among all its goodness, is the migration of Test Suites and Test Plans to plain Work Item Types – and the reason is pretty simple.

Despite all the effort spent, developers and testers still had a tiny line which kept splitting them and their worlds:


Which eventually led to limited shared information (pinned items on the Web Access) between them. Which was a cause of pain and frustration, especially among the testers. Using Tags was a way of sorting it, but to be fair not properly the best…

But right now all the testing artefacts are Work Item Types – Test Plans, Suites and Cases – so you can query them and, mostly important, you can easily add custom fields, rules and workflows like with the existing WITs.

For example, I might have Test Suites with a specific Feature Area (potentially reused across other Work Item Types) as well as a Planned Release field. I can easily add them to the Test Suite Work Item Type:


The cool stuff is that all of these are now queryable!


…and obviously, pinnable to the team’s home page:


That’s why it is way easier for testers now to access and share relevant information.

Monday, 7 July 2014

TFS Audits – how to create reports on your TFS usage in five minutes or so…

Some months ago I wrote about the TFS Audit Log, because a big part of my daily job is about governance, regulation and access management.

This log is very, very, very verbose as it is a flat list of every single user and group into the Team Foundation Server’s ACLs. How to get some more meaningful information from it?

The basic Sort functions, together with the Text to Columns of Excel are a must in order to format it in the best possible way. You can then create a PivotTable and mix/match your data and the criteria you want to show:

image  This fairly basic PivotTable is going to give you this result: image

It is basic, but it is something you can do in zero time. Add a chart to the mix and you have a nice (reusable, as you just need to replace the datasource, which is the whole original Audit Log. So in case you need to do it monthly you just need to replace the appropriate sheet and you’re done) report for understanding the ratio between users and group, without the need of complex SSRS reports or even PowerPivot.

Then for instance…if I want to get a text document with all the users contained in each TFS group, the only command I need to launch is tfssecurity /imx. As I have hundreds of groups it is quite…long for a manual interaction. So, I’d create a text file with all the groups - copy, paste from the original audit log, one for each line – and then launch the following command from the Visual Studio Command Prompt:

for /f "tokens=* delims=," %l in (<path to groups.txt>) do tfssecurity /imx "%l" /server:http://<tfs>:8080 >> <path to mygroupaudit.txt>

this simple command is going to execute tfssecurity /imx for each group and, thanks to the >> sign it is going to append the tfssecurity’s output to the mygroupaudit.txt file. I usually launch it on an unattended machine and keep it running on the background until it finishes.

Then in order to get a basic but polished report, open the resulting file in Word, and change the font setting to Bold for these four lines, except for the very first on top which are IMHO useful for a nice presentation:

Microsoft (R) TFSSecurity - Team Foundation Server Security Tool
Copyright (c) Microsoft Corporation. All rights reserved.
The target Team Foundation Server is http://<tfs>:8080/.

Word has a very useful feature for this needs: select text with similar formatting. Do that and wipe those lines away! You’ll get something neat and polished – change fonts, and add whatever else you need and you’ll get an Audit Report in five minutes :)

Of course it’s possible to use that file in a better way, but these basic tips will give you something in a near-to-none time!

Going slightly deeper in the reporting technologies – PowerPivot is perfect for that. You just need to load the .csv file and you have a dynamic model perfect for drill-down queries. With this:

image you’re going to get this chart: image

which is pretty basic. But what if you want to know how many users with Full Access (which require a CAL as we know) accessed the server on a specific date…well, you can create a chart having Last Accessed UTC on the Axis as well as on a Slicer, so you can filter your timeframe – and Sum of Full on the Values:


But as it is PowerPivot, you can drill down as you wish…so if from my dates selection I select just today at 13:09 (where this is the only access for today on this test instance, by me) and I drill down by Display Name what I get is …


…a big pie with just me as a value:


These are just easy samples, but as soon as you get that this csv data is a data source…the whole reporting world will welcome you!

Tuesday, 1 July 2014

Visual Studio Online and Service Hooks!

Despite Visual Studio Online is a Cloud Service – so something you do not have on-premise and where you have limited room for customization – it has been recently updated with a critical feature: Service Hooks.

A Service Hook is, like the name describes, a way to integrate 3rd party services with Visual Studio Online. They are based on the REST APIs provided by VSO.

Let’s say we want to leverage on customers’ feedback like Microsoft does, using UserVoice. It is a great way of interacting with our users – so why not? We are using Visual Studio Online as our ALM platform: how can we accomplish this mission?


It is easy actually, but you’d be stopped up front by Visual Studio Online when you try to create a new Service Hook to UserVoice:


“The Next button is blocked? Why? I thought it was easy!”

Again: it is! But if you read, it says “Subscriptions for this service must be created and managed at uservoice.com.” which means “Service Hooks can be bidirectional, and this service isn’t.” No big deal anyway, because once we logon to UserVoice we are going to find this under Settings –> Integrations


Easy peasy. Just link your Visual Studio Online account…

image image image

Once you are authenticated you can define which Work Item Types are going to be mapped to UserVoice ideas, and in which Team Project of course:

image image

…and that’s all!

Refreshing the Visual Studio Online Project Administration page will show the new subscription – it is managed on UserVoice so VSO is just a client, but of course you can check it from VSO as well!


It just means that in case you’d try to edit the Subscription, you’re going to get this error:


because you need to manage it from UserVoice. Nothing serious though.

As soon as we start receiving feedbacks, we can promote them to Work Items:

image image


And eventually we are going to get them in our selected Team Project. I can open it straight from UserVoice as well!

image image

And keep in mind – you can extend it even more as Visual Studio Online is already set for Web Hooks, which means your own service.

Monday, 30 June 2014

Review – Professional Team Foundation Server 2013

It is The Book. It’s the book you should have on your desk, library, shelve, whatever if you are working with Team Foundation Server.
I can describe it as a the most comprehensive book on the matter, the go-to reference when you need to plan/understand/troubleshoot something on TFS.
The 2013 edition is even better than the last year’s one, covering Git and the Distributed Version Control System, Visual Studio Release Management and all the new stuff of the latest version – Visual Studio Online included.
Everything is very smooth and in deep as you’d expect – you won’t find generic stuff or something about Visual Studio or MTM. If you are searching for them, you should see other books. It is not a pure beginners’ book: the planning section for example is very specific.
But even if you are a regular user, you are going to get a lot of value from the book. I strongly suggest it to everybody, from who uses TFS every day who wants to understand what goes on behind the scenes to the hard-core Team Foundation Server Administrator.

Wednesday, 18 June 2014

How to use PowerShell DSC with Visual Studio Release Management

After the brief introduction earlier this month it is now time to push forward – let’s see how the Update 3 CTP of Visual Studio Release Management enables you to push your DSC scripts to the target machines.

Firstly, the script. To keep things simple, I decided to deploy my script in an independent build and then leverage on VSRM for the deployment – no build template integration.

[sourcecode language='powershell' ]
Configuration DemoAppConfig
[String]$SourcePath = '\\dtfsat\Build',
[String]$AppPath = 'C:\AppPath'
Node $servers
File CopyApp
Ensure = 'Present'
Type = "Directory"
Recurse = $true
SourcePath = $SourcePath
DestinationPath = $AppPath



Then we can create a new Standard Environment:


which is going to contain our agentless target server. To configure a target server, you’d need to run Enable-PSRemoting –force and winrm qc –transport:HTTP from PowerShell.

This server must be added using the FQDN and the listener port – the 5985 is the default port used by the HTTP listener.


This server is always going to be in a Ready status as long as there are the required permissions in place.

The only missing bits are the Component and the Release Template. As mentioned, the Component is going to be picked from an external network share (the build drop location) and used as-is. This is just for this sample anyway, the standard Build Definition used by VSRM would work as usual.

The big difference stands in the Deployment Tool used for the component – it is going to be Run PowerShell on Standard Environment, which provides all the facilities for running the DSC script:


This is going to be our single entrypoint for running DSC script. Moreover – if you look at the Release Template toolbox it is quite…empty:


But it would work like a charm :) The Deployment Sequence is going to be pretty lean as well: invoking the Component’s deployment for the target server – and that’s all:


This is what you are going to need to create a basic DSC-based deployment using Visual Studio Release Management. No rocket science required!