Extending TFS to include custom fields in work items - c#

We have a need within our organization to add a field to Work Items that has traceability throughout TFS 2010 source control. We use ticket numbers to identify work items internally and would like to associate a TFS work item with our internal ticket numbers and then be able to run reports to gather information such as:
Which work item was associated with ticket #12345
What ticket numbers were included in a particular release branch?
Etc...
All of this starts with extending the TFS work item UI to include our custom field. Not having done any extending of TFS before, can anyone point me in the right direction with advice, URLs, tutorials, etc?
Thanks!

I have not tried this myself, but this post may get you started:
How to add a Custom Field to an existing Work Item Type in TFS 2010 Process Template (MSF for Agile 5.0)

Related

How to add a field to TFS workitem

I'm a new user to TFS
I would like to add a custom field to a work item in a project in my project collection.
My expectation is to add a custom field("BizID") to a work item "task" from **c# code behind.**
I would like to know what all are possible ways to add a custom field to a work item?
P.S: I dont need a Process Template interruption to do this and Also not using WIT.
Some references will help. Thanks in advance.
At present time, in order to add a field to a process template in on-premise TFS, you need to modify the process template XML. There's no way around it.
You may be able to avoid using a process template customization by using some combination of custom backlog columns and tags, however. It depends on the data you want to capture.
As Daniel mentioned, modify the process template is the only way to modify a work item type.
Besides modifying work item type definition, you can also download and install TFS Power Tool, which will simplify the process of add a field. TFS Power Tool provides a UI to add fields. You can check this tool and follow this blog:
http://blog.infostructure.co.nz/2013/05/how-to-addedit-field-in-team-foundation.html

Recognize record created from outlook/email in plugin

I'd like to perform some operation in mscrm plugin, if a new record is created automatically by CRM client for Outlook. Eg. it can be a contact or an incident created from an email.
Is there way to check this condition?
We have contact's first name and last name filled oppositely and incident without the caseorigincode field filled, when created from an email in Outlook. Maybe there is a better workarround to solve these two issues. But still I am wondering about the original question.
According to the sources available online, there is really no reliable way to solve this.
There was property CallerOrigin until CRM 4. Then it got deprecated, but continued working for some time, as state in another answer (https://stackoverflow.com/a/14812885/1474519). But it doesn’t seem to be working anymore in CRM 2015.
I found couple advices with IsExecutingOffline and IsOfflinePlayback, but it is really not solving the problem.
I also found a tip to check this code HttpContext.Current.Request.Url.ToString();. This doesn’t work for me.
I found the most complete information here: http://blog.simpletrees.com/2012/03/executioncontextcallerorigin-in.html
According to this article, I am sending a value in a hidden field from my form (or thru API, from plugin, from workflow). As this field is not set when a record is created from outlook, I can recognize the record being created from Outlook. There is of course problem, this field might not be set when importing records or when using mobile app. But I don’t see a better way to go.
Therefore, I started request on Microsoft Connect to add this functionality. You can vote for it here: https://connect.microsoft.com/dynamicssuggestions/feedback/details/1776771
You could add an attribute to the contact and incident to save the origin of the creation.
Then you add a plugin that listens to the Create event of the entities and register it only for client side (offline) execution.
Or you check the PluginExecutionContext for the IsExecutingOffline and IsOfflinePlayback properties to check if the creation was initiated from outlook and store the appropriate value.
https://msdn.microsoft.com/en-us/library/microsoft.xrm.sdk.ipluginexecutioncontext_members.aspx

Get user detailed activity on Documents in Sharepoint 2010

I currently have a client that needs to generate a report on the user's changes on the documents on every Document Library on every site collection.
I know I can use the Audit module OOB, but it doesn't show enough detailed data on the changes made on each item.
I was thinking about the detailed version history on the documents, but I would have to populate through every item of every list on every site collection. Something like this.
I was thinking about doing a custom page that combines both. I can filter the audit info of a particular user on a particular date range, and use the ItemId to get it's versioning details up to the audit date.
What do you think? could that be possible? is there a better way?
Thank you!
I recommend you develop a EventReceiver implemented in sitecollection level, so you can save "custom-made" any changes in elements of lists or libraries. So you can have your custom audit log in alternate database.
See also: http://msdn.microsoft.com/es-ec/library/ee231563.aspx
The EventReceiver is a good feature to keep high control in SharePoint Functionality.
Sorry for my bad english.

Extending Visual Studio / Team Foundation Server 2010

I am attempting to use a VSPackage to create a Tool window for visual studio 2010. I have all of that created. For my project I am attempting to access TFS 2010. For example when working on a project some files might get checked out and I make changes on them that I don't necessarily want to check in later. Rather that going through tfs and selecting all of the files I don't want to check in(can be very time consuming) I would like to be able to filter files / add files to a "do not check in" type of list. So basically If a add a file / filter for files to not check in. I want some way of connecting to the event of when someone wants to check in, the plugin / tool window can automatically deselect all of the files in the filter/ file list that I have set up. I have a good idea of what I want to do. I just need a good place to start in order to communicate with tfs. So I know I would need to be able to access my collections and also be notified of when someone wants to check in files/ that way I can modify the check in status of the file that I do not want to check in. Hopefully I made sense with all of that. Any help would be MUCH appreciated!!
The class TeamFoundationServerExt (http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.teamfoundation.teamfoundationserverext.aspx) may provide what you're looking for.
It contains the current TFS context inside Visual Studio - eg. the team project to which you're connected in Team Explorer.
From there you can get the VersionControlServer object, which in turn exposes check-in related events. More details in http://blogs.msdn.com/b/buckh/archive/2012/01/25/how-to-get-the-tfs-objects-used-in-our-own-ui-integration.aspx.
The blog post mentioned above has a nice code sample.
One last thing: If the files you're trying to filter out can be defined via regular expressions, you can use the Forbidden Patterns check-in policy, part of the Team Foundation Server Power Tools.

Adding Tasks programmatically into the taskList in sharepoint

I have Task List on URL, what I want , when the page loads, the Task list should be loaded with all the aggregated tasks of its sub sites.
I want to do it in C#
You may not need to develop this yourself as there are out-of-the-box solutions available.
Out-of-the-box
If you have Office SharePoint Server 2007 (not just WSS 3.0) just add the Content Query Web Part do the page where you'd like to add the aggregated data. Then configure it to display items from the Task list only.
Another option which works if you have WSS 3.0 as well is SharePoint Designer. You can add the data view web part to the page and configure it to do the same, although only from a fixed set of sites.
There are also other solutions out there that you can purchase.
Custom
If you'd still like to go down the custom route, there are also several options. Have a look at what they are on this SharePoint Dev Wiki page. Again, some of these have a requirement of Office SharePoint Server.
There is also the method of looping through the sub-sites, getting an instance to each list, and then querying that list using the techniques listed here. This isn't recommended if you have several sub-sites or lists containing a lot of items as it will be time consuming, tough on memory, and you will need to implement a caching solution.
You can use a content query web part and scope only Task Lists of sub sites:
http://www.novolocus.com/2008/07/18/content-roll-up-options-part-ii-content-query-web-part/

Categories