Tiago Pascoal's WebLog

Hello Good Evening and welcome to nothing much.
Lets Give Feedback: Orcas Team Build Continuous Integration spec is now available


The specs for the new Team Build Continuous Integration module that is going to be included in Orcas is now available.

Lets give feedback to Microsoft. :-)

This is part of a much larger list of available VSTS specifications concerning Orcas. Full List available here

Via Buck Hodges

[cross posted on http://www.agilior.pt/blogs/tiago.pascoal/archive/...

Team Foundation Server: Restricting Work Item creation based on a role


A while ago, i was asked a simple question. How can we restrict work item creation based on a user role. For example on MSF CMMI template, only testers can create Scenario Work Items.

To my knowledge there was no straightforward way to do it, but i though of a way to do it.

  1. Create (or use an existing one) mandatory field, and then place a restriction that the field is readonly for certain roles.
  2. On the workflow definition, create a restriction saying that only permitted roles are allowed to transition to a given state. In this case the given state would be the initial state (Active normally).

Technique number one, is not possible. since it is contradiction to have a field mandatory and read only (even if conditional)

Technique number two, can be achieved with the following XML, (placed on the TRANSICTIONS element, inside the the WORKFLOW element of the work item, to which you want to place the restrition)

<TRANSITION from="" to="Active" not="[global]\Team Foundation Administrators">

If you are thinking that this solution, is nothing more than a hack you are absolutely true. It is an hack, but it works. Although in a very inelegant way. If you implement this solution and try to create a "restricted" work item type you get the following error:

TF26212: Team Foundation Server could not save your changes. There may be problems with the work item type definition. Try again or contact your Team Foundation Server administrator.

No elegance at all indeed.

Does anyone know of a cleaner way to do it?

[Cross posted on http://www.agilior.pt/blogs/tiago.pascoal/archive/...]

Posted: Dec 31 2006, 06:32 PM by tspascoal | with 9 comment(s)
Filed under:
VSTS Links and Resources


Last week we did a four days workshop on Visual Studio Team Systems. We have collected a number of resources with  some pointers to things that we either found useful, provide more formal answers to the questions that we have been asked or that give some pointers in solving some pains the client needeed to address.

I've decided to share this links with you, perhaps they can be of use to someone else too. :-)


Team Foundation Server FAQ

VSTS Resources  - A huge list of VSTS Resources. Lots of information

VSTS Rocks -  Visual Studio Team Systems Community Site.


Configuring Team Foundation Server to use an external Sharepoint - If you need to configure TFS to use an external sharepoint. This is not recommended for now, but if you if really have to, this is how to do it.

Visual Studio 2005 SP1 - freshly released VS SP1. Includes Team Suite, Foundation Server and Express editions.


How to integrate with external systems. For me, the eventing system is the subsystems which i like the most.

Subscribing to TFS Events - How you can subscribe to events (includes the list of available events. The list is very useful, i don't understand i the table tbl_events doesn't contain the full list of events we can subscribe to.)

TFS Notification Web Services - Visual Studio 2005 Project Template - VS template project, that will give a head start in implementing the contracts for receiving TFS notifications. The templates implements all contracts for the out of the box TFS events. No need to muck with XML, these templates will nicely deserialize the event data into (almost) nice objects. (not a problem with the template, but with the XSD provided by TFS).

How to Retrieve all event subscriptions - Code to overcome the inability of bisubscribe to list all subscribed events. Personally i find it is much easier to just query the table tbl_Subscriptions on the integration database directly.

Team Foundation Server Event Subscriber - GUI for bisubscribe. Haven't tested. Don't know if it supports subscriptions listing.

Work Item Tracking RSS Feed - A sample to generate RSS feeds for Work Items.

Project Server Integration - TFS provides a (rather limited,eg no precessors support for now) integration with Project.  I hear a lot of requests for integration with Project Server. Personally we are proponents of more Agile methods, but if Project is your kind of thing, this seems like a solution. Although a not simple one, never tried, but i've skimmed the 184 pages of the whitepaper and it does seem like a big beast to tame. :-)

Web Forms for Submitting Issues to Team Foundation Server - A complain i hear often, is the lack of a web interface for the work item. If you don't want to resort to a full blown solution like TeamPlain, you can use this sample as a base for your web solution to work items.

Checkin Policies

Checkin Policies Overview - A post with an overview of checkin policies.

Jim Presto Blog - This blog has a trilogy of posts about creating your own checkin policies. It should give you a headstart. (no recent activity though)

checkin policy to disallow certain patterns - Sample of a custom checkin policy to disallow checkin of files whose name match a regexp.

Time that task -  Time that task, is a custom checkin policy, that will help you keep track of how much has already been spent on a give task.

Process Templates

Version 4.1 of MSF project Templates - An update for the MSF templates that are included in TFS out of the box.

Scrum for Team Systems - Free template provided by Conchango, that allows you to use scrum in TFS. We have been using it, since the betas with good results. Although we feel some extra reports would be nice. :-) Scrum guidance, has been written by Ken Schwaber of agile software development hall of fame. 


VSTS Customization toolkit - People who have already done some customizations to process template, now how labour intensive that is. Everything is done directly on the XML file. This this tool, simplifies this process A LOT. It totally rocks. Not only allows you to easily customize project templates, as will allow you to customize global lists (Glexport.exe/Glimport.exe), and work items (witimport.ext/witexport.exe) using the same easy process. This tool will allow prevent major hair loss (by pulling :-)).

