blog community

Welcome to blog community Sign in | Join | Help
in Search

Marcel de Vries, MVP Team System

.NET Technologies, Architecture and Web Development

  • How the transaction property for WF tracking can make a huge performance difference

    The past two days I have been working on a performance problem we were having with a workflow implementation. The workflow was quite simple, A WCF call coming in, then registering the request data in a SQL database and return a ticket that the request was received. The ticket can be used by people to get information later on the status of their request. (A pretty common SOA pattern)

    The workflow used a TransactionScope activity to guard the persistence of the workflow with the registration call of the custom activity in the database. The workflow runtime had the SqlPersistence service loaded and we use the SqlTrackingService to enable administrators of the system to monitor and see workflow progress of certain requests.

    The time to register a request appeared to be around the 18 seconds per request when we have 20 concurrent users?!? We expected this to be around 1 second Max, depending on the server load.

    After some digging around We detected that if we remove the tracking service the response times where back to what we expected, somewhere around the 0.6 seconds. So how can this happen?

    The answer to this is one very important property that can be set for the tracking service configuration called Transactional. This property was set to false, by one of the developers. This simple setting added around 17 of overhead in SQL communication(with the load we already had on SQL, so can be much less in other specific cases). The property is used to determine if each tracking record that needs to be saved to SQL is done one call at the time or if all work is queued and persisted in one work batch. As you can imagine this will reduce the number of roundtrips to SQL significantly and when the workflow and database server are as busy as with the work we do, times can add up pretty fast.

    So when you see a slow performance in workflow and you have tracking enabled, Look at the transactional property and check if it is not set to false (default is true, so someone would explicitly change this)

    Cheers,
    Marcel

  • Announcing: Team System Web Access Translation Project

    Brian Harry’s announced this a while ago on his blog (here) and now the time is there to give you the first pointers to where we are in the Team System Web Access Translation effort. The last few weeks I have been working with MS Folks on this project. This project is trying to provide additional translations of the Visual studio Team System Web Access web site that is provided by Microsoft to enable access to TFS from an internet location.

    I think it was about 3 months ago, that I ran into a customer who did not want to use TSWA because it was not available in the Dutch Language. I knew Microsoft did not have the resources to make this translation, so I asked them if it would be possible to create a community effort around translating the site into other languages then Microsoft provides out of the box. While I thought it would be a long shot, I was very happily surprised with the reaction to my mail. Brian Harry responded to me with the following mail:

    “Thanks for the request Marcel.  After discussing this internally for a bit, we have decided to enable community translations of TSWA.  If you’d like, you are welcome to be our guinea pig, um, I mean Beta tester J

     

     Hakan Eskici (lead for TSWA) created for this effort what we call the Translation Toolkit. This toolkit contains a VS solution with all the appropriate resource files in it that we need to start creating our own translated versions. He will also create some video’s on how you can create a localized version based on the toolkit. This will all be posted on the codeplex site once we have the goods available J

    They asked me if I would like to manage the community effort and I agreed. So from now on you can contact me if you would like to start a localized version for your native language that is not provided by MS. We have created a Codeplex project to host the sources and the work items, you can find it over here: http://www.codeplex.com/TSWAL

    Before you start writing me mails to contribute, I want to note that currently we are in the first phase of the project where we test drive the toolkit and are experimenting in the deployment models (batch files, installers, etc). We have now started with the Dutch and Turkish language and I have some fellow VSTS MVP’s who are going to take care of at least the Portuguese an Norwegian versions to get us started.

    I must say it quite a lot of work to make a translation. There are > 2000 entries in the resource files that need to be translated an I must say it can be quite hard to come up with an appropriate translation of e.g. the word: Work Item or Change Set, etc.

    If you would like to contribute after we have finished the first phase, please send me an email using the email option on this site to contact me. State in the subject [TSWAL] and the language you are willing to work on. Eg. nl-nl (that is e.g dutch). I will keep a list of people who volunteered and I will contact them as soon as we have the finished the first languages and have a clear model in terms of how we can involve you. (send resource files via mail, add you to codeplex as contributor, etc, etc.)

    Hope you all like the effort and I hope a lot of people volunteer.

    Cheers,

    Marcel

    p.s. for the Dutch people who read my blog, what do you think translates best for Work Item? Until now I came up with "werkpakket". I also got sugestions like "actiepunt" or "werkopdracht". What do you think translates best to the dutch language?

  • Creating more elaborate work item descriptions with a HTML field

    On e of the things only few people know about work item tracking is its ability to have HTML descriptions in your work item. With HTML, I mean that you can have rich editing capabilities, like colors, bold, underline, different fonts, bulleted lists and even hyperlinks.

    For this to work, you only need to change your work item type definition to contain a field that is of the type HTML. If you show this field in your work item form, you can activate the formatting toolbar to enable the text formatting in the text box.

    We use this with our change request work items so we can create some more enhanced description on what we need to get done for a certain change. I thought I would mention it here on my blog, because only few people actually know this is possible J

    Cheers,
    Marcel

     

     

  • Developer days 2008 Presentations on VSTS 2008 and VSTS Rosario

    Last week I did two sessions on Visual studio Team System. The first session was about Team system 2008 and all the new features that are in the product. Not only did I discuss the new features in the 2008 Release, I also showed the new features found in SP1 of VSTS 2008 and the new features in the Power tools that are available for download now some time. Here is a picture of the Thursday morning session.

     

    The second session was about Team System Rosario and what we can expect in the future. This session was a No slides only demo session, where I tried to pack most of the user stories available in the current CTP 12 release into a one hour session. I must say it was quite fun to do and based on the responses I got until now, everybody was quite pleased with the features I showed.

    You can download the presentations here:

    What is new in Visual Studio 2008, SP1 and Power tools

    Visual Studio Team System Code name Rosario

    Like I said, the second session was more demos, then slides. But at least it gives you an impression of all the demos I showed in only one hour :-)
    Hope you find the useful.

    Cheers,
    Marcel

  • How to share Work Item Templates in your team

    After you install the Team Foundation Power Tools, you get a new node in your team Explorer called Work Item Templates.

    It appears that Work items Templates have been around for a while, only almost nobody knew they existed since they were nicely tucked away in the team menu. Since the template option now they became visible in the team explorer, it also caught my attention and I must say I really like it allot.

    So what can you do with Work item Templates? Well as the name implies, you can set up a pre-populated version of a work item that serves as a template for work items you want to create. This is very useful when you have a work item form that requires you to populate certain fields the right way to get them into your development process. E.g. we have currently 5 versions of the product we work on. The product is also dissected into different product areas. So when I wan to file a Change request, I at least need to make sure I fill in the right Area and Iteration to have the work item show up in the work item queries the project manager and Configuration Item owners run on a daily basis. If I would forget to set up the appropriate fields this can cause my work item to end up in WIT but nobody would ever notice or take action.

    After creating the template you can right click it on the team explorer menu and there you can choose Create Work item. Then you will see a new work item form that has the pre-populated fields.

    After working with these templates I actually wanted to share the template definitions with my team mates. But unfortunately the templates are currently not stored at the server, but in a folder in your local profile. (default: <SystemDrive>:\users\<username>\Documents\Work Item Templates)

    When you create a template, it will save the file as an .wt file on your local hard drive. But it appeared there is a solution to sharing the templates and that is to set up a shared folder on your network. What you do is create a share that allows all team members to create and update files and folders and set the work item template location to that share. You can change the template location using the Team Foundation Power Tools options menu. There you can enter the UNC path of the share you use.

    Today we have set this up for the whole team and we are pretty happy with the way this works. One thing to keep in mind is that everybody has all rights to the templates, including modification and deletion. So your team members must be aware of the templates they should maintain and the once that are from their team members. To ease this issue, we decided we would set up a set of folders that are specific to the developer and one shared folder that contains the templates we all can use, but only few maintain.

    I would have liked to see this notion of template sharing in the tool as first class citizen, but I think this will work quite well for us at this moment. Who knows the team might decide to store it in TFS someday.

    Cheers,
    Marcel

  • TFS Power tool TfsServerManager connecting from a non domain joined computer

    Last week at the MVP summit we got a great demo of the features that are in the just released power tools. One of them is the new TfsServerManager tool that you can use to look at your TFS server and it's overall health and performance.

    The tool can be found after installation in the "Program Files\Microsoft Team Foundation Server 2008 Power Tools" folder and is called TfsServerManager.

    I did ran into one issue and that is caused by the fact that I am not working on a machine that is joined to our domain. therefore I always need to supply credentials to fain access to the TFS server. This also happens with the tool, only after providing credentials I was confronted with a message: Login failed for user 'marcelv'

    after some digging around it appears that the tool not only connects to the web services of the TFS server, but also directly connects to the TFS database. While I am an admin on the database, it was not possible to connect to the database. This was caused by the fact that the application just runs as my local user and that user is unknown in the database. To resolve this issue, I created a small command script that runs the application in the security context of my domain user. This way the tool will authenticate as the domain user marcelv and then it is able to connect to the SQL server.

    C:\Windows\System32\runas.exe /netonly /user:[yourDomain]\[yourUserName] TfsServerManager.exe

    After I was connected I took a look at the statistics page. There I found to my surprise that the TFS server was up and running for only a few hours. I asked our TFS admin and he did not know better than the server is up and running for several days and we only had a reboot a month ago to run the latest updates.

    It appears the time reported here is a value in TFS and refers to how long TFS has been up, not the server. (So last restart does not refer to a reboot of the serer!) There are many things that can cause TFS to shut down. E.g The app pool may be configured to recycle after a number of minutes, when idle for so much time or when certain memory thresholds are hit.

    One other feature I find particular useful is the option to view the workspaces, shelve sets and labels.  This way you can see if there a stale workspaces and shelvesets that can be cleaned from the server. My first run already resulted in 50 workspaces and about 20 shelve sets that where never accessed for the past year. So it is good practice to run this tool once in a while and see what you can clean on your server.

    Cheers,
    Marcel

  • How to remove a toolbar header from a SharePoint web part

    Yes you read it correct, I did some SharePoint development last week. And I must say It was quite a challenge. I was just helping out on a project where we created a feature that combines a custom list deployment with the deployment of a custom page. On this page we place web parts that provide a view to the custom list.

    Now the challenge I faced was to get the deployment working in such a way that we add web parts to the page not showing the toolbar. At first I just laugh and said that I would fix that for them in a few minutes, assuming I could just use the object model, set a toolbar property to false and from that point on have a big hug from my colleague.

    Well I was wrong. Removing a toolbar from a webpart using the object model is something that is just not supported. You can read more about this in e.g. this forum thread.

    After some digging around I finally got the problem solved. I thought I would provide the code snippet here, so you can leverage it.

     

    private static void DisableToolbar(ListViewWebPart lv)

    {

     //  Extract view

     

       System.Reflection.PropertyInfo ViewProp = lv.GetType().GetProperty("View",
        System.Reflection.
    BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);

     

       SPView spView = ViewProp.GetValue(lv, null) as SPView;

     

       string txt = spView.SchemaXml;

       System.Reflection.PropertyInfo NodeProp = spView.GetType().GetProperty("Node",
         System.Reflection.
    BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);

     

       XmlNode node = NodeProp.GetValue(spView, null) as XmlNode;

       XmlNode tBarNode = node.SelectSingleNode("Toolbar");

     

       if (tBarNode != null)

       {

          XmlAttribute typeNode = tBarNode.Attributes["Type"];

          // make the contents empty so we realy remove the toolbar .....

          // otherwise you might get a different type of toolbar popup when we have a
          // Migrated site from 2.0

          tBarNode.RemoveAll();

          // re-add the type attribute

          tBarNode.Attributes.Append(typeNode);

          // finally set the toolbar to not show....

           typeNode.Value = "None";

        }

    //This forces a refresh of the views internal xml or the node's cild nodes are not populated

     spView.Update();
    }

  • TAP Kickoff next few days

    It has only been a few days ago, when I gave some talks at the Visual Studio 2008 Launch event here in the Netherlands.(b.t.w you can download the slide deck of the presentations over here) Now the product is launched customers can start using the product and our integrated version of the Endeavour software factory. Where the adoption cycle for most customers for 2008 start now, we have been working with Visual Studio 2008 for quite some time now and we are going to start working with the next version hopefully next week.

    As you might have heard already, our company Info Support has been chosen as one of the few companies participating in the Rosario TAP program. Rosario is the next version of Visual Studio Team System and TAP stands for Technical Adoption Program. The TAP is used by Microsoft to have customers engage in a very early product development stage and get early feedback on the progress they have made today. Microsoft is working on Rosario for a while already, but is now starting the early adoption cycle. I am very excited that we are chosen again as one of the adoption partners because it will give us the great opportunity to start working on the integration of our software factory Endeavour to the next version of visual Studio and Team foundation server.

    This week I am in Redmond with my colleague Martijn. If everything goes as planned we will get information on where the product is heading and we will be able to start making the first plans of what will be our integration strategy for the next version of Endeavour.

    As you might imagine a lot of the stuff we are working on will still be NDA (non Disclosure) but if we are allowed to blog about new features that are coming, I will keep you guys posted.

    Cheers,

    Marcel

  • Speaker at launch event and devdays 2008

    Thursday I will be doing two sessions on Team system at the Visual studio 2008 launch event. One "Chalk & Talk" session and one session on "what is new in visual Studio Team System 2008".

    While the launch event is not even over, I just got the confirmation from the devdays organization that I will be doing two sessions this year. Devdays will be helt 22th and 23th of May.

    Of course I will be covering Team System again, since that is one of the topics I am very passionate about. I have one session planned where I will show off loads of new stuff that wil be coming in Rosario. Hopefully I can show you lots of cool new stuff that is coming.

    Next week I will be in Redmond again to meet with the development team during the TAP kickoff event.  I hope to get more insights in where Rosario is heading and what stuff is already available that I can show in public. Info Support is again one of the TAP participants and we will start working on the integration of the Endeavour software factory and Rosario when we get back home.

    Got you Interested? Go to devdays website where you can already signup for. (http://www.devdays.nl/Programma/Default.aspx)

    Hope to meet you there,

    Cheers,

    Marcel

  • Offline Feature TFS 2008 can get you puzzled, Solution not bound to source control error

    Today I spend a fair amount of time figuring out why my visual studio solution appeared to be not bound to version control.

    I started visual studio, connected to the team foundation server and there browse in the version control explorer to the solution I wanted to open (I had to do some code reviews there).

    So I did a Get Latest version and after that double clicked the solution file. So as expected the solution loaded in visual studio, but after loading I got the following message:

    Hmmm.. that was strange, I just got it from the TFS server and my colleague did some final check in on the code just yesterday. But it gives you the option to bind it, so I clicked yes.

    Then I got the following window to bind my solution, but whatever I tried, no luck.

     

    No server to connect to, clicking bind, only changes the Icon back and forth, so no way to add it to version control.

    So I tried a lot of thing, like deleting my workspace and creating a new one again, because I thought I had a corrupt workspace. But what I tried noting seemed to work.

    One thing I did not try is start visual studio again and so I did. Not that this solved the problem, but it did give me the clue what has happened to my environment. When opening the solution again my eye caught a little message in the bottom of the screen. There it showed the following message:

    This triggered me that I had opened the solution a few days ago from local hard drive where I had no connection to my server. I got this dialog showing me that I would go in offline mode, but never realized that when I was opening the solution form the version control explorer while I just got the sources from the server……

    To fix the problem, I only had to go to the version control options in the file menu and select the option: Go Online

    After selecting This option, my solution was bound to version control again.

    To be honest, I love the way they improved the offline experience in 2008, but it still has some rough edges, like the once I experienced today.
    I shure hope this will get better when Rosario arrives.

     

     

  • What is new in Visual Studio 2008 Slide deck

    Last night I gave a session for the DotNet user group VSTS track. The session is named "What's new in Visual Studio 2008 Team System"

    For those who attended (and of course anyone else interested) I have uploaded the slide deck here for your reference.

    Topics of the session are:

           Team Foundation Server

          Version Control improvements

          Work item improvements

          Build improvements

          New Web Access feature

           Team Editions

          Team Test improvements

          Team Developer improvements

           Compatibility & Upgrade

    Enjoy,

    Marcel

  • MCT Summit session Berlin

    The past few days I have been quite busy with presenting 3 sessions at the MCT summit in Berlin.

    I must say that at first I was a little bit scared to do presentations for a group of Certified Trainers, since they are known for being a tough crowd to present to.

    But I must say I really enjoyed myself there. I never in my live started a presentation where I welcomed the audience and the audience would directly talk back to you and welcome you back J

    It was a great experience.

    For the people who want to see the sessions and use the demo's I did, I converted them to pdf for you to use as reference material.

    You can download the following content:

     

    What is new in visual Studio 2008 and Visual Studio Team System 2008

    Customizing and extending Visual Studio Team System

    Introduction to the LINQ programming model

     

    Hope you enjoy the content and if you have any questions regarding the materials or the topics, let me know and drop me a mail using the link on my blog.

     

    Cheers,

    Marcel

  • Great start of a new year, rewarded MVP for 2008

    This evening I started with work again and one of the emails I got during my vacation was the congratulations email from Microsoft that they awarded me MVP Visual Developer – team System again.

    I must say that is a great way to start the year after two weeks of vacation J

    The following weeks are packed for me. I am now working on my three sessions I will present at the MCT summit next week in Berlin. I will be covering the following sessions:

    ·         What is new in Visual Studio 2008 and Visual Studio Team System 2008

    ·         Introduction to using the LINQ programming model

    ·         Customizing and extending Visual Studio Team System

    I will post the slide decks as soon as I am back from Berlin.

    After I am back I will be teaching the Windows Workflow Training for another two days.

    If you like to attend the MCT summit yourself you can register here. If you are interested in the workflow training, we have some seats available.

    Hope to see you soon at one of these events.

    Cheers,
    Marcel

  • Virtual PC 2007 console not showing anymore

     

    For a few days now, I was having trouble with virtual PC. The problem was that when I start Virtual PC it would not show me the console anymore. I could still work since the system Tray icon has the same option, but it is not as convenient as just working from the consol.

     What I found is that the console is actually displaying, but it is at a location on my desktop that is not visible. After some investigation I found that Virtual PC has an options.xml file (that you can find at the location: c:\users\<your name>\appdata\roaming\Microsoft\virtual PC\options.xml) that contains the following section:

     

    <window>

      <console>

           <height type="integer">318</height>

           <left_position type="integer">4294935296</left_position>

           <top_position type="integer">4294935296</top_position>

           <visible type="boolean">false</visible> <!-- set to true -->

           <width type="integer">367</width>

      </console>

      <new_pc>

           <left_position type="integer">469</left_position>

           <top_position type="integer">257</top_position>

      </new_pc>
    </
    window>

     

    As you can see the left and top position are at a location that would not be visible on a normal screen resolution. By just changing the values to the original values you see at the new_pc element and setting the visible property to true the problem was fixed.

    Hope this helps you to J

    Cheers,

    Marcel

  • Team Foundation Server 2008 shows incorrect version control status in team explorer

    Like I promised I would share some additional information on some issues we ran into during the TAP program that currently are not fixed yet in the released version of TFS 2008.

    One of the issues we ran into was the fact that one of our development teams got quite confused when the team explorer showed that sources where checked out by someone else while the version control explorer shows that the file is not checked out by anyone.

    See below screenshot on what it looks like:

     

    As you can see in the team explorer the glyph is shown that indicates the sources are checked out by someone else.

    But if you take a look in the version control explorer it is showing that the files are not checked out at all.....

     

    You might imagine that this is quite confusing.

    We filed a bug for this issue and it appeared that it was caused by a change made in the server logic. the change causes the queries fired by the team explorer to yield other results then the version control explorer. After triage the problem could be solved by a change in the server, but the code churn caused by the fix would be to much before RTM and therefore the decision was made not to fix it in the RTM version but in the next service pack that will follow.

    You can read the details in the bug submission found here.(http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=290979)

    So what is causing the problem?

    It appears this problem only happens when you have a shelve set that contains modified files that got checked out and when you created the shelve set this information is kept in the change set at the shelve.

    So the solution is to remove the shelve set.....

    How can you determine if a shelve set is causing this problem you can take the following steps:

    In your workspace that is showing the problem, run the following TF.exe command:

    TF.exe status /shelveset:* /user:* or open the shelveset explorer in the pending checkin window and set the user to be "*" indicating any user.

    While not ideal, once you know this issue is present, you can just ignore the icons and continue your work, since it does not block you from doing any work.

    Hope this helps,

    Cheers,

    Marcel

More Posts Next page »
Powered by Community Server, by Telligent Systems