<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8569239741277924317</id><updated>2012-02-06T20:45:53.263+01:00</updated><category term='POC'/><category term='Reports'/><category term='TFS OData'/><category term='Architecture'/><category term='TFS'/><category term='MTM'/><category term='TMAP'/><category term='TFS2010'/><category term='UML'/><category term='Warehouse'/><category term='Word'/><category term='TFS2008'/><category term='Test'/><category term='WSS'/><category term='Reporting'/><category term='Admin'/><category term='Life'/><category term='Profiler'/><category term='Upgrade'/><category term='vNext'/><category term='VS2010'/><category term='Import Test cases'/><category term='TFS Scorecard'/><category term='TFSAPI'/><category term='VSTS2010'/><title type='text'>Mattias Sköld</title><subtitle type='html'>Thoughts and findings on ALM, EA and life in general</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-7675778605079328147</id><published>2011-09-26T22:29:00.002+02:00</published><updated>2011-09-26T22:53:49.538+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vNext'/><category scheme='http://www.blogger.com/atom/ns#' term='Test'/><category scheme='http://www.blogger.com/atom/ns#' term='MTM'/><title type='text'>Microsoft Test Manager Preview (MTM11)</title><content type='html'>About 18 months ago Microsoft’s released Microsoft Test Manager (MTM), a new test tool with focus on agile teams and collaboration. MTM introduced a lot of features to simplify and improve common test tasks and improve team collaboration. A week ago, at the build conference Microsoft release a Preview of the next version of Visual Studio including MTM.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Missing feature set in MTM2010&lt;/span&gt;&lt;br /&gt;Even if MTM brought many new features to the tester, MTM do have some short comings and lack some features most testers expects. Amongst the most commonly wanted is the possibility to use Multi Line and Rich Text Formatting in Test Steps. The edit test case experience only uses a fraction of the screen to edit/view test steps. Testers have found workarounds for some issues like editing in excel and pasting back to MTM or using third party tools like the Test steps editor (&lt;a href="http://teststepeditor.codeplex.com"&gt;http://teststepeditor.codeplex.com&lt;/a&gt;). Of course the list of wanted features is a lot longer, but I think those mentioned is amongst the most commonly wanted.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MTM11 addresses most commonly wanted features&lt;/span&gt;&lt;br /&gt;The big story in MTM11 is focused around Exploratory testing , but a quick look at the preview of MTM11 it looks like Microsoft also focus on addressing the the wanted features in the next release. MTM11 now supports Multi Line, and Rich Text Formatting (even if the formatting toolbar is pretty limited). Even the test case editor is improved and a splitter is introduced so you can adjust and use all available space for viewing /editing test steps.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MTM11 Backward compatibility?&lt;/span&gt;&lt;br /&gt;With the most commonly asked for features fixed I was curious, is MTM11 backward compatible with TFS 2010 and MTM 2010? Could I be using the MTM11 on a TFS 2010 project side by side with MTM2010 and use the new features?&lt;br /&gt;After taking a test drive I found that Microsoft seems to have backward compatibility on its mind. MTM11 works directly an existing tfs2010 team project. I can view/edit/run test cases with both MTM11 and MTM2010. Using MTM11 against an old TFS2010 team project gives me a better test case editor with Multi Line editing. If I open a test case created in MTM2010 and adds line breaks in test steps they render correctly in MTM2010&lt;br /&gt;However, using MTM11 against an old team project disables the rich text editing is however disabled. To enable the rich text editing you need to connect to a tfs11 project or probably do some kind of process template upgrade.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Test step editor and MTM/TFS 11?&lt;/span&gt;&lt;br /&gt;As many teams already worked around the limitations of MTM with tools like test steps editor, I was also curious how the next generation of TFS and MTM11 react to test cases edited with the test steps editor. The questions are, does MTM11 acknowledge line breaks made by test steps editor and how will they be treated by TFS11? From my test drive it looks promising, MTM11 seems to handle line breaks made by test steps editor in an old TFS2010 team projects. Upgrading the project to TFS11 works fine, and the line breaks made by test steps editor works fine in MTM11 after the upgrade.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MTM11 Preview is a good start&lt;/span&gt;&lt;br /&gt;This post is just based on my findings after a short test drive with a preview of the next generation of MTM, but it looks promising. If Microsoft makes MTM11 backward compatible it will make it a lot easier to implement and use the version of MTM in real life projects. Hopefully Microsoft will continue and address commonly requested features like real pause/resume of test cases (new status), edit test cases during execution, ability to bind data bound test cases against SQL commands or other data sources.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-7675778605079328147?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/7675778605079328147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2011/09/microsoft-test-manager-preview-mtm11.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/7675778605079328147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/7675778605079328147'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2011/09/microsoft-test-manager-preview-mtm11.html' title='Microsoft Test Manager Preview (MTM11)'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-1892827950585553460</id><published>2011-08-09T02:05:00.007+02:00</published><updated>2011-11-14T02:52:22.722+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><title type='text'>TFS Reporting</title><content type='html'>If you want to do reporting against TFS there are three different data sources to consider. In this post I’ll go briefly through the possible data sources and there usage, pros and cons.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;TFS Relational Warehouse&lt;/strong&gt;&lt;br /&gt;The TFS relational warehouse is an SQL database dedicated for reporting data inside TFS. The TFS Warehouse has a public schema and is the supported place to do SQL reporting against the TFS Data. The information in TFS Warehouse is an extract from the production data and is updated on interval (by default 2 h)  &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;TFS Cube &lt;/strong&gt;&lt;br /&gt;The TFS cube is an analysis database storing aggregated information from the TFS warehouse. The TFS Cube is most suited for reporting on trends and aggregated info. Reporting tools are primary Excel for AdHoc reporting and SSRS using MDX as the query language. For those not too comfortable with the MDX language there is a tool on codeplex (&lt;a href="http://olappivottableextend.codeplex.com"&gt;http://olappivottableextend.codeplex.com&lt;/a&gt;) that allows you to use excel to create the query and then lets you show extract the MDX query.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;TFS Production data&lt;/strong&gt;&lt;br /&gt;If you want access to all details of the TFS implementation, without the time delay  you need to go directly against the TFS production data. The only supported way to do so is by using the TFS API. The downside is that you need to develop and deploy a solution wrapping the TFS API and consume it in your report. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br /&gt;For most cases the TFS Warehouse is your first choice, unless you want to do reporting on trends or aggregated information the TFS Cube is probably your first choice . If you  can’t do with the (small) time delay or need access to RitchTextFields or other values not present in the TFS warehouse, you will need to develop and deploy your own data source using the TFS API.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-1892827950585553460?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/1892827950585553460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2011/08/tfs-reporting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/1892827950585553460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/1892827950585553460'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2011/08/tfs-reporting.html' title='TFS Reporting'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-112837344461398350</id><published>2011-05-05T00:07:00.006+02:00</published><updated>2011-10-05T00:22:20.068+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS OData'/><category scheme='http://www.blogger.com/atom/ns#' term='Reports'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>TFS OData Services as data source for SSRS reports</title><content type='html'>In April  Microsoft release a beta of TFS OData Services , enabling  a simply way to query and update tfs using http Url’s and atom xml data f, even from non-Windows platforms. This is good news for everyone who wants to extend  tfs to mobile devices, but I saw an alternative use for it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Looking for a SSRS data source&lt;/span&gt;&lt;br /&gt;If you want to create reports containing details of work item,  a story card report  for example, you don’t really have a good data source to base your report on. The TFS Warehouse doesn’t offer  vital fields like description, history and many other fields of importance. So far the best option I’ve found is to use Ewald Hofman’s solution in this post &lt;a href="http://www.ewaldhofman.nl/post/Work-item-query-as-input-for-a-RS-report.aspx"&gt;http://www.ewaldhofman.nl/post/Work-item-query-as-input-for-a-RS-report.aspx&lt;/a&gt;. Although it’s a proven working solution it requires both customizations and deployment of a web services . If TFS OData services will be a part of TFS installation it could be the answer I’ve been looking for.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Installing TFS OData services&lt;/span&gt;&lt;br /&gt;To test the new TFS OData services, I started installing it on one of our lab servers. Quite quickly it became obvious that TFS OData install is not install that simply installs the TFS OData Services on a Server. It installs a complete development environment for developers who wants to build mobile TFS applications. To get it installed I switch to a lab devbox and installed all the tools required by the install. Once installed I needed to point the TFS OData services to a tfs server, this was no problem.  One thing that caused me some problems was to handle the certificates.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;OData as datasource in SSRS&lt;/span&gt;&lt;br /&gt;As Microsoft has been pushing OData  quite a bit, I was expecting it to be fairly easy to consume OData services in SSRS. Sadly I was surprised to find out that SSRS can generate an OData feed, but have no guidance how to consume OData as a data sources.  After quite some time searching and asking around my colleagues I found a solution.  SSRS have an XML data source, and you can specify an url as connection string.  You can also specify Query parameters and how to translate the returning xml using  the Query in SSRS. The following XML translates the OData response to fields in SSRS:&lt;br /&gt;&lt;pre lang="x-xml"&gt;&amp;lt;Query&amp;gt;&lt;br /&gt;    &amp;lt;ElementPath IgnoreNamespaces="true"&amp;gt;&lt;br /&gt;        feed{}/entry{}/content{}/properties&lt;br /&gt;    &amp;lt;/ElementPath&amp;gt;&lt;br /&gt;&amp;lt;/Query&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;OData &amp;amp; SSRS - Possible but not practical&lt;/span&gt;&lt;br /&gt;So it is possible to consume OData services in SSRS, but it’s not really practical as you specify the URL in the data source.  OData uses the URL as the query specification, forcing you to have one data source for each query  you intend to use. It might be possible to fix this or write an custom data source adapter for OData, using SSRS extension model.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Beta 1 shortcomings&lt;/span&gt;&lt;br /&gt;As I got a data source and a query in SSRS, I started to create a simple story card report. Quite soon I run into trouble. Some parts of the URI’s used for accessing queries is less natural, like &lt;span style=" font-weight: bold;font-family:arial;" &gt;/ColletionName/Queries('b3844370-e517-471d-a55c-d45f9bf7716d')/WorkItems &lt;/span&gt;This formats with guids as identifiers for queries, instead of query name, might work if coding against it, but for manually doing reporting it’s not a great experience.&lt;br /&gt;The next problem is that the beta 1 of TFS OData returns a predefined subset of a work item, regardless of the work item definition, or the query specification. This is a show stopper, at least as a SSRS data source.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;If you want to create reports containing details of work item the best option is still Ewald Hofman’s solution to create an web service to execute Work Item Queries using the TFS API. TFS OData has to develop and grow a bit before it can be used as a data source, on the other hand it’s only a beta 1 yet. The potential is there in the OData format and if its developed and delivered as a part of TFS it could be used as a standardized data source for TFS data.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-112837344461398350?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/112837344461398350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2011/05/tfs-odata-services-as-data-source.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/112837344461398350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/112837344461398350'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2011/05/tfs-odata-services-as-data-source.html' title='TFS OData Services as data source for SSRS reports'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-2447130717806755284</id><published>2011-03-13T23:47:00.009+01:00</published><updated>2011-03-17T13:53:06.828+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Reports'/><title type='text'>How to change iteration for Burn Down reports in project portal</title><content type='html'>Last week I needed to change the default iteration for the burn down chart in the (WSS) team project portal . My first thought was that this should be a simple task done in minutes, as the burn down chart is a SSRS report and I know I can change the default parameters for SSRS reports on the properties tab of the SSRS report.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How to change default parameters for SSRS reports&lt;/span&gt;&lt;br /&gt;The simplest way to change the default parameter for a SSRS report is to right click on the Reports folder in team explorer and select Show Report Site. Once the report site opens up in your browser, click on the report you want to change, and then the report shows, click on the Properties tab. In the left border, click on the Parameters tab. Now you can see all parameters in the report and change their default values. Some of them are easy to change, others like the iteration parameter is not expressed in a intuitive or user friendly format.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Finding the right iteration expression&lt;/span&gt;&lt;br /&gt;To find the value for an iteration, you need read access to the TFS Cube, and a tool such as SQL Server Management Studio. To get the desired iteration value you have to browse the TFS Cube, find and browse the Iteration hierarchy, find the desired iteration and drag it over to the query area. This procedure is described in detail in a post by John Socha-Leialoha (&lt;a href="http://blogs.socha.com/2009/10/customizing-report-parameters-for-team.html"&gt;http://blogs.socha.com/2009/10/customizing-report-parameters-for-team.html&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;In my case, and I suspect in many other cases, I didn't have read access to the customers tfs cube, forcing me to find another way to get the iteration value. In other cases, access and knowledge to tools could be a show stopper.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;An easier way &lt;/span&gt;&lt;br /&gt;As I was forced to find another solution, I came up with the idea to create a custom SSRS report showing the iterations and their corresponding iteration values/expression. Creating the report was easy, and all I had to do once created was to upload it to the server and set the data source. Once done, I simply run the report, find the iteration I need and I can copy the iteration value at the same row. Next time I need to change the iteration, I simply run the report again.&lt;br /&gt;I think it is a really simple and good way to solve the problem,  so if you running iterations and want to change the current iteration every 2-4 weeks, grab the report from my skydrive &lt;a href="http://cid-5d46cae8c0008cf0.office.live.com/self.aspx/.Public/AreasAndIterations.rdl"&gt;http://cid-5d46cae8c0008cf0.office.live.com/self.aspx/.Public/AreasAndIterations.rdl&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-2447130717806755284?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/2447130717806755284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2011/03/how-to-change-iteration-for-burn-down.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/2447130717806755284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/2447130717806755284'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2011/03/how-to-change-iteration-for-burn-down.html' title='How to change iteration for Burn Down reports in project portal'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-2027432242903885732</id><published>2011-02-19T18:18:00.006+01:00</published><updated>2011-02-19T19:35:51.473+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS Scorecard'/><title type='text'>TFS Scorecard 2010 Beta 1 released on CodePlex</title><content type='html'>Today I released a beta of TFS Scorecard for TFS 2010 at CodePlex &lt;a href="http://tfsscorecard.codeplex.com/"&gt;http://TfsScorecard.codeplex.com&lt;/a&gt;. Since the release of TFS2010 I've been working on an adopting the TFS Scorecard to the schema changes of TFS2010 data warehouse and cube.  Upgrading to the TFS 2010 schema changes was not a big deal and soon fixed. But the old version was dependent on extensions to the tfs cube.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Old version bad install experience&lt;/span&gt;&lt;br /&gt;The TFS2008 version was dependent on extensions made to the schema of the TFS Cube for the adoption queries. This made the install procedure all but smooth and simple. To solve this problem I did a TFS Warehouse adapter making the schema changes, but it still was&lt;br /&gt;an extra step to follow and I would personally think twice myself before adding an external third party data warehouse adapter to a production server.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;No more extensions to the cube.&lt;/span&gt;&lt;br /&gt;Then I started to look at how to upgrade or adopt the cube extensions, I wanted to improve the install experience, or at least not make it worse.  After some thoughts I got the idea to skip the cube extensions and do SQL queries against the TFS Warehouse instead. As the TFS Warehouse contains all data used by the cube schema extensions, I could solve the problems with SQL without requiring any changes by the user. Using SQL against the warehouse instead of MDX agianst the cube could of course hurt performance, but I don't think this is a big concern as the Scorecard report is probably scheduled or viewed once a week in most cases.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Manual Test metrics &lt;/span&gt;&lt;br /&gt;With the new test tools for manual testing (Microsoft Test Manage ) I thought it would be nice to get a picture of the adoption of manual testing with MTM. So I made an Manual Test metrics in the adoption page.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Beta release- please provide feedback &lt;/span&gt;&lt;br /&gt;I think there is some work left to do on the TFS Scorecard report. I didn't take any time to fix the small details of the report graphics. You could always discuss and improve metrics and other features. Download and try the TFS Scorecard 2010 release from codeplex and if you have any ideas, comments or feedback in general I would be pleased if you let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-2027432242903885732?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/2027432242903885732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2011/02/tfs-scorecard-2010-beta-1-released-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/2027432242903885732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/2027432242903885732'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2011/02/tfs-scorecard-2010-beta-1-released-on.html' title='TFS Scorecard 2010 Beta 1 released on CodePlex'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-549510606944376231</id><published>2011-02-05T17:45:00.001+01:00</published><updated>2011-02-05T17:47:14.545+01:00</updated><title type='text'>Back in business</title><content type='html'>This week was the first real work week for a while.  For the last eight month I've been on parent leave taking care of my daughter at home.  During my parental leave I've been taking a couple of smaller customer assignments. Somehow they ended up being more than a couple, leaving no time for this blog amongst other things.&lt;br /&gt;&lt;br /&gt;But this week I'm back in business, My daughter started at the local daycare center and I went back to work. Hopefully  this will mean that I can do some post on the stuff I've done during the parental leave. I also started to work on my backlog, hopefully it will result in some posts and announcements.&lt;br /&gt;&lt;br /&gt;About announcements, this week I got an email from Microsoft congratulating me to the &lt;span style="font-weight: bold;"&gt;Microsoft Community Contributor Award&lt;/span&gt;. It's always nice with all kinds of feedback, all comments, emails  and even awards :)   are greatly appreciated and motivates me to share my thoughts, findings and experience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-549510606944376231?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/549510606944376231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2011/02/back-in-business.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/549510606944376231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/549510606944376231'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2011/02/back-in-business.html' title='Back in business'/><author><name>Jennie Sköld Nederlund</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-357762761373884563</id><published>2010-10-14T14:28:00.005+02:00</published><updated>2010-10-14T15:08:39.272+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Admin'/><category scheme='http://www.blogger.com/atom/ns#' term='POC'/><title type='text'>TFS2010 Automated team project creation</title><content type='html'>This is a update on a the code from a previous post &lt;a href="http://mskold.blogspot.com/2010/10/tfs2010-automated-team-project-creation.html"&gt;TFS Admin, Part II - POC Automated Order process&lt;/a&gt;.  It has been upgraded to handle tfs2010 and different team project collections .&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;The feature set  includes&lt;/span&gt;&lt;br /&gt;•    Order form for team project.&lt;br /&gt;•    Approval of team project orders&lt;br /&gt;•    Automatic team project creation&lt;br /&gt;•    Assigning of admin permissions to project admin.&lt;br /&gt;•    Reassigning work items to project admin&lt;br /&gt;•    Assigning contributors (New)&lt;br /&gt;•    Applying standard enterprise access rights&lt;br /&gt;•    Applying standard policies&lt;br /&gt;•    Sending notification email to project admin&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Future plans&lt;/span&gt;&lt;br /&gt;I'm in progress of implementing post creation synchronization of contributors. At the moment you can add contributors by editing the contributors field in the SharePoint list. The tool then synchronizes (add) the user as contributor to TFS, RS &amp;amp; WSS. So far the tool doesn't remove contributors or synchronize the list of contributors in SharePoint with the team project. The goal is to make it possible to handle the most common tfs user administrative tasks directly in the SharePoint portal, without installing any client side tools.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Code, Binaries and SharePoint list template &lt;/span&gt;&lt;br /&gt;You can find the source, binaries and a SharePoint list template at my skidrive &lt;a href="http://cid-5d46cae8c0008cf0.office.live.com/self.aspx/.Public/TFS2010%20Automated%20Team%20Project%20Creation.zip"&gt;http://cid-5d46cae8c0008cf0.office.live.com/self.aspx/.Public/TFS2010%20Automated%20Team%20Project%20Creation.zip&lt;/a&gt;. The process of implementing is described in the &lt;a href="http://mskold.blogspot.com/2010/10/tfs2010-automated-team-project-creation.html"&gt;TFS Admin, Part II - POC Automated Order process&lt;/a&gt; post. The process is most about about creating a custom list in sharepoint and edit the tools config file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-357762761373884563?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/357762761373884563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2010/10/tfs2010-automated-team-project-creation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/357762761373884563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/357762761373884563'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2010/10/tfs2010-automated-team-project-creation.html' title='TFS2010 Automated team project creation'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-4737336635841901050</id><published>2010-09-06T09:30:00.001+02:00</published><updated>2010-09-12T16:40:28.120+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Admin'/><title type='text'>Main TFS server upgrade</title><content type='html'>During the weekend  my colleges and I upgraded our main tfs server with 150+ users to tfs2010. We started to plan this upgrade in April, and overall it has been a smooth and easy upgrade. But of course it always turns up things you didn't expect then you started planning. This post contains our unexpected findings, and how we solved them.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The plan&lt;/span&gt;&lt;br /&gt;First a short description of our plan. In order to minimize the risk and minimize disruptions, we choose a migration upgrade. Choosing a migration upgrades allows us to have an good and easy rollback plan but even more important, we can do several real life rehearsals.&lt;br /&gt;Our plan covered three rehearsal upgrades.  The first rehearsal is just error pruning, go for a upgrade and see what problems you detected.  We also start documenting , creating scripts and time every step.&lt;br /&gt;The second rehearsal main objective is to verify your fixes. It is also a good way to test and make final adjustments to your own documented install process.  A third run is a good idea, just to prove that everything works without any surprises. After a run without unexpected surprises you are ready to do the upgrade&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SharePoint 2010 &lt;/span&gt;&lt;br /&gt;Our original plan was to move to SharePoint 2010 during the migration. During the first test run it came clear that the heave use of Conchangos Scrum for Team System template in combination with the lack of support and problem to get even the latest SfTS template to work with SharePoint 2010 was a showstopper.Back to wss3 until SfTS supports SharePoint2010&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;New reports missing permissions&lt;/span&gt;&lt;br /&gt;During the migration a reports are created at /TfsReports/DefaultCollection/TeamProject . It turned out that the permissions is not migrated, leaving it inaccessible for team members. Needing to fix this 100+ folders we made a short program to copy the permissions from the old report folders to the new 2010 report folders. You can find the program and the source at my skydrive &lt;a href="http://cid-5d46cae8c0008cf0.office.live.com/browse.aspx/.Public/SyncRsRoles"&gt;http://cid-5d46cae8c0008cf0.office.live.com/browse.aspx/.Public/SyncRsRoles&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conchangos Scrum for Team System wss templates.&lt;/span&gt;&lt;br /&gt;It is a well know fact that the SfTS 2.2 template and TFS2010 upgrades represents a  big problem, good news is that EMC has released plans to make a &lt;a href="http://scrumforteamsystem.com/main-news/sfts-v2-to-v3-migration-tool"&gt;WorkItem Migrator&lt;/a&gt;, at least a  step in the right direction. Never the less, we didn't anticipate to have so much trouble getting SharePoint template for SfTS   project portals in place.  Without it all project portals and document libraries for project based on the SfTS  template is inaccessible, SharePoint simply returning http error  404.&lt;br /&gt;Our solution was to do a simply filecopy of the folder &lt;span style="font-style: italic;"&gt; C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\SiteTemplates\SCRUM&lt;/span&gt;, from the older server to the same location on the new server.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The new buildreport not working&lt;/span&gt;&lt;br /&gt;The jury is still out on this one. The new build report gives us the following error.  &lt;ul&gt;&lt;li style="display: inline; font-family: Verdana; font-size: 8pt; font-weight: normal;"&gt;File  system error: The record ID is incorrect. Physical file:  \\?\D:\OLAPDATA\Data\Tfs_Analysis.0.db\Dim Build  Platform.0.dim\5.BuildPlatformName.(All).ostore. Logical file: .&lt;/li&gt;&lt;/ul&gt;We have spent several hours rebuilding the cube and warehouse without any success. I will post an update when we have solved this issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-4737336635841901050?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/4737336635841901050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2010/09/main-tfs-server-upgrade.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/4737336635841901050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/4737336635841901050'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2010/09/main-tfs-server-upgrade.html' title='Main TFS server upgrade'/><author><name>Jennie Sköld Nederlund</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-3199958083502958805</id><published>2010-08-10T23:48:00.037+02:00</published><updated>2011-04-11T21:34:19.765+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Import Test cases'/><category scheme='http://www.blogger.com/atom/ns#' term='Test'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Word'/><title type='text'>Walkthrough: How to import Word test cases to MTM</title><content type='html'>Lately I been getting lots of hits on my posts about the extended Test case migrator tool, and even some questions on how to use it.  This post is a quick walkthrough to show how to use the tool to import test cases in word documents to Microsoft Test Manager.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Before we start &lt;/span&gt;&lt;br /&gt;The first thing you need to do is to get the extended test case migrator tool running. Please refer to my previous posts&lt;a href="http://mskold.blogspot.com/2010/04/tool-for-import-word-test-case.html"&gt;Tool for import word test case documents to Microsoft Test Manager&lt;/a&gt; and &lt;a href="http://mskold.blogspot.com/2010/06/updates-to-my-extensions-of-testcase.html"&gt;http://mskold.blogspot.com/2010/06/updates-to-my-extensions-of-testcase.html.&lt;/a&gt; You can download either the compiled exe or the complete soure code and compile it yourself.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Getting started &lt;/span&gt;&lt;br /&gt;The first you need to do is verify that your test case documents can be parsed by the extended test case migrator (TCM). The extension I made for  TCM is intended to import test cases written for humans. It relies on that your document is formatted using font styles or colors.  The simplest way to verify if your document can be parsed is simply to try to parse it using the tool.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#1  Select your source &lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cShCn6OcoYQ/TGHZVex-eHI/AAAAAAAAAE4/HXg0jqAz_GA/s1600/Import_Testcase_1.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 400px; height: 321px;" src="http://3.bp.blogspot.com/_cShCn6OcoYQ/TGHZVex-eHI/AAAAAAAAAE4/HXg0jqAz_GA/s400/Import_Testcase_1.png" alt="" id="BLOGGER_PHOTO_ID_5503919182686615666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;After starting and clicking Next in the welcome screen the first real step is to select your data source. In order to import word test cases select the &lt;span style="font-weight: bold;"&gt;Word TestCase document (table format) &lt;/span&gt;and enter or select the path to a folder containing your word  test cases.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#2  Select your target team project &lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cShCn6OcoYQ/TGHZdFSRV8I/AAAAAAAAAFA/AujtsO2DtI0/s1600/Import_Testcase_2.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 400px; height: 321px;" src="http://1.bp.blogspot.com/_cShCn6OcoYQ/TGHZdFSRV8I/AAAAAAAAAFA/AujtsO2DtI0/s400/Import_Testcase_2.png" alt="" id="BLOGGER_PHOTO_ID_5503919313281701826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The next step is to select your target team project. You also need to select the Work Item Type representing  a Test Case.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#3 Create a new settings file&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cShCn6OcoYQ/TGHaNEPUtWI/AAAAAAAAAFI/0v0r-EyzjZY/s1600/Import_Testcase_3.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 400px; height: 321px;" src="http://4.bp.blogspot.com/_cShCn6OcoYQ/TGHaNEPUtWI/AAAAAAAAAFI/0v0r-EyzjZY/s400/Import_Testcase_3.png" alt="" id="BLOGGER_PHOTO_ID_5503920137634624866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The third step is to simply create a new settings file. You can also load a previous saved settings file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#4 Fields listing&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cShCn6OcoYQ/TGHaWDVAcZI/AAAAAAAAAFQ/rLFGYbT4Hds/s1600/Import_Testcase_4.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 400px; height: 321px;" src="http://4.bp.blogspot.com/_cShCn6OcoYQ/TGHaWDVAcZI/AAAAAAAAAFQ/rLFGYbT4Hds/s400/Import_Testcase_4.png" alt="" id="BLOGGER_PHOTO_ID_5503920292008849810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The next step is to modify the list of detected fields. The tools scans a document for labels and captions and presents a list of them.  If you miss any field you can add  and you can them and the tool will check if it can find it. If your list is empty or doesnt contain any of the fields you expected your document layout can't be processed by the current version of the tool.&lt;br /&gt;&lt;br /&gt;You can also delete unwanted fields from the list to make it simpler to handle in the coming steps. When you click next all documents are scanned to verify that the fields can be found in every document. This can take a while if you have many documents, for example 100 documents takes 10-20 minutes (or more) to scan depending on your computer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#5 Map your fields against TFS fields &lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cShCn6OcoYQ/TGHacA8X-aI/AAAAAAAAAFY/S6OwSDhkmAc/s1600/Import_Testcase_5.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 400px; height: 321px;" src="http://3.bp.blogspot.com/_cShCn6OcoYQ/TGHacA8X-aI/AAAAAAAAAFY/S6OwSDhkmAc/s400/Import_Testcase_5.png" alt="" id="BLOGGER_PHOTO_ID_5503920394447878562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now it's time to map your "word" fields against the fields in the tfs test case work item.  The Test Step Title and Test Step Expected Result is treated special and the tool will iterate through all values and create test steps.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#6  Map values against TFS &lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cShCn6OcoYQ/TGHagqW5nTI/AAAAAAAAAFg/ZqVZlGcaXNg/s1600/Import_Testcase_6.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 400px; height: 320px;" src="http://3.bp.blogspot.com/_cShCn6OcoYQ/TGHagqW5nTI/AAAAAAAAAFg/ZqVZlGcaXNg/s400/Import_Testcase_6.png" alt="" id="BLOGGER_PHOTO_ID_5503920474284465458" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;values &lt;/span&gt;&lt;br /&gt;For fields who has defined value lists in TFS you will be prompted to map your word value against the valid TFS values. In this example I mapped the TFS Area fields against the RequirementReference word field in the previous step. This will allows me to map the text values in word to an Area path in TFS.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#7  Save settings   &lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cShCn6OcoYQ/TGHbi9_g_xI/AAAAAAAAAFo/yMrSdJDA0sw/s1600/Import_Testcase_7.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 400px; height: 320px;" src="http://3.bp.blogspot.com/_cShCn6OcoYQ/TGHbi9_g_xI/AAAAAAAAAFo/yMrSdJDA0sw/s400/Import_Testcase_7.png" alt="" id="BLOGGER_PHOTO_ID_5503921613426458386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Before you start importing you can save your settings to a file and change the default location of the log file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#8  Confirm &lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cShCn6OcoYQ/TGHbo1Qcl4I/AAAAAAAAAFw/PYCsd1-QlRY/s1600/Import_Testcase_8.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 400px; height: 320px;" src="http://3.bp.blogspot.com/_cShCn6OcoYQ/TGHbo1Qcl4I/AAAAAAAAAFw/PYCsd1-QlRY/s400/Import_Testcase_8.png" alt="" id="BLOGGER_PHOTO_ID_5503921714160768898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Simply click Save and Migrate to start the import. As most of the work is done in earlier steps the import process is rather quick.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#9 Verify outcome&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cShCn6OcoYQ/TGHb73iGZ7I/AAAAAAAAAF4/a5pFHdaAsn0/s1600/Import_Testcase_9.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 400px; height: 320px;" src="http://1.bp.blogspot.com/_cShCn6OcoYQ/TGHb73iGZ7I/AAAAAAAAAF4/a5pFHdaAsn0/s400/Import_Testcase_9.png" alt="" id="BLOGGER_PHOTO_ID_5503922041189197746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;After the import is completed you will hopefully  se a screen similar to this. You may also receive warnings and errors for part of the import. If you do, click the View output log file link and try to figure out what documents has problems and what to do to it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-3199958083502958805?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/3199958083502958805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2010/08/walkthrough-how-to-import-word-test.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/3199958083502958805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/3199958083502958805'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2010/08/walkthrough-how-to-import-word-test.html' title='Walkthrough: How to import Word test cases to MTM'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cShCn6OcoYQ/TGHZVex-eHI/AAAAAAAAAE4/HXg0jqAz_GA/s72-c/Import_Testcase_1.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-5302132368504203128</id><published>2010-06-08T23:55:00.003+02:00</published><updated>2011-04-11T21:33:31.501+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Import Test cases'/><category scheme='http://www.blogger.com/atom/ns#' term='Test'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Word'/><title type='text'>Updates to my extensions of the TestCase Migrator Tool</title><content type='html'>As described in my &lt;a href="http://mskold.blogspot.com/2010/04/tool-for-import-word-test-case.html"&gt;earlier post&lt;/a&gt; I made some extensions to the Test Case Migration Tool,&lt;a href="http://tcmimport.codeplex.com/%29"&gt; http://tcmimport.codeplex.com/ &lt;/a&gt;so it can handle importing old test cases in word documents to Microsoft Test Manager. Recently I have tested to import 100+ test cases with a slightly different template.  Of course its always something that can be done better so I've updated my extensions to be more tolerant to differences in templates.&lt;br /&gt;&lt;br /&gt;You can find the latest bits &lt;a href="http://cid-5d46cae8c0008cf0.office.live.com/self.aspx/.Public/TCImportExtendedSourceMayUpdate.zip"&gt;http://cid-5d46cae8c0008cf0.office.live.com/self.aspx/.Public/TestCaseMigratorExtendedExe.zip&lt;/a&gt;&lt;br /&gt;You can also find the source at &lt;a href="http://cid-5d46cae8c0008cf0.office.live.com/self.aspx/.Public/TestCaseMigratorExtendedSource.zip"&gt;http://cid-5d46cae8c0008cf0.office.live.com/self.aspx/.Public/TestCaseMigratorExtendedSource.zip&lt;/a&gt;&lt;a href="http://cid-5d46cae8c0008cf0.office.live.com/self.aspx/.Public/TCImportExtendedSourceMayUpdate.zip"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-5302132368504203128?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/5302132368504203128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2010/06/updates-to-my-extensions-of-testcase.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/5302132368504203128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/5302132368504203128'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2010/06/updates-to-my-extensions-of-testcase.html' title='Updates to my extensions of the TestCase Migrator Tool'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-3332009496192019406</id><published>2010-05-29T00:58:00.002+02:00</published><updated>2010-09-02T15:23:33.801+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reports'/><category scheme='http://www.blogger.com/atom/ns#' term='Admin'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS2008'/><title type='text'>Last changed Team projects - Custom Report for tfs 2008</title><content type='html'>As a TFS admin I sometime wonder how many team projects is in use and maybe when it was last changed. Sometimes I've been forced to find out and I have created some SQL queries to run against the warehouse to figure it out.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Packaged into an custom SSRS Report&lt;/span&gt;&lt;br /&gt;Now I have packaged those queries into a custom SSRS report for tfs2008. You download the report at my skydrive &lt;a href="http://cid-5d46cae8c0008cf0.skydrive.live.com/self.aspx/.Public/TeamProjectLastChanged.rdl"&gt;http://cid-5d46cae8c0008cf0.skydrive.live.com/self.aspx/.Public/TeamProjectLastChanged.rdl&lt;/a&gt; Once downloaded you simply needs to upload it to your own TFS Server and point the data source to the tfs standard TFSReportDs shared data source.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;TFS2010 updated version &lt;/span&gt;&lt;a href="http://cid-5d46cae8c0008cf0.office.live.com/self.aspx/.Public/TeamProjectLastChanged2010.rdl"&gt;&lt;span style="color:#ff0000;"&gt;http://cid-5d46cae8c0008cf0.office.live.com/self.aspx/.Public/TeamProjectLastChanged2010.rdl&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-3332009496192019406?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/3332009496192019406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2010/05/last-used-team-projects-custom-report.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/3332009496192019406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/3332009496192019406'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2010/05/last-used-team-projects-custom-report.html' title='Last changed Team projects - Custom Report for tfs 2008'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-2486889328081499811</id><published>2010-05-17T00:20:00.005+02:00</published><updated>2010-05-18T20:07:10.259+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSS'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Upgrade'/><title type='text'>TFS with WSS 3 to SharePoint Foundation 2010 upgrade</title><content type='html'>During the weekend we successfully upgraded a production server from TFS2010Beta2/WSS3 to TFS 2010 RTM/SharePoint Foundation2010 RTM. The new challenge in this, apart from the usual upgrade of a production server, was to include upgrading WSS3 to SharePoint Foundation 2010.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Migration scenario &lt;/strong&gt;&lt;br /&gt;In this case we went for the Server Migration/upgrade scenario, which is very good if you need to verify and test our upgrade routines. This was very important as we to include the move from WSS to SharePoint Foundation 2010 in the upgrade and the WSS upgrade procedure hasn't made it into the official installation documentation yet, so we had to find the right way before we went for the big move.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Don't forget the InstanceId&lt;/strong&gt;&lt;br /&gt;If you migrate your server to a new hardware for testing purposes, or simply keeps the original server on the network, you have to change the instanceid of your server. Buck Hodges has a post on this, including information on how to change instanceid in TFS 2010. &lt;a href="http://blogs.msdn.com/buckh/archive/2006/10/17/creating-a-new-server-from-an-old-one-beware-of-the-instanceid.aspx"&gt;http://blogs.msdn.com/buckh/archive/2006/10/17/creating-a-new-server-from-an-old-one-beware-of-the-instanceid.aspx &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Installation of SharePoint Foundation 2010&lt;/strong&gt;&lt;br /&gt;This was really simple, once I got the install of SharePoint Foundation 2010 right. Sadly to say it took me several tries getting a new unwanted separate SQL instance for SharePoint. If you want to use your existing SQL instance you have to select Server Farm installation and then Complete Server Farm. IF you select that path, you can point out your existing SQL Server instance during configuration.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Upgrade from WSS to SharePoint Foundation 2010 &lt;/strong&gt;&lt;br /&gt;Searching for information how to upgrade tfs &amp;amp; wss to SPF 2010 I found this posts &lt;a href="http://sharepointgeorge.com/2009/upgrading-content-database-sharepoint-2010-database-attach-method/"&gt;http://sharepointgeorge.com/2009/upgrading-content-database-sharepoint-2010-database-attach-method/&lt;/a&gt;&lt;br /&gt;During verification of content db it prompted for two non blocking missing components, as expected, as I had not configured TFS and it SharePoint extensions yet.&lt;br /&gt;Attaching the content db using  &lt;em&gt;stsadm -o addcontentdb -url &lt;url&gt;-databasename&lt;/url&gt;&lt;/em&gt; &lt;database&gt;resulted in an attached and upgraded content database up and running according to the Managed content databases pages in SharePoint Central Administration. Browsing to team project portals did howevere not work at this stage.&lt;br /&gt;&lt;br /&gt;After configuring TFS and upgrading the team project collection witch installs the TFS add-ons to SharePoint, browsing to the project portals worked fine as far as we could se.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The upgrade process in short steps&lt;/span&gt;&lt;br /&gt;Install Server roles according to TFS installation&lt;br /&gt;Install SQL Server according to TFS installation&lt;br /&gt;Install SQL  Server SP1 Cumulative update package 2, KB 970315 (http://support.microsoft.com/kb/970315)&lt;br /&gt;Restore Reporting Services&lt;br /&gt;&lt;/database&gt;&lt;ul&gt;&lt;li&gt;&lt;database&gt;    Stop Reporting services&lt;/database&gt;&lt;/li&gt;&lt;li&gt;&lt;database&gt;    Restore backup,&lt;/database&gt;&lt;/li&gt;&lt;li&gt;&lt;database&gt;    Start &lt;/database&gt;&lt;/li&gt;&lt;li&gt;&lt;database&gt;    Restore encryption keys&lt;/database&gt;&lt;/li&gt;&lt;li&gt;&lt;database&gt;    Remove Orginal server from scale out deployment&lt;/database&gt;&lt;/li&gt;&lt;li&gt;&lt;database&gt;    Verify&lt;/database&gt;&lt;/li&gt;&lt;/ul&gt;&lt;database&gt;Install SharePoint Foundation 2010 &lt;/database&gt;PreReq  &lt;database&gt;&lt;br /&gt;Restart&lt;br /&gt;Install SharePoint Foundation&lt;br /&gt;&lt;/database&gt;&lt;ul&gt;&lt;li&gt;&lt;database&gt;        Select Server Farm, &lt;/database&gt;&lt;/li&gt;&lt;li&gt;&lt;database&gt;        Select Complete &lt;/database&gt;&lt;/li&gt;&lt;li&gt;&lt;database&gt;        Configure &lt;/database&gt;&lt;/li&gt;&lt;li&gt;&lt;database&gt;            Create New Farm&lt;/database&gt;&lt;/li&gt;&lt;li&gt;&lt;database&gt;            Use existing SQL server&lt;/database&gt;&lt;/li&gt;&lt;/ul&gt;&lt;database&gt;&lt;br /&gt;Install Team Foundation Server&lt;br /&gt;Import wss3 content database&lt;br /&gt;&lt;/database&gt;&lt;ul&gt;&lt;li&gt;&lt;database&gt;    Verify using SharePoint 2010 Management Shell and run Test-SPContentDatabase –Name &lt;database&gt; -WebApplication &lt;url&gt;&lt;/url&gt;&lt;/database&gt;&lt;/database&gt;&lt;/li&gt;&lt;li&gt;&lt;database&gt;        2 Missing components&lt;/database&gt;&lt;/li&gt;&lt;li&gt;&lt;database&gt;    Attach database stsadm -o addcontentdb -url &lt;url&gt; -databasename &lt;database&gt;&lt;/database&gt;&lt;/url&gt;&lt;/database&gt;&lt;/li&gt;&lt;/ul&gt;&lt;database&gt;&lt;br /&gt;Configure TFS&lt;br /&gt;Upgrade team project collection&lt;br /&gt;Update Instance Id&lt;br /&gt;&lt;/database&gt;&lt;ul&gt;&lt;li&gt;&lt;database&gt;    iisreset /stop &lt;/database&gt;&lt;/li&gt;&lt;li&gt;&lt;database&gt;    tfsconfig changeserverid /sqlinstance:&lt;datatiername&gt; /databasename:Tfs_Configuration &lt;/datatiername&gt;&lt;/database&gt;&lt;/li&gt;&lt;li&gt;&lt;database&gt;    tfsconfig registerdb /sqlinstance:&lt;datatiername&gt; /databaseName:Tfs_Configuration &lt;/datatiername&gt;&lt;/database&gt;&lt;/li&gt;&lt;li&gt;&lt;database&gt;    iisreset /start &lt;/database&gt;&lt;/li&gt;&lt;li&gt;&lt;database&gt;    net start tfsjobagent&lt;/database&gt;&lt;/li&gt;&lt;/ul&gt;&lt;database&gt;&lt;br /&gt;&lt;/database&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-2486889328081499811?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/2486889328081499811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2010/05/tfs-production-server-with-wss3-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/2486889328081499811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/2486889328081499811'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2010/05/tfs-production-server-with-wss3-to.html' title='TFS with WSS 3 to SharePoint Foundation 2010 upgrade'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-3569489544453033943</id><published>2010-04-21T21:29:00.013+02:00</published><updated>2010-04-21T22:55:38.175+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Test'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='TMAP'/><title type='text'>Sogeti TMAP process template certified and ready</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cShCn6OcoYQ/S89kKerRJ7I/AAAAAAAAADk/988ivN7y5Y8/s1600/VS2010TMap.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 336px; height: 99px;" src="http://4.bp.blogspot.com/_cShCn6OcoYQ/S89kKerRJ7I/AAAAAAAAADk/988ivN7y5Y8/s400/VS2010TMap.png" alt="" id="BLOGGER_PHOTO_ID_5462695004219713458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Today we finalized the RTM version of our TMAP process template and it will soon be available for free download from the official &lt;a href="http://eng.tmap.net/"&gt;TMAP.Net&lt;/a&gt; site there you also can find more information about the TMAP process and the latest news from the testing field. You can also go directly to the download page located at &lt;a href="http://eng.tmap.net/Home/archief/957794.jsp"&gt;http://eng.tmap.net/Home/archief/957794.jsp&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cShCn6OcoYQ/S89hB1-5XPI/AAAAAAAAADM/U86GOiUP_lc/s1600/CertifiedTemplate_2.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 235px; height: 164px;" src="http://2.bp.blogspot.com/_cShCn6OcoYQ/S89hB1-5XPI/AAAAAAAAADM/U86GOiUP_lc/s320/CertifiedTemplate_2.png" alt="" id="BLOGGER_PHOTO_ID_5462691557322349810" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Certified process template&lt;/span&gt;&lt;br /&gt;Sogeti's TMAP template has as the first template passed the new Visual Studio Certified Process Templates Program announced by Microsoft and can therefore use the new Certified process template logo. If you want  to know more about the certification program Stephanie Saad  Cuthbertson has a &lt;a href="http://blogs.msdn.com/stephaniesaad/archive/2010/02/05/new-visual-studio-process-template-certification-program.aspx"&gt;post on the details&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TMAP.codeplex.com &lt;/span&gt;&lt;br /&gt;The TMAP template will continue to develop and improve on codeplex. You will still find the latest bits and contribute on the future directions of the TMAP process template by filing feedback and suggestions at &lt;a href="http://tmap.codeplex.com/"&gt;tmap.codeplex.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-3569489544453033943?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/3569489544453033943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2010/04/sogeti-tmap-process-template-certified.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/3569489544453033943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/3569489544453033943'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2010/04/sogeti-tmap-process-template-certified.html' title='Sogeti TMAP process template certified and ready'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cShCn6OcoYQ/S89kKerRJ7I/AAAAAAAAADk/988ivN7y5Y8/s72-c/VS2010TMap.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-1363302319559113543</id><published>2010-04-21T00:21:00.000+02:00</published><updated>2010-04-21T00:22:22.010+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Upgrade'/><title type='text'>Upgrading TFS 2010 RTM from pre-release versions</title><content type='html'>Today I upgraded one of our internal pre-release server and moved in to a  new machine. What before in the old days with TFS2008 could be a real  painful experience taking several hours or even days to perform could  now mostly be handled in an hour.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Preparations&lt;/span&gt;&lt;br /&gt;This post is simply a brief description of  the main steps and what to do and expect. If you want a more detailed  information and as preparation always is the key to success I recommend  you to read the following&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2D531219-2C39-4C69-88EF-F5AE6AC18C9F&amp;amp;displaylang=en&amp;amp;displaylang=en"&gt;Microsoft  Team Foundation 2010 Install guide &lt;/a&gt;&lt;/li&gt;&lt;li&gt;VS ALM Rangers &lt;a href="http://vs2010upgradeguide.codeplex.com/"&gt;TFS 2010 Upgrade guide&lt;/a&gt;  at codeplex&lt;/li&gt;&lt;li&gt;Bryan Krigers post on&lt;a href="http://blogs.msdn.com/bkrieger/archive/2009/10/21/team-foundation-server-2010-upgrade.aspx"&gt;  TFS 2010 Upgrade&lt;/a&gt;&lt;/li&gt;&lt;li&gt;SSW's &lt;a href="http://sharepoint.ssw.com.au/Standards/TFS/RulesToBetterTFS2010Migration/Pages/default.aspx"&gt;Rules  To Better TFS 2010 Migration&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Backup and In place upgrade&lt;/span&gt;&lt;br /&gt;The first step is to backup  the current environment, be it databases or taking a snapshot of your  existing environment.  Once that's done Its time to uninstall the  previous installed pre-release versions.  You can leave the .Net  framework as it will be upgraded, but TFS2010 Beta2/RC must be  uninstalled. After removing the Pre release versions simply install  TFS2010 RTM, It's a very easy and quite fast but did take me a reboot to  finish it.&lt;br /&gt;Once installed its time to configure your server. If your  moving from prerelease versions it's important that you select Upgrade  in the first page of the configuration wizard. Follow the steps of the  wizard and then you finish the upgrade you will have an upgraded Team  Project Collection.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Move to new  machine =  Detach, Move,  Attach&lt;/span&gt;&lt;br /&gt;If you want to move to a new  clean machine (without any previous installed beta software) you simply  Detach your newly upgraded team project collection using Team Foundation  Administrative Console. Once detached backup the database  TFS_MyProjectcollectionName to file using SQL Manager.&lt;br /&gt;Now it's time  to move to a new fresh start. Simply Install and configure TFS2010 RTM  on a clean machine.  After its done, restore the previous backed up  database to the new SQL Server using SQL Manager.  Once installed its  time to attach, simply point out the database and attach it to your  server and you now have your upgraded team project collection up and  running on your new server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-1363302319559113543?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/1363302319559113543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2010/04/upgrading-tfs-2010-rtm-from-pre-release.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/1363302319559113543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/1363302319559113543'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2010/04/upgrading-tfs-2010-rtm-from-pre-release.html' title='Upgrading TFS 2010 RTM from pre-release versions'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-2495402792612007544</id><published>2010-04-09T22:59:00.007+02:00</published><updated>2010-06-09T00:00:21.960+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Test'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><title type='text'>Tool for import word test case documents to Microsoft Test Manager</title><content type='html'>&lt;span style="color: rgb(255, 0, 0);"&gt;Updates to my extensions of the TestCase Migrator Tool  &lt;a href="http://mskold.blogspot.com/2010/06/updates-to-my-extensions-of-testcase.html"&gt;http://mskold.blogspot.com/2010/06/updates-to-my-extensions-of-testcase.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Recently I had a case there I needed to import old test cases written in  word into Microsoft Test Manager.  I looked around for  a tool capable  of importing an ordinary test case written in word, but I didn't find  any tool or solution.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Word - the  world's most used test tool ?&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cShCn6OcoYQ/S7-YWttleyI/AAAAAAAAAC0/Z0WqXXrv-L4/s1600/TestCase.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 227px; height: 320px;" src="http://1.bp.blogspot.com/_cShCn6OcoYQ/S7-YWttleyI/AAAAAAAAAC0/Z0WqXXrv-L4/s320/TestCase.png" alt="" id="BLOGGER_PHOTO_ID_5458248789391670050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In my experience  most projects  who have had formalized test cases has done them in word documents  containing test case information (title of the test case, description,  pre-conditions, use case  identification) and test steps. The test steps  has the format of a table with columns for actions and expected  results.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Test Case Migration  Tool on codeplex &lt;/span&gt;&lt;br /&gt;The best match I found was the Test Case  Migrator Tool on codeplex (&lt;a href="http://tcmimport.codeplex.com/"&gt;http://tcmimport.codeplex.com&lt;/a&gt;).  With this tool I could import Excel test cases and MTH files  (Microsoft's word template for test cases  from earlier versions of  Microsoft Test Edition).  This looked like a promising tool but when I  tried it on our existing test cases written by a standard test case  template the tool didn't manage to import the test cases. It seemed the  tool was to hard connected to the structure of the MTH template.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Extending the Test ca&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cShCn6OcoYQ/S7-aXKzIVgI/AAAAAAAAADE/cNU8jCJuL1I/s1600/ExtendedTestCaseImport.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 257px;" src="http://2.bp.blogspot.com/_cShCn6OcoYQ/S7-aXKzIVgI/AAAAAAAAADE/cNU8jCJuL1I/s320/ExtendedTestCaseImport.png" alt="" id="BLOGGER_PHOTO_ID_5458250996222809602" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;se migration Tool&lt;/span&gt;&lt;br /&gt;As  the project was on codeplex with the source code available I did take a  look to see if I could adopt the tool to our template. As the tool had a  nice separation of the logic for parsing and importing data sources , I  simply created a new data source  and wrote my own parsing logic for  our template.  At first i simply replaced the MTH data source with my,  but ones I got the parsing logic to work I started to integrate it as a  new data source in the UI. This turned out to be a bigger task then  writing the parsing logic. It took some time but at least the result  looks good.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The extended Test  Case Migration Tool is available&lt;/span&gt;&lt;br /&gt;I have uploaded both the &lt;a href="http://cid-5d46cae8c0008cf0.skydrive.live.com/self.aspx/.Public/TestCaseMigratorExtendedExe.zip"&gt;compiled  version&lt;/a&gt; and the &lt;a href="http://cid-5d46cae8c0008cf0.skydrive.live.com/self.aspx/.Public/TCImportExtendedSource.zip"&gt;source&lt;/a&gt;  with my modifications as I guess many other will find themselves in the  same situation as I was - looking for a tool to batch import word test  cases.   Hopefully this could be a solution for some of you .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-2495402792612007544?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/2495402792612007544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2010/04/tool-for-import-word-test-case.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/2495402792612007544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/2495402792612007544'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2010/04/tool-for-import-word-test-case.html' title='Tool for import word test case documents to Microsoft Test Manager'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cShCn6OcoYQ/S7-YWttleyI/AAAAAAAAAC0/Z0WqXXrv-L4/s72-c/TestCase.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-577409902791193817</id><published>2010-04-08T23:07:00.000+02:00</published><updated>2010-06-09T00:01:39.686+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS Scorecard'/><category scheme='http://www.blogger.com/atom/ns#' term='Admin'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS2008'/><title type='text'>Contacting all users running non Tfs2010 compatible clients</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cShCn6OcoYQ/TA664YlQ3SI/AAAAAAAAAEY/i0k33lTafuQ/s1600/Tfs_ScoreCard_Mail.PNG"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 286px; height: 400px;" src="http://2.bp.blogspot.com/_cShCn6OcoYQ/TA664YlQ3SI/AAAAAAAAAEY/i0k33lTafuQ/s400/Tfs_ScoreCard_Mail.PNG" alt="" id="BLOGGER_PHOTO_ID_5480523274390658338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Looking at migrations of several tfs servers with 100+ users, I got the urgent need to track and inform users not already upgraded vs2008 &amp;amp; vs2005 with forward compatibility pack. Tracking is easy, I use the Tfs Scorecard and its activity logging features to figure out who is running vs200 RTM and SP1 clients. The problem is that I don't get a good list to paste into a mail, due to reports format and user formats.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Easier to send mail &lt;/span&gt;&lt;br /&gt;After looking at the report a number of times and thinking " It would be good to have an send mail button" I finally did something about it. In the Tfs Scorecard clients report I added a list of user accounts and a Send Email link creating a new email with all email addresses, visible if you expand the first level.&lt;br /&gt;This latest feature is now available in source control at &lt;a href="http://tfsscorecard.codeplex.com/"&gt;http://tfsscorecard.codeplex.com &lt;/a&gt;, direct link &lt;a href="http://tfsscorecard.codeplex.com/SourceControl/changeset/changes/46822"&gt;http://tfsscorecard.codeplex.com/SourceControl/changeset/changes/46822&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-577409902791193817?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/577409902791193817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2010/06/contacting-all-users-running-non.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/577409902791193817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/577409902791193817'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2010/06/contacting-all-users-running-non.html' title='Contacting all users running non Tfs2010 compatible clients'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cShCn6OcoYQ/TA664YlQ3SI/AAAAAAAAAEY/i0k33lTafuQ/s72-c/Tfs_ScoreCard_Mail.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-37120959793941106</id><published>2010-03-26T08:21:00.018+01:00</published><updated>2010-04-09T23:44:44.096+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Test'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='TMAP'/><title type='text'>Swedish site about VS2010 TMAP process template</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cShCn6OcoYQ/S7Bzxiob22I/AAAAAAAAACs/T0WkjNtBoyE/s1600/TMAP_SaveMoney_Front.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 229px; height: 320px;" src="http://4.bp.blogspot.com/_cShCn6OcoYQ/S7Bzxiob22I/AAAAAAAAACs/T0WkjNtBoyE/s320/TMAP_SaveMoney_Front.png" alt="" id="BLOGGER_PHOTO_ID_5453986443692858210" border="0" /&gt;&lt;/a&gt;Now you can read more about Sogeti's TMAP process template for Visual Studio 2010 (in Swedish). At www.sogeti.se/Test-Microsoft you can find a brief description of Microsoft test tools and Sogeti's TMAP process template.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TMAP Flyers&lt;/span&gt;&lt;br /&gt;You can also download flyers (in Swedish) for the VS2010 TMAP and process template. There is also flyers focused only on TMAP as a method and Sogeti's other testing services.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Events about TMAP and Microsoft Test tools &lt;/span&gt;&lt;br /&gt;You can also find information about upcoming events around Microsoft test tools and TMAP. The first event will be at Microsoft Sweden on the 23 of April. This event will be followed by several events around the country.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-37120959793941106?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/37120959793941106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2010/03/swedish-site-about-vs2010-tmap-process.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/37120959793941106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/37120959793941106'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2010/03/swedish-site-about-vs2010-tmap-process.html' title='Swedish site about VS2010 TMAP process template'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cShCn6OcoYQ/S7Bzxiob22I/AAAAAAAAACs/T0WkjNtBoyE/s72-c/TMAP_SaveMoney_Front.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-6851170350999551694</id><published>2010-03-09T19:39:00.008+01:00</published><updated>2010-04-09T23:44:27.955+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Test'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='TMAP'/><title type='text'>TMAP for VS2010 RC released</title><content type='html'>&lt;a href="http://www.clemensreijnen.nl/"&gt;Clemens&lt;/a&gt; just released a new version of Sogetis&lt;a href="http://tmap.codeplex.com/"&gt; TMAP process template for VS2010&lt;/a&gt;. Ive just started to install it on our swedish 2010 pre-release server so our swedish testers can evaluate ,learn and contribute to it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-6851170350999551694?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/6851170350999551694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2010/03/tmap-for-vs2010-rc-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/6851170350999551694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/6851170350999551694'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2010/03/tmap-for-vs2010-rc-released.html' title='TMAP for VS2010 RC released'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-8555575523999977997</id><published>2010-02-28T19:28:00.011+01:00</published><updated>2010-06-03T00:38:44.294+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFSAPI'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Upgrading TFS event subscriptions to 2010 SDK</title><content type='html'>Some days ago I started to upgrade one of my TFS customization to the 2010 SDK.  The application I moved uses WCF to host its services and automatically subscribes and consumes TFS events. It didn’t turn to be the easy, straight on upgrade I thought it should be. This is my findings during the upgrade.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Relocated TFS SDK assemblies&lt;br /&gt;&lt;/span&gt;The first (and about the only) thing I expected was to be replace TfsServer with TfsTeamProjectCollection, and in some cases TfsConfigurationServer. Moving my solution over to a new and clean machine with only VS2010 on it, I discovered that the Tfs SDK Assemblies has moved away from its old locations. After some searching I found the new location &lt;span style="font-family:courier new;"&gt;C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Where did IEventService go ?&lt;/span&gt;&lt;br /&gt;After finding the new assemblies, replaced TfsServer with TfsTeamProjectCollection I still had some compiler errors, the IEventService interface was unknown? I tried to search for any information about changes in 2010 but came up short. After some searching I found it again. It had simply moved around in the namespaces and is now located at Microsoft.TeamFoundation.Framework.Client namespace.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Windows 7 security&lt;/span&gt;&lt;br /&gt;With all compiler errors fixed, it was time for a first test. I started the application and got direct failure. It turns out that you have to grant rights to url namespaces with&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;netsh http add urlact url=http://+:8001/ServiceUrl user=mydomain/mysuser&lt;/span&gt;&lt;br /&gt;After granting rights to my user the the services starts and the  application subscribes to events.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TFS2010 switched to Soap1.2&lt;/span&gt;&lt;br /&gt;After some testing I don’t receive any incoming notifications. Following Grant holidays post TFS2010: Diagnosing Email and SOAP subscription failures (&lt;a href="http://blogs.msdn.com/granth/archive/2009/10/28/tfs2010-diagnosing-email-and-soap-subscription-failures.aspx"&gt;http://blogs.msdn.com/granth/archive/2009/10/28/tfs2010-diagnosing-email-and-soap-subscription-failures.aspx&lt;/a&gt;) shows me the following error&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;HTTP code 415: Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'&lt;/span&gt;&lt;br /&gt;This indicates that tfs has switch to Soap 1.2.  To solve this I simply switch the bindings of my services from BasicHttpBinding till wsHttpBinding&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Finaly working&lt;br /&gt;&lt;/span&gt;The last thing it took to get the events working was to change the security mode to SecurityMode.None.  So if you want to set up an WCF endpoint this code will do it, without any extra configuration files.&lt;br /&gt;&lt;br /&gt;       Uri baseaddress = new Uri("http://" + System.Environment.MachineName + ":8001");&lt;br /&gt;       srvHost = new ServiceHost(typeof(NotificationServiceImpl), baseaddress);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       // Check to see if the service host already has a ServiceMetadataBehavior&lt;br /&gt;       ServiceMetadataBehavior smb = srvHost.Description.Behaviors.Find&lt;servicemetadatabehavior&gt;();&lt;br /&gt;       // If not, add one&lt;br /&gt;       if (smb == null)&lt;br /&gt;           smb = new ServiceMetadataBehavior();&lt;br /&gt;       smb.HttpGetEnabled = true;&lt;br /&gt;       smb.MetadataExporter.PolicyVersion = PolicyVersion.Default;&lt;br /&gt;       srvHost.Description.Behaviors.Add(smb);&lt;br /&gt;       // Add MEX endpoint&lt;br /&gt;       srvHost.AddServiceEndpoint(&lt;br /&gt;         ServiceMetadataBehavior.MexContractName,&lt;br /&gt;         MetadataExchangeBindings.CreateMexHttpBinding(),&lt;br /&gt;         "mex"&lt;br /&gt;       );&lt;br /&gt;&lt;br /&gt;       srvHost.AddServiceEndpoint(typeof(INotificationService), new WSHttpBinding(SecurityMode.None ), "StructureChangeNotify");&lt;br /&gt;      srvHost.Open();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Complete code &lt;/span&gt;&lt;br /&gt;Below you can find the complete code, you can also download a zip file with the solution from my skydrive &lt;a href="http://cid-5d46cae8c0008cf0.skydrive.live.com/self.aspx/.Public/EventSubscriber2010.zip"&gt;http://cid-5d46cae8c0008cf0.skydrive.live.com/self.aspx/.Public/EventSubscriber2010.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;// INotifyServices.cs&lt;br /&gt;namespace EventSubscriber&lt;br /&gt;{&lt;br /&gt;   [ServiceContract(Namespace = "http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03")]&lt;br /&gt;   public interface INotificationService&lt;br /&gt;   {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       [OperationContract(Action = "http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03/Notify", ReplyAction="*")]&lt;br /&gt;       [XmlSerializerFormat(Style = OperationFormatStyle.Document)] /* Took me hours to figure this out! */&lt;br /&gt;       void Notify(string eventXml, string tfsIdentityXml);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//&lt;/servicemetadatabehavior&gt;NotifyServices.cs&lt;br /&gt;&lt;servicemetadatabehavior&gt;namespace EventSubscriber&lt;br /&gt;{&lt;br /&gt;   public class NotificationServiceImpl : INotificationService&lt;br /&gt;   {&lt;br /&gt;       void INotificationService.Notify(string eventXml, string tfsIdentityXml)&lt;br /&gt;       {&lt;br /&gt;           MessageBox.Show(eventXml);&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Form.cs&lt;br /&gt;using System;&lt;br /&gt;using System.Windows.Forms;&lt;br /&gt;using Microsoft.TeamFoundation.Framework.Client;&lt;br /&gt;using Microsoft.TeamFoundation.Client;&lt;br /&gt;&lt;br /&gt;using System.ServiceModel;&lt;br /&gt;using System.ServiceModel.Description;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;namespace EventSubscriber&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   public partial class Form1 : Form&lt;br /&gt;   {&lt;br /&gt;       protected ServiceHost srvHost;&lt;br /&gt;       protected int subscriptionId;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       public Form1()&lt;br /&gt;       {&lt;br /&gt;           InitializeComponent();&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       private void cmdStartWCF_Click(object sender, EventArgs e)&lt;br /&gt;       {&lt;br /&gt;&lt;br /&gt;           Uri baseaddress = new Uri("http://" + System.Environment.MachineName + ":8001");&lt;br /&gt;           srvHost = new ServiceHost(typeof(NotificationServiceImpl), baseaddress);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;           // Check to see if the service host already has a ServiceMetadataBehavior&lt;br /&gt;           ServiceMetadataBehavior smb = srvHost.Description.Behaviors.Find&lt;servicemetadatabehavior&gt;();&lt;br /&gt;           // If not, add one&lt;br /&gt;           if (smb == null)&lt;br /&gt;               smb = new ServiceMetadataBehavior();&lt;br /&gt;           smb.HttpGetEnabled = true;&lt;br /&gt;           smb.MetadataExporter.PolicyVersion = PolicyVersion.Default;&lt;br /&gt;           srvHost.Description.Behaviors.Add(smb);&lt;br /&gt;           // Add MEX endpoint&lt;br /&gt;           srvHost.AddServiceEndpoint(&lt;br /&gt;             ServiceMetadataBehavior.MexContractName,&lt;br /&gt;             MetadataExchangeBindings.CreateMexHttpBinding(),&lt;br /&gt;             "mex"&lt;br /&gt;           );&lt;br /&gt;&lt;br /&gt;           srvHost.AddServiceEndpoint(typeof(INotificationService), new WSHttpBinding(SecurityMode.None), "WorkItemChangedNotify");&lt;br /&gt;         &lt;br /&gt; &lt;br /&gt;         &lt;br /&gt;           srvHost.Open();&lt;br /&gt;&lt;br /&gt;           lblRunning.Text = "Running";&lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       private void cmdStopWCF_Click(object sender, EventArgs e)&lt;br /&gt;       {&lt;br /&gt;           srvHost.Close();&lt;br /&gt;           lblRunning.Text = "Stoped";&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       private void cmdSubscribe_Click(object sender, EventArgs e)&lt;br /&gt;       {&lt;br /&gt;         &lt;br /&gt;&lt;br /&gt;           TfsTeamProjectCollection tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(txtServerUrl.Text));&lt;br /&gt;           tpc.EnsureAuthenticated();&lt;br /&gt;         &lt;br /&gt;         &lt;br /&gt;           IEventService eventService = tpc.GetService(typeof(IEventService)) as IEventService;&lt;br /&gt;           DeliveryPreference delPref = new DeliveryPreference();&lt;br /&gt;           delPref.Address = "http://" + System.Environment.MachineName + ":8001/WorkItemChangedNotify";&lt;br /&gt;           delPref.Schedule = DeliverySchedule.Immediate;&lt;br /&gt;           delPref.Type = DeliveryType.Soap;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;           subscriptionId = eventService.SubscribeEvent(System.Environment.UserDomainName + "\\" + System.Environment.UserName, "WorkItemChangedEvent", "", delPref);&lt;br /&gt;           lblSubId.Text = subscriptionId.ToString();&lt;br /&gt;&lt;br /&gt;         &lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       private void cmdUnsubscribe_Click(object sender, EventArgs e)&lt;br /&gt;       {&lt;br /&gt;&lt;br /&gt;           TfsTeamProjectCollection tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(txtServerUrl.Text));&lt;br /&gt;&lt;br /&gt;           IEventService eventService = tpc.GetService(typeof(IEventService)) as IEventService;&lt;br /&gt;           eventService.UnsubscribeEvent(subscriptionId);&lt;br /&gt;           lblSubId.Text = "na";  &lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;     &lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/servicemetadatabehavior&gt;&lt;/servicemetadatabehavior&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-8555575523999977997?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/8555575523999977997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2010/02/upgrading-tfs-event-subscriptions-to.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/8555575523999977997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/8555575523999977997'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2010/02/upgrading-tfs-event-subscriptions-to.html' title='Upgrading TFS event subscriptions to 2010 SDK'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-4703462462906587063</id><published>2010-01-20T09:19:00.010+01:00</published><updated>2010-02-01T10:37:56.039+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Profiler'/><title type='text'>Performance optimizing with the vs2010 profiler I</title><content type='html'>&lt;span&gt;Optimizing existing code for performance is one of my favorit tasks.  It is a work what gives immediate measurable feedback, always learns you something new, and is in many cases easier then you think, especially if you use the new profiler in vs2010. &lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Setup&lt;/span&gt;&lt;br /&gt;The first thing you need to do is find some way to test that you still deliver the same functionality. Now days this tends to be less of a problem, as many projects tends to have some kind of unit tests (although in many cases it’s more automated Integration tests) . If not it time to write some &lt;br /&gt;Other ways to accomplish this is to agree/ write some testcases&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Establish a base line&lt;/span&gt;&lt;br /&gt;Once you have a way to test that you don’t (unknowingly) change the functionality its time to find and reproduce the performance issues.  It is not reproducible in a new environment, it's in most cases better to try to find the bottlenecks in the environment before you go for optimizing the code.&lt;br /&gt;After  reproducing the performance issues, the next step is to establish a base line. By setting a baseline before you start changing the code you have something to compare your results against. Establishing a baseline is more a procedure and some extra thoughts on how to test and measure your progress. In practical it’s the first performance report you collect from your system saved away&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Creating a performance session&lt;/span&gt;&lt;br /&gt;Now its time to get started, simply create a new performance session, As before you can choose between sampling and instrumentation.Sampling providing a quick and good enough approach and instrumenting as an more exact and complex approach.  I tend to end up doing the instrumenting, although I must admit sampling really is good enough for me, I guess I like the feeling of exactly knowing what’s  going on.  You can read at msdn: &lt;a href="http://msdn.microsoft.com/en-us/library/ms182398%28VS.100%29.aspx"&gt;Walkthrough: Profiling Applications&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;All in one profiling&lt;/span&gt;&lt;br /&gt;A new feature in the Vs2010 profiler is that it now collects data about calls to other tires like the database. Before I was most of the time forced to use both the Profiler and SQL server profiler to collect information about database interactions and where execution times.  With VS2010 I now can collect basic database interaction information directly in the VS2010 profiler, showing you the queries executed and their execution time. This information is valuable enough to point me in the right direction witch query to look deeper into, although I still can see cases there I will use the SQL Server Profiler.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Better performance reports&lt;/span&gt;&lt;br /&gt;One other great improvement from usability perspective is the new graphical presentation of your function, both showing a graphical representation of the time spent in the function, and the code annotated with execution times! The graphical representation of the function calls is also clickable. This makes it really simple and almost joyful to navigate around in your callstack looking at the code and the execution times, giving you a quick idea about what needs and can be improved.&lt;br /&gt;&lt;a href="http://blogs.msdn.com/colinth/"&gt;Colin Thomsen&lt;/a&gt; has writen 2 post about the new performance reports &lt;a href="http://blogs.msdn.com/colinth/archive/2009/12/31/vs2010-new-profiler-summary-page.aspx"&gt;VS2010: New Profiler Summary Page&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/colinth/archive/2010/01/18/vs2010-investigating-a-sample-profiling-report-function-details.aspx"&gt;VS2010: Investigating a sample profiling report (Function Details)&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-4703462462906587063?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/4703462462906587063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2010/01/performance-optimizing-with-vs2010.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/4703462462906587063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/4703462462906587063'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2010/01/performance-optimizing-with-vs2010.html' title='Performance optimizing with the vs2010 profiler I'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-2820754500313668831</id><published>2009-12-08T16:59:00.004+01:00</published><updated>2009-12-08T17:02:24.253+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Admin'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>A new beginign for the TFS AdminTool</title><content type='html'>&lt;span&gt;If I had to pick the most important tool for TFS, it would without a doubt be the TFS Admin tool. It has saved me (and many others) a lot of trouble and many, many hours. To be truly honest it has made me say some bad words to, from time to time.&lt;br /&gt;This makes it extra joyful to read Ladislau’s &lt;/span&gt;&lt;a href="http://blogs.msdn.com/lszomoru/archive/2009/12/07/tfs-administration-tool-2-0-ctp-has-been-released.aspx"&gt;post&lt;/a&gt;&lt;span&gt;  on the release of a CTP for the new TFS Admin 2.0 version with TFS2010 Beta2 support.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;New user interface&lt;/span&gt;&lt;br /&gt;The CTP shows of a completely new user interface.  New Features includes&lt;br /&gt;•    bulk edit of users&lt;br /&gt;•    pending changes window&lt;br /&gt;•    output/trace  window.&lt;br /&gt;The most important is that the new UI seems to be more reliable than the old one.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Completely redesigned and rewritten codebase&lt;/span&gt;&lt;br /&gt;The new user interface is not the only thing the team behind the TFS admin tool has accomplished. The TFS Admin code has gone through a major reconstruction, separating the user interface from the logic and making the code more testable. The core management of user rights is package in a separate project/assembly making it very easy to use/and extend. It is now possible to write your own gui/process and relay on the TFS admin tool to take care of the boring and time consuming tasks. Great news for the TFS community!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-2820754500313668831?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/2820754500313668831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2009/12/if-i-had-to-pick-most-important-tool.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/2820754500313668831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/2820754500313668831'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2009/12/if-i-had-to-pick-most-important-tool.html' title='A new beginign for the TFS AdminTool'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-7790405982325583068</id><published>2009-10-15T00:18:00.011+02:00</published><updated>2009-10-22T21:44:02.060+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UML'/><category scheme='http://www.blogger.com/atom/ns#' term='VSTS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>VSTS2010 as a modeling tool II</title><content type='html'>In my last post I wrote about VSTS 2010 as a modeling tool for more abstract levels like general UML illustrations and requirements modeling. In this post I will take a look at VSTS2010 as a modeling tool for more technical modeling.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;UML at the concrete level&lt;/span&gt;&lt;br /&gt;The next step after requirements is usually to do some kind of analyzing and/or basic design as the first step towards the destination - real code. After the initial design the next step is to complete the design into a fully technical specification. Now days many projects tend to skip formal analyzing and initial design and go direct to coding. For the people who do go all the way there is/has been tools like Rational Rose/XDE, Enterprise Architect  and UModel who could even go the whole way to generate code from the design.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;VSTS2010 as an analyzing and initial design tool&lt;/span&gt;&lt;br /&gt;Doing analyzing and initial design requires more of your tool than just fancy images. You need some kind of repository to share and reuse your discovered elements. VSTS2010 handles this through the UML Model Explorer. The model explorer act as an in memory repository making it possible to browse through your defined elements. You can organize your elements hierarchy in the model explorer by creating package.&lt;br /&gt;In VSTS2010 you can create class, activity and sequence diagrams and drag and drop elements from the model explorer to your diagrams. Changing objects, like renaming classes or operations, updates all diagrams. It is also possible to promote object and messages to classes and operations. Basically it got most of the capabilities needed for analyzing and initial design of a system.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;VSTS2010 as an advanced design first tool &lt;/span&gt;&lt;br /&gt;When it comes to doing model first design and more advanced scenarios this first version of Microsoft’s UML modeling tools hits its limitation. The first and most important limitation for using as a complete or advanced design tool is the lack of connection to the source code. Other tools like Enterprise Architect from SparxSystems or UModel from Altova can go the whole way and synchronize (round tripping) your design model and source code.&lt;br /&gt;&lt;br /&gt;Even if I could model everything inside VSTS it is not much use going to that kind of detail, if I can’t reuse it to create code. Putting that much effort in a design model requires the ability to generate code and sync changes in code back to the model.&lt;br /&gt;&lt;br /&gt;The second limitation or showstopper is the lack of import export features. Especially the capability to import models or code to the model makes it harder to start using it on an existing project. You basically have to create all your elements by hand if you want to use it on an existing project. It would be really useful to have the capability to import source code to generate classes in the model.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;VSTS2010 features for understanding existing code&lt;br /&gt;&lt;/span&gt;Even if VSTS2010 lack some vital capabilities as an advanced design first model tool, it has many advanced features for architecture and design. VTST2010 focus a lot on understanding your existing code, and the architectural explorer and the architectural tools provides good value and is worth a own post. When it comes to design and UML tools VSTS2010 has a great function for generating sequence diagrams from code, and beta2 promise to be even better, providing drilldown, comments and interactivity in the sequence diagrams making it even  easier to understand the existing design.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Summary and reflections&lt;/span&gt;&lt;br /&gt;I think that the VTST2010 modeling tools can provide a value in most projects, as a general UML tool or as a tool for analyzing and initial design. If you don't have a modeling tool today, or have an advanced tool you're not using to the full extent should definitely take a look at the model capabilities of VSTS2010.  One good way is to stay tuned to Cameron Skinner's blog and his &lt;a href="http://blogs.msdn.com/camerons/archive/2009/10/19/modeling-and-visualization-in-visual-studio-2010-ultimate.aspx"&gt;coming post on modeling in VSTS2010.&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-7790405982325583068?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/7790405982325583068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2009/10/vsts2010-as-modeling-tool-ii.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/7790405982325583068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/7790405982325583068'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2009/10/vsts2010-as-modeling-tool-ii.html' title='VSTS2010 as a modeling tool II'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-8274905138081284427</id><published>2009-10-06T21:07:00.021+02:00</published><updated>2009-10-12T14:43:28.016+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UML'/><category scheme='http://www.blogger.com/atom/ns#' term='VSTS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>VSTS2010 as a modeling tool</title><content type='html'>Earlier this week I had the opportunity to take the VSTS beta out for a test drive as a modeling tool. My task was to suggest and describe possible scenarios of usage for an external vendor. Luckily I had a virtual environment with vsts2010 beta at hand (I never leave home without it :) ) So I took vsts out for a spin as my modeling tool.&lt;br /&gt;&lt;br /&gt;&lt;font style="font-weight: bold;"&gt;Communicating at an abstract level&lt;/font&gt;&lt;br /&gt;The task was really to communicate, at a high abstraction level, complex scenarios and interactions between the user, part of our system and part of the vendor's system. After thinking about it for a while I decided to try a sequence diagrams to illustrate the interactions. So I started creating a new sequence diagram. Doing so was quite easy and in a couple of minutes I had my first sequence ready. But drawing a sequence diagram is only usefull if you can publish it. In order to do so I simply copied and pasted the diagram into my word document.&lt;br /&gt;&lt;br /&gt;&lt;font style="font-weight: bold;"&gt;VSTS2010 as a basic UML drawing tool&lt;/font&gt;&lt;br /&gt;As a drawing tool for basic UML illustration I must say VSTS2010 looks really good. Of course there are always things you miss or wish for, especially in a version one beta. My biggest issue was that I wasn’t able to change the icon for the objects in the head of the lifeline. The first overall impression is that it is easy to work with and have a good feeling as a drawing tool.&lt;br /&gt;&lt;br /&gt;&lt;font style="font-weight: bold;"&gt;VSTS2010 as a requirements modeling tool&lt;br /&gt;&lt;/font&gt;As it felt good as a drawing tool I got curious if it could be used more as a modeling tool in a project. One of the first things in a project is in most cases modeling requirements in some way.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cShCn6OcoYQ/StEf5uJdj7I/AAAAAAAAACc/RBSN9rroo_s/s1600-h/ucModelExampl,e2.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 272px; height: 320px;" src="http://3.bp.blogspot.com/_cShCn6OcoYQ/StEf5uJdj7I/AAAAAAAAACc/RBSN9rroo_s/s320/ucModelExampl,e2.JPG" alt="" id="BLOGGER_PHOTO_ID_5391125305439915954" border="0"&gt;&lt;/a&gt;In VSTS2010 modeling requirements is mainly done by creating use case diagrams. Once again it is fast and easy to create a use case diagram and populate it with actors, use case and systems boundaries.  In VSTS2010 you can create (or link to ) a user story work item (or any other work item). This gives you a direct link from the high level model to the detailed requirements documentation.  Another feature in VSTS2010 is that you can add artifacts to your use case diagram and link them to either work items or files in general. My colleague Clemens Reijnen wrote a post on this &lt;a href="http://www.clemensreijnen.nl/post/2009/09/03/Enrich-VSTA-2010-Use-case-diagram-with-SketchFlow-Screens.aspx"&gt;Enrich VSTA 2010 Use case diagram with SketchFlow Screens&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;font style="font-weight: bold;"&gt;Summary and reflections&lt;/font&gt;&lt;br /&gt;I have many times over the years reflected over the lack of a good tools, or perhaps good enough tools, for UML modeling. Either you had a graphic library like Visio or a highly specialized tool for design with a steep learning curve, like Rational Rose/XDE. I hope and it feels like the VSTS2010 UML modeling tools could finally fill that gap and provide something in between Visio and the specialized tools. Let’s hope Microsoft package this so it can widely spread and used from all vsts editions.&lt;br /&gt;Speaking about filling holes, I’m also impressed with the way it’s possible to tie together requirements modeling, specification and even test, out of the box in vsts2010.&lt;br /&gt;&lt;br /&gt;In the next post I will take a look if and how the UML modeling tools in VSTS2010 can be used for analyzing and designing a system.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-8274905138081284427?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/8274905138081284427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2009/10/vsts2010-as-modeling-tool.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/8274905138081284427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/8274905138081284427'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2009/10/vsts2010-as-modeling-tool.html' title='VSTS2010 as a modeling tool'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cShCn6OcoYQ/StEf5uJdj7I/AAAAAAAAACc/RBSN9rroo_s/s72-c/ucModelExampl,e2.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-6884652782322187986</id><published>2009-09-28T00:48:00.006+02:00</published><updated>2009-10-07T23:39:01.560+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VSTS2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Admin'/><title type='text'>VSTS2010 team project creation - God and bad news</title><content type='html'>&lt;span style="font-weight:bold;"&gt;The good news&lt;/span&gt; is that VSTS2010 has the capability to script team project creation out of the box. Grant Holliday wrote a post on &lt;a href=" http://blogs.msdn.com/granth/archive/2009/09/25/scripting-team-project-creation-in-tfs2010.aspx"&gt;Scripting Team Project Creation in TFS2010&lt;/a&gt;. As Grant states, this is a step in the right direction, earlier we had to relay on the power tool command line utility for creating team projects. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The bad news&lt;/span&gt; is that the 2010 version for scripting team project creation requires some GUI interaction and the VSTS beta requires the team explorer tab to be selected the last time Visual Studio was closed. I also look like VSTS2010 can’t create team project for TFS2008 through scripting.&lt;br /&gt;Hopefully this can be fixed before the RTM version.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-6884652782322187986?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/6884652782322187986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2009/09/vsts2010-team-project-creation-god-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/6884652782322187986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/6884652782322187986'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2009/09/vsts2010-team-project-creation-god-and.html' title='VSTS2010 team project creation - God and bad news'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-394129994749628058</id><published>2009-09-08T21:59:00.011+02:00</published><updated>2009-10-12T11:59:12.326+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VSTS2010'/><title type='text'>VSTS 2010 Readiness</title><content type='html'>VSTS 2010 has been around for a while now, at least in some kind. It’s actually two years now, counting from the first Rosario CTP in August 2007.  With Microsoft moving into beta 1 and soon beta 2 it feels like the time to get ready for the future is here.&lt;br /&gt;As a first step for more serious effort I decided to do a test upgrade of our central TFS server, containing about 70 team projects. The goal was to test the upgrade process, and to get a real environment and real data for future tests. The install/configuration/upgrade process was a pleasant experience, running without any problems or errors. After upgrading I had to r run Hakan Eskicis script &lt;a href="http://blogs.msdn.com/hakane/archive/2009/05/20/sample-script-to-enable-new-features-in-upgraded-team-projects-tfs-2010-beta1.aspx"&gt;http://blogs.msdn.com/hakane/archive/2009/05/20/sample-script-to-enable-new-features-in-upgraded-team-projects-tfs-2010-beta1.aspx&lt;/a&gt; to enable  my old team projects with the new features, hopefully this will be included in the upgrade process in the feature. &lt;br /&gt;Overall the test upgrade went smoothly without any problem, and I can sleep better knowing it works. I also have lots of real life projects and data to put the new vsts2010 features to realistic tests. Hopefully I can start using the new vsts2010 toolset to solve real life everyday problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-394129994749628058?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/394129994749628058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2009/09/2010-readiness.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/394129994749628058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/394129994749628058'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2009/09/2010-readiness.html' title='VSTS 2010 Readiness'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-5417355711303746988</id><published>2009-08-21T22:13:00.016+02:00</published><updated>2009-09-08T21:59:07.694+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Admin'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='POC'/><category scheme='http://www.blogger.com/atom/ns#' term='Warehouse'/><title type='text'>TFS Admin, Part III - POC Extending TFS Warehouse</title><content type='html'>If I had a dollar for every time I wished for the capability to configure and store metadata about team project in TFS, I could at least take a very long vacation. Using a custom list in SharePoint to keep track of team projects and their metadata is the best solution I've come up with so far, especially if you use it as a request queue. But it´s still a non integrated solution causing manually work if you want to do reporting or anything useful with it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Extending TFS Warehouse with metadata&lt;/span&gt;&lt;br /&gt;Having metadata in a SharePoint list, which I could write code against, and knowing that the TFS warehouse is extendable gave me the idea to feed the TFS warehouse with team project metadata. For this to work I need the team project names to be the same in both the SharePoint List and TFS. This should not be a big issue for anyone, especially if you use the SharePoint list as a request queue and automatically create team project as described in previous post.&lt;br /&gt;My plan was to write a generic adapter for the TFS warehouse, extending the Team Project dimension in the warehouse with selected fields from the SharePoint list.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Writing a custom TFS Warehouse adapter &lt;/span&gt;&lt;br /&gt;My plan was to write a generic adapter for the TFS warehouse, extending the Team Project dimension in the warehouse with selected fields from the SharePoint list.&lt;br /&gt;After some research on MSDN I was ready to start. A custom adapter is simply a class implementing the 3 methods in IWareHouseAdapter, compiled into an assembly and deployed to a special folder. To implement the IWarehouseAdapter interface you have to write code to make&lt;br /&gt;• Make Schema Changes to the TFS Warehouse and cube&lt;br /&gt;• Make Data Changes, i.e. create rows in the database&lt;br /&gt;• Handle Initializing, request to stop processing&lt;br /&gt;The TFS API provides an object model for the warehouse, together with some good articles on msdn and Steve Wrights posts &lt;a href="http://blogs.conchango.com/stevewright/archive/2008/07/11/how-i-built-a-team-foundation-server-custom-data-warehouse-adapter.aspx"&gt;How I built a Team Foundation Server custom data warehouse adapter&lt;/a&gt; made it pretty easy writing the adapter and deploying it to the server.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Retrospective - the real challenges &lt;/span&gt;&lt;br /&gt;In retrospective I can see that the biggest challenges had nothing to do with writing the adapter or handling a SharePoint custom list. Looking back I spent more time doing other stuff then writing the logic for the adapter. The other things taking most time from the real task were:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Testing and the test environment&lt;/span&gt;&lt;br /&gt;Running the test environment (a virtual PC image of o complete TFS setup) locally on my old and slow laptop were not funny. In order to save time, I tried reinitializing the TFS warehouse between tests. But this took too long time, so I ended up with reverting the virtual my machine and setting up my environment for every test run. Maybe a better design/separation and mocking could have saved time in the end.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Trying to make the Warehouse over complex&lt;/span&gt;&lt;br /&gt;My lack of real world experience from BI projects took me out on long journey trying to make a too complex warehouse in order to handle the metadata in a generic way. After many hours trying to implement the advanced model with the TFS API I consulted a colleague with real life experienced of BI project and went for a really simple design instead.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Handling configuration for the adapter dll&lt;/span&gt;&lt;br /&gt;Needing to store some configuration and have it easily handled I thought that using a .config file for the dll would be the best fit. I simply added settings to the adapter project and used the Properties. Settings class. Things worked nice until I tried changing the value in the .dll.config file. As I was afraid of it didn’t work. After hours of fruitless search for a way to get the framework to actually read my config file, I gave up and derived a custom setting provider from LocalFileSettingsProvider, override the GetPropertyValue method reading the config file as an XML document. Once I decided to write my own settings provider was I was done in 15 minutes, but I wasted several hours looking for a better solution.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reducing technical dept &lt;/span&gt;&lt;br /&gt;As I needed to wrap a SharePoint list in this project to I started to break out the SharePointListWrapper into a utility project. One thing lead to another and in the end I ended up fixing some of the code for the Automated Order Process to.&lt;br /&gt;Doing so I repackage the source for The Automated Order Process, although the code is in better shape, it is like the TeamProejctMetadataAdapter still a proof of concept. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://cid-5d46cae8c0008cf0.skydrive.live.com/self.aspx/.Public/POC%20TeamProjectMetadataAdapter.zip" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cShCn6OcoYQ/So7-tKZDJTI/AAAAAAAAACM/PZsobe3s7ww/s1600-h/zipIcon.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 59px; height: 59px;" src="http://4.bp.blogspot.com/_cShCn6OcoYQ/So7-tKZDJTI/AAAAAAAAACM/PZsobe3s7ww/s200/zipIcon.png" alt="" id="BLOGGER_PHOTO_ID_5372511457336567090" border="0" /&gt;&lt;br /&gt;http://cid-5d46cae8c0008cf0.skydrive.live.com/self.aspx/.Public/POC%20TeamProjectMetadataAdapter.zip&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-5417355711303746988?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/5417355711303746988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2009/08/tfs-admin-part-iii-poc-extending-tfs.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/5417355711303746988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/5417355711303746988'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2009/08/tfs-admin-part-iii-poc-extending-tfs.html' title='TFS Admin, Part III - POC Extending TFS Warehouse'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cShCn6OcoYQ/So7-tKZDJTI/AAAAAAAAACM/PZsobe3s7ww/s72-c/zipIcon.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-3840883318584856605</id><published>2009-08-12T11:09:00.050+02:00</published><updated>2010-10-15T13:32:30.227+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Admin'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='POC'/><title type='text'>TFS Admin, Part II - POC Automated Order process</title><content type='html'>&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;Update:&lt;/span&gt; &lt;a href="http://mskold.blogspot.com/2010/10/tfs2010-automated-team-project-creation.html"&gt;TFS2010 Automated team project creation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In this post we will look at a possible solution covering the team project order process. The solution covers the whole process from order entry to delivery notification and is based upon the requirements listed in the previous post.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A good start, but a long way to go&lt;/span&gt;&lt;br /&gt;This is just a proof of concept, a quick hack to prove it’s possible to accomplish an automated team project order process. It's a long easy to go to a releasable product or project with error handling, tracing, packaging and deployment and so on. The best would be to get something like this integrated into the TFS product or into the TFS Admin tool&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Architecture and design &lt;/span&gt;&lt;br /&gt;One distinctive requirement is the configuration, collection and storage of metadata. As we already have a working instance of WSS, it falls naturally to use its capability of custom lists to handle metadata.&lt;br /&gt;&lt;br /&gt;In order to make team project creation fully automated after approval, we would have to programmatically create new team projects. This capability is provided in the latest power tool command line util.&lt;br /&gt;Managing user rights for SSRS, WSS and TFS is also a hard requirement to manage. Fortunately we have the TFS admin tool on Codeplex providing sourcecode for handling this requirement.&lt;br /&gt;Of course some coding and usage of the TFS API is needed to stitch it together.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cShCn6OcoYQ/So7xN4zOq8I/AAAAAAAAABU/E9a6IjdaYrs/s1600-h/CustomizeTeamProjects.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 284px;" src="http://2.bp.blogspot.com/_cShCn6OcoYQ/So7xN4zOq8I/AAAAAAAAABU/E9a6IjdaYrs/s320/CustomizeTeamProjects.JPG" alt="" id="BLOGGER_PHOTO_ID_5372496626387430338" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Creating the TeamProject list  &lt;/span&gt;&lt;br /&gt;In order to create the teamproject list and the order form I created a custom list at the root sharepoint site of my tfsserver, naming it to TeamProjects.&lt;br /&gt;&lt;br /&gt;To this list I added core field as follow. I renamed the Title field to &lt;span style="font-style: italic;"&gt;Project Name&lt;/span&gt;, added a people column named &lt;span style="font-style: italic;"&gt;Project Administrator&lt;/span&gt;. I also added a choice column named &lt;span style="font-style: italic;"&gt;Process Template&lt;/span&gt; with the exact process templates strings.&lt;br /&gt;&lt;br /&gt;Under List versioning settings I activated  &lt;span style="font-style: italic;"&gt;Content Approval&lt;/span&gt; enabling a approval workflow.&lt;br /&gt;I also added a view &lt;span style="font-style: italic;"&gt;PendingCreation&lt;/span&gt; with the filter ApprovalStatus=Approved and TeamProjectCreated=No.&lt;br /&gt;&lt;br /&gt;To make it easily accessible I added Quick Launch links to the list as well as to the TeamProjects: New Item form.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cShCn6OcoYQ/So75o3NQwhI/AAAAAAAAAB0/dPYOZ0v1oBY/s1600-h/NewProjectForm.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 254px;" src="http://4.bp.blogspot.com/_cShCn6OcoYQ/So75o3NQwhI/AAAAAAAAAB0/dPYOZ0v1oBY/s320/NewProjectForm.JPG" alt="" id="BLOGGER_PHOTO_ID_5372505885909238290" border="0" /&gt;&lt;/a&gt;The result is a new form for requsting a team project as illustrated to the right.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Automating project creation puting it together&lt;/span&gt;&lt;br /&gt;Now we need some code reading the list and creating team projects, giving the project administrator access rights, reassigning the workitems to the project administrator, applying enterprise standard access rights and policies. For the purpose of demonstrating how this can be done, I've put together a a simple solution. The complete solution is attatched as a ZIP file.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cid-5d46cae8c0008cf0.skydrive.live.com/self.aspx/.Public/POC%20AutomatedTeamProjectCreation.zip"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 59px; height: 59px;" src="http://4.bp.blogspot.com/_cShCn6OcoYQ/So7-tKZDJTI/AAAAAAAAACM/PZsobe3s7ww/s200/zipIcon.png" alt="" id="BLOGGER_PHOTO_ID_5372511457336567090" border="0" /&gt;&lt;br /&gt;http://cid-5d46cae8c0008cf0.skydrive.live.com/self.aspx/.Public/POC%20AutomatedTeamProjectCreation.zip&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Code walkthrough&lt;/span&gt;&lt;br /&gt;I will also go through the code briefly starting with the main function holding it all together.&lt;br /&gt;&lt;br /&gt;static void CreatePendingTeamProject()&lt;br /&gt;{&lt;br /&gt;  string serverName = "http://teamsystem.sogeti.se";&lt;br /&gt;  string tfsServerPort = ":8080";&lt;br /&gt;  string tfsServerUrl = serverName + tfsServerPort;&lt;br /&gt;&lt;br /&gt;  string listName="TeamProjects";&lt;br /&gt;  string viewName="PendingCreation";&lt;br /&gt;&lt;br /&gt;  string projectNameCol = "LinkTitle";&lt;br /&gt;  string projectAdminCol="Project Admin";&lt;br /&gt;  string procTemplateCol = "Project template";&lt;br /&gt;  string projectCreatedCol = "TeamProjectCreated";&lt;br /&gt;&lt;br /&gt;  //Fetch an entry for a requested team project form sharepoint list&lt;br /&gt;  SharePointListWrapper spReqListWrapper = new SharePointListWrapper(serverName, "", listName, viewName);&lt;br /&gt;  ReqForTeamProject reqTP = spReqListWrapper.GetRequestForTeamProject(projectNameCol,procTemplateCol, projectAdminCol);&lt;br /&gt;&lt;br /&gt;I have wrapped all access to the Sharepoint list in a special SharePointListWrapper class. The interesting things is in this method&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public ReqForTeamProject GetRequestForTeamProject(string projectNameCol, string templateCol, string projectAdminCol)&lt;br /&gt;{&lt;br /&gt;  SPSite site = new SPSite(ServerUrl);&lt;br /&gt;  SPWeb web = site.AllWebs[RelativeSiteUrl];&lt;br /&gt;  SPList myList = web.Lists[ListName];&lt;br /&gt;  SPView view = myList.Views[ViewName];&lt;br /&gt;  Console.WriteLine("Connected to sharepoint list");&lt;br /&gt;&lt;br /&gt;  if (myList.GetItems(view).Count &gt; 0)&lt;br /&gt;  {&lt;br /&gt;      Console.WriteLine("Found a item");&lt;br /&gt;&lt;br /&gt;      SPListItem itm = myList.GetItems(view)[0];&lt;br /&gt;      ReqForTeamProject tp = new ReqForTeamProject();&lt;br /&gt;&lt;br /&gt;      tp.Id = itm.ID;&lt;br /&gt;      tp.Name = itm.GetFormattedValue(projectNameCol); //Project Name, Forced to use this cause Title is renamed.&lt;br /&gt;      tp.ProcTemplate = itm.GetFormattedValue(templateCol);&lt;br /&gt;      tp.ProjectAdmin = ((SPFieldUserValue)itm.Fields[projectAdminCol]&lt;br /&gt;          .GetFieldValue(itm[projectAdminCol].ToString()))&lt;br /&gt;          .User.LoginName; ;&lt;br /&gt;&lt;br /&gt;      Console.WriteLine(tp.ProcTemplate);&lt;br /&gt;      Console.WriteLine("Returning a Request for teamproject user " + tp.ProjectAdmin);&lt;br /&gt;&lt;br /&gt;      return tp;&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;      return null;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;The code opens a SharePoint list, and the view PendingCreation, select the first item if any. As you can see, I’ve used the Microsoft.SharePoint library for access to the SharePoint list. This will require the solution to be deployed at the server running WSS. If you want to deploy it elsewhere you have to use the WSS web services instead.&lt;br /&gt;&lt;br /&gt;Back to the main function we check if we got a request to create teamproject.&lt;br /&gt;&lt;br /&gt;if (reqTP != null)&lt;br /&gt;  {&lt;br /&gt;      //Create the Team Project&lt;br /&gt;      TFPTWrapper tftp = new TFPTWrapper(tfsServerUrl);&lt;br /&gt;      tftp.CreateTeamProject(reqTP.Name, reqTP.ProcTemplate);&lt;br /&gt;&lt;br /&gt;The next thing in the code is the actual teamproject creation. This is done by calling the TFPT command line utility. Calling the command line utility is wrapped in the TFPTWrapper class, and the method CreateTeamProject simply builds a command line and execute it by starting a new process.&lt;br /&gt;&lt;br /&gt;After the team project is successfully created, we need to give the project administrator access rights.&lt;br /&gt;&lt;br /&gt;     // Add rights to the ProjectAdmin&lt;br /&gt;      TFSAdminTooolWrapper admin = new TFSAdminTooolWrapper(tfsServerUrl);&lt;br /&gt;      admin.AddProjectAdmin(reqTP.ProjectAdmin, reqTP.Name);&lt;br /&gt;&lt;br /&gt;To set the actual roles to TFS, WSS and RS we rely on the TFS Admintool. I have chosen to wrap a developing branch of the TFS AdminTool. The reason for this is that this branch has separated the code handling the actual tfs, WSS and RS servers into a separate project. making it possible to reference the dll file and not include the whole source for the TFS AdminTool.&lt;br /&gt;&lt;br /&gt;This reduces the handing of setting user rights to this function&lt;br /&gt;&lt;br /&gt;public void AddUser(string user, string teamProject, string tfsRole, string spRole, string rsRole)&lt;br /&gt;{&lt;br /&gt;  TFSAdministrationTool.Proxy.Common.TfsAdminToolTracer.Initialize(null);&lt;br /&gt;  Console.WriteLine("Adding user with admin tool " + user);&lt;br /&gt;&lt;br /&gt;  TFSAdministrationTool.Proxy.ITeamFoundationServerProxy iTFSProxy = TFSAdministrationTool.Proxy.TeamFoundationServerProxyFactory.CreateProxy();&lt;br /&gt;  iTFSProxy.Connect(TFSServerUrl);&lt;br /&gt;  Console.WriteLine("Admin tool connected ");&lt;br /&gt;&lt;br /&gt;  iTFSProxy.SelectTeamProject(teamProject);&lt;br /&gt;  Console.WriteLine("Team project selected");&lt;br /&gt;&lt;br /&gt;  iTFSProxy.AddUserToRole(user, tfsRole);&lt;br /&gt;  Console.WriteLine("Added TFS role " +tfsRole);&lt;br /&gt;&lt;br /&gt;  iTFSProxy.SharePointAddUserToRole(user, spRole);&lt;br /&gt;  Console.WriteLine("Added WSS role " + spRole);&lt;br /&gt;&lt;br /&gt;  iTFSProxy.ReportingServiceAddUserToRole(user, rsRole);&lt;br /&gt;  Console.WriteLine("Added RS role " + rsRole);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public void AddProjectAdmin(string user, string teamProject)&lt;br /&gt;{&lt;br /&gt;  AddUser(user, teamProject, "Project Administrators", "Full Control","Content Manager");&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;After adding the project administrator we need to setup standard access. In my case I made a xml config file containing the user, TFS, WSS &amp;amp; RS role to add. the users and roles are applied using the same TFSAdminToolWrapper.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      //Setup standard team project security&lt;br /&gt;      StandardRightsXml stdRightXml = new StandardRightsXml("stdTeamProjectSecurity.xml");&lt;br /&gt;      foreach (UserRights stdUsr in stdRightXml.GetTeamProjectRights())&lt;br /&gt;      {&lt;br /&gt;          admin.AddUser(stdUsr.User, reqTP.Name, stdUsr.TfsRole, stdUsr.SpRole, stdUsr.RsRole);&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;All work items assigned to the creator of the teamproject must be reassigned to the new project administrator.&lt;br /&gt;&lt;br /&gt;      // Reassign all workitems to the new owner&lt;br /&gt;      TFSWorkItemStoreWrapper tfsWIStore = new TFSWorkItemStoreWrapper(tfsServerUrl);&lt;br /&gt;      tfsWIStore.ReAssignWI(reqTP.Name, reqTP.ProjectAdmin);&lt;br /&gt;&lt;br /&gt;This is done through the TFS WorkitemStore API. Executing a query, opening the work items, and changing the AssignedTo field. This is wrapped into the TFSWorkItemStoreWrapper class.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public void ReAssignWI(string teamProject, string newOwner)&lt;br /&gt;{&lt;br /&gt;  WorkItemStore wiStore = new WorkItemStore(TFSServerUrl);&lt;br /&gt;&lt;br /&gt;  WorkItemCollection wiLst = wiStore.Query(&lt;br /&gt;          " SELECT [System.Id], [System.AssignedTo], [System.Title] " +&lt;br /&gt;          " FROM WorkItems " +&lt;br /&gt;          " WHERE [System.TeamProject] = '" + teamProject + "' ORDER BY [System.WorkItemType], [System.Id]");&lt;br /&gt;&lt;br /&gt;  foreach (WorkItem itm in wiLst)&lt;br /&gt;  {&lt;br /&gt;      itm.Open();&lt;br /&gt;      itm.Fields["System.AssignedTo"].Value = newOwner;&lt;br /&gt;      itm.Save();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;We also need to apply standard check-in policies to our new teamproject. I've made a xml config file containing the list of standard policies to apply to all project.&lt;br /&gt;&lt;br /&gt;//Setup standard team project Policies&lt;br /&gt;      StandardPoliciesXml stdPoliciesXml = new StandardPoliciesXml("stdTeamProjectPolicies.xml");&lt;br /&gt;      TFSPolicyWrapper tfsPolicyStore = new TFSPolicyWrapper(tfsServerUrl);&lt;br /&gt;      tfsPolicyStore.AddCheckinPolicies(reqTP.Name, stdPoliciesXml.GetTeamProjectPolicies());&lt;br /&gt;&lt;br /&gt;The code for applying policies is based on a postby Jakob Ehn and wrapped into the TFSPolicyWrapper.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public void AddCheckinPolicies(string teamProject, List&lt;tppolicy&gt; StdPolicyLst)&lt;br /&gt;{&lt;br /&gt;  List&lt;policyenvelope&gt; policiesToApply = new List&lt;policyenvelope&gt;();&lt;br /&gt;&lt;br /&gt;  TeamFoundationServer tfs = new TeamFoundationServer(TFSServerUrl);&lt;br /&gt;  VersionControlServer srvVC = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));&lt;br /&gt;  TeamProject tp = srvVC.GetTeamProject(teamProject);&lt;br /&gt;&lt;br /&gt;  policiesToApply.AddRange(tp.GetCheckinPolicies());&lt;br /&gt;&lt;br /&gt;  foreach (TpPolicy WantedPolicy in StdPolicyLst)&lt;br /&gt;  {&lt;br /&gt;      Assembly policyAssembly = Assembly.LoadFile(WantedPolicy.PolicyAssembly);&lt;br /&gt;      object o = policyAssembly.CreateInstance(WantedPolicy.PolicyType);&lt;br /&gt;&lt;br /&gt;      if (o is IPolicyDefinition)&lt;br /&gt;      {&lt;br /&gt;          IPolicyDefinition def = o as IPolicyDefinition;&lt;br /&gt;&lt;br /&gt;          PolicyEnvelope[] checkinPolicies = new PolicyEnvelope[1];&lt;br /&gt;          bool foundPolicy = false;&lt;br /&gt;          foreach (PolicyType policyType in Workstation.Current.InstalledPolicyTypes)&lt;br /&gt;          {&lt;br /&gt;              if (policyType.Name == def.Type)&lt;br /&gt;              {&lt;br /&gt;                  policiesToApply.Add(new PolicyEnvelope(def, policyType));&lt;br /&gt;                  foundPolicy = true;&lt;br /&gt;              }&lt;br /&gt;          }&lt;br /&gt;          if (!foundPolicy)&lt;br /&gt;          {&lt;br /&gt;              throw new ApplicationException(String.Format("The policy {0} is not registered on this machine", def.Type));&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;      else&lt;br /&gt;      {&lt;br /&gt;          throw new ApplicationException(String.Format("Type {0} in assembly {1} does not implement the IPolicyDefinition interface", WantedPolicy.PolicyType, WantedPolicy.PolicyAssembly));&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  if (policiesToApply.Count &gt; 0)&lt;br /&gt;  {&lt;br /&gt;      tp.SetCheckinPolicies(policiesToApply.ToArray());&lt;br /&gt;  }&lt;br /&gt;  tp = null;&lt;br /&gt;  srvVC = null;&lt;br /&gt;  tfs.Dispose();&lt;br /&gt;  tfs = null;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;In order to apply a policy to a project we must be able to load the policy. This will require all policies to be installed on the machine executing the program.&lt;br /&gt;&lt;br /&gt;The last thing to do is to mark the request for a new teamproject as finished. This is done by updating the list item.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//Update the item&lt;br /&gt;      spReqListWrapper.UpdateRequestForTeamProject(reqTP,projectCreatedCol);&lt;br /&gt;  }&lt;/policyenvelope&gt;&lt;/policyenvelope&gt;&lt;/tppolicy&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-3840883318584856605?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/3840883318584856605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2009/08/team-system-administration-in_12.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/3840883318584856605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/3840883318584856605'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2009/08/team-system-administration-in_12.html' title='TFS Admin, Part II - POC Automated Order process'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cShCn6OcoYQ/So7xN4zOq8I/AAAAAAAAABU/E9a6IjdaYrs/s72-c/CustomizeTeamProjects.JPG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-2298563181750106515</id><published>2009-08-03T01:00:00.024+02:00</published><updated>2009-08-30T11:13:16.375+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Admin'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>TFS Admin, Part I - Requirements for  Team project creation</title><content type='html'>After installing TFS, most organizations sooner or later comes across many questions how to handle team system administration in their organization.  In this post I will take a look at one of the first questions, How to handle Team Project Creation.  Unfortunately this is one of the dark spots in case of functionality in the team system package. I will look at the requirements for team project creation process based on my experience from different organizations.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Stakeholders &lt;/span&gt;&lt;br /&gt;I will start by looking at different stakeholders to the process of team project administration.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cShCn6OcoYQ/SntpImvR8ZI/AAAAAAAAAAc/b7GwZ1XtssU/s1600-h/BLOG_TFS_ADMIN_Today.bmp"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 314px; height: 400px;" src="http://1.bp.blogspot.com/_cShCn6OcoYQ/SntpImvR8ZI/AAAAAAAAAAc/b7GwZ1XtssU/s400/BLOG_TFS_ADMIN_Today.bmp" alt="" id="BLOGGER_PHOTO_ID_5366998977500803474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The first and obvious stakeholder is the project manager or “customer” who needs a project environment for the team. In many organizations there simply isn’t any process for ordering a new team project.  From the project manager perspective it is important that the process for ordering a new team project is clear and simple resulting in a ready to go environment.&lt;br /&gt;The management needs to keep track of existing project and systems, requiring lots of metadata like customer or business area, process and/or system owner. This require the ability to define and store metadata  or/and make connection to some external tool for handling metadata.  It also requires the metadata to be reportable.&lt;br /&gt;The&lt;span style="font-weight: bold;"&gt; architectural function&lt;/span&gt; is responsible for standards and policies within the organization. Today all efforts to establish and maintaining a mandatory list of policies have to be done manually.  The architectural function needs to be able to define the list of policies, and have them automatically deployed to new team projects.&lt;br /&gt;The TFS admin crew is obvious a stakeholder for team project creation. TFS Admin also requires meta data such as project owners, administrators, cost centers and so on. Today creation of team projects is a manual process handling gathering, creation and customization of metadata, policies and reassigning work items and user rights. The whole process should be automated to avoid unnecessary work and errors.&lt;br /&gt;The stakeholders listed above is/or should always be involved in the team project creation process.  In addition to this, other stakeholders such as IT Operations for setting up project , staging and production environments, and License managers for handling license could be involved in the process, requiring the process itself to be easily extendable and customizable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The list of requirements&lt;/span&gt;&lt;br /&gt;The functionality could be divided into user stories or use cases and described like this.  In addition to the requirements listed there is a n general requirement to be able to extend and customize the process easily.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Defining organizations standard&lt;/span&gt;&lt;br /&gt;•    Easy configuration of project metadata.&lt;br /&gt;•    Configuration of organization standard user rights&lt;br /&gt;•    Configuration of organization standard check-in policies&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Ordering team project&lt;/span&gt;&lt;br /&gt;•    Easy accessible ordering form&lt;br /&gt;•    Collection of core values (Project name, administrator, process template, description)&lt;br /&gt;•    Collection of project metadata&lt;br /&gt;•    Approval workflow&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Automated team project creation&lt;/span&gt;&lt;br /&gt;•    project creation&lt;br /&gt;•    reassigning of work items&lt;br /&gt;•    Applying user rights for project administrator&lt;br /&gt;•    Applying standard user rights.&lt;br /&gt;•    Applying standard check-in policies&lt;br /&gt;•    Notifying project administrator upon completion&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Reporting&lt;/span&gt;&lt;br /&gt;• Project catalog&lt;br /&gt;•    Extending project metadata to the TFS warehouse&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-2298563181750106515?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/2298563181750106515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2009/08/team-system-administration-in.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/2298563181750106515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/2298563181750106515'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2009/08/team-system-administration-in.html' title='TFS Admin, Part I - Requirements for  Team project creation'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cShCn6OcoYQ/SntpImvR8ZI/AAAAAAAAAAc/b7GwZ1XtssU/s72-c/BLOG_TFS_ADMIN_Today.bmp' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-3534562036681589367</id><published>2009-07-21T12:29:00.003+02:00</published><updated>2009-07-21T12:32:39.573+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS Scorecard'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>TFS Scorecard released on Codeplex</title><content type='html'>Yesterday I released the TFS Scorecard project on codeplex.  TFS Scorecard is a report with the goal to provide you insight in your TFS environment and your organizations Team System adaptation.&lt;br /&gt;&lt;br /&gt;The TFS Scorecard actually started a long time ago, when I first saw Brian Harrys &lt;a href="http://blogs.msdn.com/bharry/archive/tags/TFS+Dogfood+statistics/default.aspx"&gt;dogfooding posts&lt;/a&gt; on Microsoft Team System adaptation. I wanted to know what went on in my own backyard, and running Brian’s SQL queries was a good start. Later I came across a reporting services report made by &lt;a href="http://blogs.msdn.com/chrniel/"&gt;Christian Nielsen&lt;/a&gt; as I upgraded it with the 2008 version of the queries.&lt;br /&gt;&lt;br /&gt;Since then I have used the report internally and at different customers, running into new information needs and adding functionality along the way. It has helped me answer questions, motivating costs and activities and solving performance issues.&lt;br /&gt;&lt;br /&gt;Moving the TFS Scorecard to Codeplex was made mainly to make it easily accessible for everyone. Have it helped me it could perhaps prove to be useful to others.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-3534562036681589367?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/3534562036681589367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2009/07/yesterday-i-released-tfs-scorecard.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/3534562036681589367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/3534562036681589367'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2009/07/yesterday-i-released-tfs-scorecard.html' title='TFS Scorecard released on Codeplex'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569239741277924317.post-6958369366985166223</id><published>2009-06-30T21:08:00.008+02:00</published><updated>2009-07-16T14:41:12.616+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>My circle of interest</title><content type='html'>&lt;span style="font-size:100%;"&gt;About a year ago I read Grant Hollidays post on &lt;a href="http://ozgrant.com/2008/05/07/whats-your-circle-of-interest/"&gt;What’s your circle of interest ?&lt;/a&gt; (the question originating from Paul Stovel). Grant’s post  got me thinking about my own circles, I decided that if I ever started blogging, my first post would be to define my circles of interest.  So here I am with my first post and my circles.&lt;br /&gt;The Circles are defined as three categories like this: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Core&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;These are things I enjoy, care about, and follow as much as I can. When news breaks in these areas, I try to stay on top. I like to think I’m an expert in some of them, and have strong opinions on the rest.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Non-core&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;I find myself working with these things, or have a minor interest in them, but tend to follow announcements occasionally. I have opinions and will probably complain if I don’t like certain aspects of them, but I’m not about to start evangelising them.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;I don’t care &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;The only time I spend in these things is to decide whether I care or not. I don’t really use them. I don’t pay much attention to them. I prefer not to work in any of these areas.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cShCn6OcoYQ/Sl8bCmmaaDI/AAAAAAAAAAM/rjgMLVATFuM/s1600-h/MyCircleOfInterest.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 251px;" src="http://2.bp.blogspot.com/_cShCn6OcoYQ/Sl8bCmmaaDI/AAAAAAAAAAM/rjgMLVATFuM/s400/MyCircleOfInterest.PNG" alt="" id="BLOGGER_PHOTO_ID_5359031813129529394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Drawing the circles and getting it down on paper was a bit harder than I anticipated from the start. As I struggled with it and the definitions I noticed that I looked at my topics from two different viewpoints. Some topics are in focus if I think from the point of&lt;span style="font-weight: bold;"&gt; doing the right thing&lt;/span&gt; to solve a business need; others are from the perspective of &lt;span style="font-weight: bold;"&gt;doing it right&lt;/span&gt; when developing a solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569239741277924317-6958369366985166223?l=mskold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mskold.blogspot.com/feeds/6958369366985166223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mskold.blogspot.com/2009/06/my-circle-of-interest.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/6958369366985166223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569239741277924317/posts/default/6958369366985166223'/><link rel='alternate' type='text/html' href='http://mskold.blogspot.com/2009/06/my-circle-of-interest.html' title='My circle of interest'/><author><name>Mattias</name><uri>http://www.blogger.com/profile/12923855955774079703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cShCn6OcoYQ/Sl8bCmmaaDI/AAAAAAAAAAM/rjgMLVATFuM/s72-c/MyCircleOfInterest.PNG' height='72' width='72'/><thr:total>2</thr:total></entry></feed>