VSTS Work Item Type Designer Preview - An experimental tool (current version doesn't save files yet), to allow you to customize work items definitions. A nice approach, instead of using a rich client to customize the definitions, it uses DSL tools to do it. I think in the future, this may provide a nice showcase for DSL tools.

How to use custom controls in Work Items - SP1 introduced a new feature, that allows you to use custom controls in work items (not only visual elements, but with business logic also). This projects aims to implement some useful custom controls so.

Managing work for Team System - Jeff Beehler gives us a nice description, of the kinds of work items that his team uses for Team Systems development (Orcas release)

[cross posted on http://www.agilior.pt/blogs/tiago.pascoal/default.aspx]

XSD Annotations in WCF

Some people [here and here] were claiming for the ability to produce XSD annotations in WCF, but unfortunately this isn't possible yet.

Since we also needed this functionality, my partner  implemented this functionality and blogged about it (including source code and sample).

[cross posted on www.agilior.pt/blogs/tiago.pascoal/default.aspx]

Service Factory [part 1]

Service Factory   has been released at the end of July, but only  today i had time to have take a decent look at it.

Service is a GAT prescritive guidance, to help people write Web Services (ASMX, there is a separate factory for WCF) quickly and consistently in a manner that is considered a best practice, accordingly to the Microsoft Patterns & Practices Group (PAG)

So far i liked it, not impressive (yet :-)), but very good so far.

The code generated by the factory recipes was not unfamiliar to me, not only had i already seen some similar code & patterns some years ago in Clemens Proseware, as the code pattern is similar to the code in WCF.

This is not only a factory, for services i also has a "sub factory" to help you generate your business and data layers. Haven't tested this part though, for me a service is kind of a facade, the business logic is implemented elsewhere, but if this extra functionality is there, i won't complain.

It might make sense on smaller projects. I only took a peek, but it seems to be able to create CRUD procedures and data classes from business objects for the Data Access Layer; business entities from the database and data repository classes for the Business Entities (a separate project is created for business logic, but it's just an empty project).

The factory, divides the solution into two major blocks (split by several projects):

  • Source code
    • Service - This is quite big, it is worth a post on it's own. In a few days, i will describe this in another post.
    • Business Components - already described it,since I'm not (at least not yet) that interested in this part i won't explored it any further for now.
    • Data Access Layer - ditto
  • Tests
    • Functional tests and Unit tests (just placeholders to promote TDD practices i guess, since no code is generated whatsoever)
    • test client, a winform client to invoke the generated services, haven't tested this, but from what I've seen it allows you to call your services and show the results in a grid. (i guess it works nicely for non hierarchical or complex data types, just guessing never tried it though).


I've been studying the implementation reference in order to understand the recommended naming conventions, the code is very straightforward although it seems to have some inconsistencies between how the three provided services are implemented.

If i had to give to classify it now, i wouldn't have problems in (prematurely) classifying it as highly useful. Three years ago, i did a project where this factory would have been very useful. It would have saved me a lot of time and typing (more on that later too :-))

In a semi related recently, a weekly drop of the Web Client Factory has been recently released.

[Cross posted on www.agilior.pt/blogs/tiago.pascoal/default.aspx]

Extract BizTalk artifacts from assemblies using Reflector

This  seems like a GREAT add in for the ever useful Reflector (probably the .NET utility that i can't live without. Saved me precious hours of my life, debugging problems in external libraries).


This add in, allows you to inspect BizTalk artifacts contained in a assembly and *gasp* extract them.


Haven't tried it yet, but it seems like this could prove to be real handy.


[Crossposted to www.agilior.pt/blogs/tiago.pascoal/default.aspx

Digital Identities


Recently i entered windows control panel to uninstall a package, and noticed a "Digital Identities" entry.

It seemed a novelty, and i wondered what the heck was that. I keep my machine fairly update, but i do all the updates manually and i never noticed choosing to install such thing.

According to the applet, it is something that allow us to create personal cards to avoid entering information and passwords manually on websites.

Maybe this is part of the new Infocard infrastructure, i fired the applet and it doesn't seem like Microsoft's work. It is fairly amateurish. :-)

The help has errors and the applet itself has serious typos

The create new card states action:

"Provider Cards are issue by third parties, such as backs, membership organizations, and amjor websites....."

I normally don't even notice such things, but this is such a blatant type, that even i noticed. I surely don't trust my money with a back nor i frequently visit amjor websites. :-)

The help (a single screen, i wouldn't call it help), is badly and a CHM markup is visible.

I've been googling like crazy to find if this is spyware,a trojan or whatever, with this evidence i was starting to become worried. I do all my browsing with firefox, and i rarely use IE for browsing the internet (and i've never had a spyware infection, and the last time i got a virus i was still running DOS :-)). Although an email trojan hipothesis couldn't be discarded. :-(

According to this it may have been installed with WinFX (but i don't have infocard service installed)

The control panel icon, is consistent with this post, but the screens are not the same. The applet border is the same, and it seems to "darken"  all other windows (and it seems to also have the modal behaviour i get).

It is not that i'm a paranoid guy or a fan of conspiracy theories (even if you are not paranoid, it doesn't mean they are not trying to get you :-)), but i'm fairly carefull with the things that get installed, and this seemed highly suspicious (the typos are really amateurish and it seemed the work of a rather incompetent phisher :-)). But this link from Kim Kameron, left me more assured, it seems to be from Microsoft.

