How to apply custom filters?

Aug 1, 2012 at 1:52 PM

This is a really neat little tool!

However, it only gives me part of what I require.  In our system, our process is to associate the ChangeSets (CS) to the task however, for the release notes, I need the CSs with associated PBI/BUG.  Some developers associate the PBI/BUG direct with the CS and others use the task.  From now it will be the task so for the ones that have already been associated with the PBI/BUG, this tool works perfect :)  Just not sure how I can get the others.

The documentation states that you can apply your own style, filter and conditions using the ReleaseNotesTemplate.xslt.

Is there any documentation on how to do this?  I am not familiar with .xslt :S

I see other posts/blogs suggesting PowerShell/C# to query this info but I'm not familiar with these either...  Any help would be much appreciated!

Apologies if I have posted this to the wrong place.

Coordinator
Aug 16, 2012 at 4:31 PM

Hi,

In TFS, as you know, it’s possible to link ChangeSet to any type of WorkItem. As you rightly said, developers will work against Tasks and they will check-in their changes against those tasks. Now, completing Task does not mean that the associated Requirement / Bug (now onwards I will use requirements in my description) has been completed as you could have one or many tasks associated to those requirements. 


Also, It’s not only requirements which are linked to Task, it could be other WorkItems like parent task, acceptance test, Impediment, defect, etc. It makes it extremely difficult to identify, the given work item link type (as it will be different based on process template that user is using) and so the decision related to inclusion of such an item in the report will also be difficult to make. 


Given this situation, we have decided to include only the direct WorkItem(s) link to the ChangeSet in the output produced by TFS ChangeLog application. If you look at the output folder where your report .html file is stored, then you will find the same file name with .xml extension. This is the data XML file that is processed via XSLT transformation process to produce .html file. 


Using XSLT it’s possible to define your own style and filter that will process this data XML file. i.e. it will only process data that is extracted in this XML file. Currently, as specified above, we only extract direct links, that means any indirect WorkItem links are NOT extracted. This means you will not be able to filter out information for indirectly linked WorkItems at this stage. 


What I suggest, may be as a workaround, is to link your requirement to the final changeset that fully implements that requirement.  i.e. if you have 3 tasks that implement one given requirement then at the end when 3rd task is checked-in, you could link both, your 3rd task and original requirement to that changeset. (Note that linking WorkItem to the Changeset can be performed even at a later date). I strongly suggest that this should be done as part of System Integration Testing (or such other type of testing like user acceptance testing) where you confirm that the given requirement has been fully implemented. 


Please also consider different branches in which changes take place. It’s possible that developers would  use development branch for checking in against task(s) and then merge them back into integration branch. That means, ChangeSets that are present in developers branch would show linked Tasks where as ChangeSets that are created as part of merging process into Integration Branch will have Requirements linked to it. This way you can generate different ChangeLog against different type of branches. 


XSLT is a way to big subject to discuss in a forum like this and so I suggest you reading on the Internet or Getting Started book to learn how to transform XML into HTML via XSLT. 


Best Regards,

Dharmesh Shah.

Marked as answer by Dharmesh_Shah on 10/15/2013 at 4:38 AM
Aug 24, 2012 at 9:48 AM

Hi Dharmesh,

Thanks for your detailed response.  I am currently looking into Power Shell/C# to allow me to pull out the information I require.  At present, our process is to set the task to "done" only when all associated workItems are also marked as "done".

I am also going to look into associating the requirement with the final changeset, we are still getting our processes tied down.

Again, many thanks for your response.