I have been investigating a way of adding more metrics about our builds into the Team Foundation Server 2008 warehouse. This would then allow us to measure quality of our code over time by other metrics than the just method offered by the Team Foundation Server 2008.
So my goal was to create a new fact table and link this to build dimension. The reason for building a fact table was the metrics as I would want to do some aggregation against them; this would mean I need to treat them as measures and measures only live in a fact table. I also wanted a separate fact table so my adapter doesn’t impact the standard TFS adapters.
As my facts would be generated by builds it would mean that facts would link to the build which why I used the build dimension. Also I found out later I had to also include the Team Project dimension as well.
I managed to find some useful links that helped me write my adapter:
http://msdn.microsoft.com/en-us/library/bb130342.aspx - This section covers several topics: how to implement an adapter; how the data warehouse is created and gives example on how to create adapter. The example is only how to extend existing dimensions not how to create new objects.
http://tomfury.spaces.live.com/blog/ - This guy was trying to do the same thing as me and created a series of blog entries explaining what he was doing and his issues he was facing and gave some code examples. Also he has posted the following questions on the forums which were helpful:
There some has been some changes, as I understand, between 2005 and 2008. As I no longer code against TFS 2005 I can’t make any real comment about these. However I found these links helpful for coding against TFS 2008:
http://ozgrant.com/2006/06/18/how-to-list-tfs-team-projects-using-the-api/ - this to gain information about the projects that are in TFS server.
http://notsosmartbuilder.blogspot.com/2007/09/team-build-2008-api.html - this helped me to query TFS server about the builds it understands. As I can see there has been a lot of changes between the 2005 and 2008. In the 2008 API some namespaces have been made obsolete (Microsoft.TeamFoundation.Build.Proxy; also a few classes in Microsoft.TeamFoundation.Build.Common).
To see how I wrote my custom TFS data warehouse adapter please click here.