Not sure how it got installed though, probably when i installed Service Bat some weeks ago.

Only haven't found, the location of the executable that is responsable for the applet. Still googling to see where i can find the location of a control panel applet.  Seing who is responsable for the UI, would put my (last) doubts to rest. :-)




Embedded Databases

A while ago, we were evaluating building a product that would run on a users desktop (fat client in the old school terminology, winform in this era :-) ), one of the requirements was that it would need to store data. An embedded database would be a great fit, preferably a relational one.

MSDE (or now that that SQL2005 shipped) Sql Server Express just wouldn't cust the mustard. It's not a question of capacity, speed or memory footprint (although memory footprint could be an issue), it is just an issue of size. How can you justify that for a software that is 1,2 or 3 Mb, you multiply that size by 10 or 20 times, just to include a database? (an issue a user, specially a non technical user doesn't care about).

Since this would be a low cost product, with a very small niche market all pennies would count, so the preference was a on either a low cost (or preferably) free solution.

At the time, this was our short list.

SqlLite - At the time i've looked if someone had ported it to managed code using Managed C++. No dice here, but there is an ADO.NET Provider.  Which should be enough. SqlLite seems both small and fast, and has a solid reputation.

Firebird - A product with a solid reputation, and that seems to have a good and loyal user base. It 's not managed,but like SqlLite it also has managed ADO.NET providers. It has a good reputation, it seems to have a small footprint, and it looks like a very easy product to use as and embedded data store.

VistaDB - Also seemed like a nice product, but it costs $$$. Which somehow it puts it on a lower level than the SqlLite and Firebird (due to our constraints).

Since the project was postponed, i haven't evaluated the solution on it's technical merits. Both SqlLite and Firebird had points on it's favor (cheaper :-D ),and my investigations of VistaDB were very light. (to be read, just read the brochures :-)). Firebird had another point in it's favor. It is supported by LLBLGen Pro, a product that we like, better yet a product which we have already licensed.

Are you still with me? (doubt it), basically i've written all this crap, because i'm a sucker for goodies, i usually pass on the opportunity for useless freebies, but this free may eventually be useful to me. :-)

Vista Software, seems to be engaging in some kind of viral marketing campaign, it is offering free licenses to bloggers who include the following marketing babble:

VistaDB 2.1 database for .NET has been released
This 2.1 update includes over 60 improvements, including new support for .NET 2.0 and Visual Studio 2005. VistaDB is a small-footprint, embedded SQL database alternative to Jet/Access, MSDE and SQL Server Express 2005 that enables developers to build .NET 1.1 and .NET 2.0 applications. Features SQL-92 support, small 500KB embedded footprint, free 2-User VistaDB Server for remote TCP/IP data access, royalty free distribution for both embedded and server, Copy 'n Go! deployment, managed ADO.NET Provider, data management and data migration tools. Free trial is available for download.
- Learn more about VistaDB
- Repost this to your blog and receive a FREE copy of VistaDB 2.1!

Since i'm an aforementioned freebie sucker, i'm applying for my free license. However i had to write something with (at least in appearence) useful, so i'm not labeled as a marketing whore. :-)

In my defense, i already wrote a post in this topic (with some imagination) of embedded databases here.



Infopath Previewing in Sharepoint

When dealing with Infopath forms and Sharepoint (well even if you don't use Sharepoint), there are mainly two problems. Well a problem and a nuisance.

If you just want to see a form content you have to have Infopath installed, even if you have infopath installed it's a nuisance to wait for infopath to load just to see the form content, for one form this is not very problematic, if you have to see a lot of forms it can can quickly become a real drag.

Two days ago i was given a demo of a soon to be released product that will ease the pain, and allow you to see the form content even if you don't have Infopath installed.

The product is neatly integrated with Sharepoint (both Portal Server and Windows Sharepoint Services), and allows you to quickly see a form content, without having Infopath installed.

The product is localized in 15 languages (or a number very near 15), including chinese, arabic languages and hebrew, it's a breeze to install and configure and it's a real bargain.

You can find more information about Cave Digital Infopath Web Previewer here (including screen shots).

Apparently Office 12 (i haven't seen any announced dates, and this information is still a little vague), will have the capabilities to fill out forms using only a browser, but until then i think this product will be a great fit.

But don't take my word for it try the product.

P.S Just noticed Patrick, is also recommending it, his recommendation is worth a lot more than mine. :-)

BizTalk: What is the unit of a Duration item in BAM?

This is a translation of a post, originally posted on our corporate blog, since the original post is written in Portuguese, and i've noticed on the logs a few hits from english speaking people on this particular post, i figured it would be more helpful if there was an english version.

The post was written by my partner (Bruno Camara), which is our in house BizTalk expert, and i've provided a (not very literal) translation:


In one of the projects we are are currently envolved, the client requested us, a set of metrics from the requests that are handled by BTS. This request lead me to investigate Business Activity Monitoring (BAM) capabilities. It's impressive how fast and how effortless it's possible to extract a set of metrics directly into an Excel Pivot Table, and from there perform some BI.

I was really impressed, however i've stumbled on a problem that triggered some reflection about BTS usage.

When we are running the wizard to define the activities and attributes (response times, response with errors,etc,etc) that we wish to monitor, there is an item type named "Duration". One of the metrics i wanted to extract was the request's response time,which is nothing more than the duration, (defined by a "Duration" item) between two "Business Milestones". The first one, corresponds to the Receive Shape associated with the reception of the request, and the second one corresponds to the final Send Shape used to send the response (using BAM's own terms).

After configuration, and some test activity in order to gather some results into the Pivot Table, i've immediately noticed that i couldn't identify the duration's unit.  I've searched the documentation,i've googled but found no valid information,until i decided to ask on a biztalk newsgroup to see if someone could provide me with an answer. Finally i've got one from a MSFT guy, and i quote: "It is in days. In the next release, we plan to enable users to define that in the Bam Excel UI."

We wanted to show response time in seconds of even milliseconds, nothing that an excel formula couldn't solve. However that kept me wondering, why is this measure unit in days? does this mean BizTalk wasn't "designed" for request-reply scenarios, in which a response is expected in the order of seconds/milliseconds, but instead it was designed for "long running transactions" scenarios? This could be a interesting discussion, but in the end only the people that architected BTS could provide a definitive answer.

However of one thing i'm sure, BAM sure is spectacular


More Posts Next page »