Microsoft Named a Leader in Gartner's Public Cloud Storage Services for Second Consecutive Year
Check out the details in Nicole Herskowitz's
Blog.
You are invited to join an online event on July 20th to learn about the new features and technologies coming with this release. No registration is required! Just follow the link and save the date on your calendar! There will be live Q&A session with the VS developers involved in building the app after the pre-recorded show video.
Visual Studio Release Event
For more details about Visual Studio 2015, check out the VS 2015 feature topics available here.
There have been occasions where I've wanted to create work items in bulk.
For example: Every time you create a User Story your team has several standard Tasks that need to be created. Write Test Cases, Execute test cases, Deploy to QA, etc. I don't want to manually go through dozens or work items adding the same set of work items as children to each one over and over.
Excel is a pretty good option, certainly faster than doing it one at a time via Team Explorer or the Web interface. In the past I have written C# applications to do this through the TFS API. This works great and is very easy to code.
I am always trying to force myself to get better with PowerShell, so I started searching for examples of calling the TFS API from PowerShell. This helped me piece together the parts I needed to solve this problem with PowerShell.
These were my requirements:
As you can see a simple cut and paste in Excel won't do, because I would still have to edit each work item to add the report name to the title and populate the fields from the parent that I want brought over.
PowerShell to the rescue
if ( (Get-PSSnapin
-Name
Microsoft.TeamFoundation.PowerShell
-ErrorAction
SilentlyContinue) -eq
$null )
{ Add-PSSnapin
Microsoft.TeamFoundation.PowerShell }
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Client")
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Build.Client")
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Build.Common")
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.WorkItemTracking.Client")
#Get the TFS Collection
$tfsCollectionUrl
=
"http://Server:8080/tfs/CollectionName"
$teamProjectCollection
=
[Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($tfsCollectionUrl)
#Get the WorkItemStore Service
$ws
=
$teamProjectCollection.GetService([type]"Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore")
#Get the Team Project
$proj
=
$ws.Projects["Team Project"]
Write-Host
"Team Project Collection: "$teamProjectCollection
Write-Host
"Project:"
$proj.Name
Write-Host
"---------------------"
#Write a query to get the parent work items
$ParentWorkItems
=
$ws.Query("SELECT [System.Id] FROM WorkItems WHERE [System.AssignedTo] = 'Dave Lloyd' ")
#the Sub Stories you want to create as Children
$ChildStoryTitles
= @( "Report Attributes","Data Lineage","Gap Analysis","Impact Analysis","Remediation","Testing")
#For each Parent Work item
foreach ($WorkItemParent
in
$ParentWorkItems)
{
$counter=1
Write-Host
"Parent workItem:"
$WorkItemParent.ID "-" $WorkItemParent.Title
#For each Parent create 6 New User Stories
foreach ($childTitle
in
$ChildStoryTitles)
{
$story
=
$proj.WorkItemTypes["User Story"]
$workitemChild
=
$story.NewWorkItem()
#Append the Parent Title to the end of the Child Title
#System fields like title can be referenced directly and show up in intelliSence
$workItemChild.Title = $childTitle
+
" for "
+
$WorkItemParent.Title
#There is an order so I used a counter to set the Stack Rank on the CHild Stories
#For non-system fields use the fields member the name of the field and the value property
$workItemChild.Fields["Stack Rank"].value =
$counter
#take any fields from the parent that you want to bring down into the child
$workItemChild.AreaId = $WorkItemParent.AreaId
$workItemChild.Save()
Write-Host
" Child workItem"
$workitemChild.ID $WorkItemChild.Title
#Link the CHild work item to the Parent Work item
$linkType
=
$ws.WorkItemLinkTypes[[Microsoft.TeamFoundation.WorkItemTracking.Client.CoreLinkTypeReferenceNames]::Hierarchy]
$link
=
new-object
Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemLink($linkType.ReverseEnd, $workitemParent.ID)
$workitemChild.Links.Add($link)
$workItemChild.Save()
$counter++
}
}
Couldn't go to //Build/? Not to worry Build is coming to you.
June 12th at the Design Exchange you can see Joe Stegma, Jeff Burtoft, Nikola Metulev and Vlad Kolesnikov deliver a day of sessions from Build.
Agenda
8:00 - close | Registration |
8:00 - 9:00 | Breakfast |
9:00 - 10:30 | Keynote |
10:30 - 10:45 | Break |
10:45 - 11:45 | Session #1 Universal Windows Platform |
11:45 - 12:45 | Lunch |
12:45 - 13:00 | Challenge |
13:00 - 14:00 | Session #2 Microsoft Edge & Web Apps |
14:00 - 15:00 | Session #3 Lightning Talks |
15:00 - 15:30 | Break |
15:30 - 16:45 | Panel Q/A |
16:45 - 17:00 | Closing remarks |
Register here or if you can't get there but would like to join the Live Webcast register here.
If you haven't registered what are you waiting for?
Click the movie poster below to Register.

World-class free online conference that features technical content presented by Americas' region MVPs that is open to the public
More technical content (Level 200, 300, 400), less marketing
5 tracks: IT Pro English, Dev English, Consumer English, Mixed Spanish, Mixed Portuguese
Event will be broadcast via Lync using L+ which enhances the conferencing capabilities of Lync
Two full days of sessions with simultaneous webcasts running across all 5 tracks
Thursday May 14th and Friday, May 15th
Start at 8am PT and running until 6pm PT (Pacific)
Day 1: 45 sessions + Keynote, Day 2: 50 sessions
Keynote on Day 1 to be delivered by Steve 'Guggs' Guggenheimer, Corporate VP of DX
On Demand content available via Channel9
This event is not just for MVPs, it's for everyone!

Here are a couple of offers from Microsoft you may want to take advantage of.
Enjoy the free stuff, and you're welcome.
It's that time of year again. Time for "ObjectSharp at the Movies".
This year's line-up:

Azure Websites - More than hosting
TL;DR Learn how to save your business money with websites and backups.
Description
In this session you'll learn the many different ways to deploy, manage & scale .NET, PHP, Node.js, Python and Java websites and web apps on Microsoft Azure. This includes cloud best practices like integrated source control & continuous deployment with Git & GitHub, auto scaling, web jobs, caching, backups, staging environments and more. Join Microsoft in this demo heavy overview of Microsoft Azure Websites and learn how eligible startups can get up to $60,000 in free Azure credits through BizSpark.
What you'll walk away knowing
How to create an Azure Website
How to integrate with source control systems like Git & GitHub for continuous deployment
How to scale your website manually & automatically
How to create a staging environment for your site
How to automatically backup your site
Dates & Locations
Toronto - March 18
Starts: March-18-15 12:00 PM
Ends: March-18-15 2:00 PM
Where: MaRS Discovery District - Room: CR2, 101 College St, Toronto Ontario M5G 1L7
Vancouver - March 23
Starts: March-23-15 11:30 AM
Ends: March-23-15 1:30 PM
Where: Launch Academy, Back Boardroom, 128 W Hastings St, Vancouver, British Columbia V6B 1K6
Kitchener - March 26
Starts: March-26-15 11:30 AM
Ends: March-26-15 1:30 PM
Where: Communitech Hub, Atlas/Matrix Room, 151 Charles St W, Suite 100, Kitchener Ontario N2G 1H6
Montreal - March 26
Starts: March-26-15 12:00 PM
Ends: March-26-15 2:00 PM
Where: Notman House, Notman Hall - 3rd Floor, 51 Rue Sherbrooke W, Montréal, QC
Events Summary
Azure Websites - More than hosting
Toronto - March 18
Vancouver - March 23
11:30 AM - 1:30 PM
Launch Academy, Back Boardroom, 128 W Hastings St, Vancouver, British Columbia V6B 1K6
Kitchener - March 26
11:30 AM - 1:30 PM
Communitech Hub, Atlas/Matrix Room, 151 Charles St W, Suite 100, Kitchener Ontario N2G 1H6
Montreal - March 26
12:00 PM - 2:00 PM
Notman House, Notman Hall - 3rd Floor, 51 Rue Sherbrooke W, Montréal, QC
Is it time to level up your skills using Infrastructure as a Service? Want to learn from the best technical engineers and noted technology leaders around?
Join Mark Russinovich, Corey Sanders, and members of the Azure Engineering team for a live event delivered online over four days. Join for one session, join for them all. You'll dive deep into technical scenarios, ask questions of the experts, and level up your own skills.
Azure IaaS for IT Pros Online Event, December 1-4
Click here to register!
Become an IaaS go-to guru
Mark Russinovich, Microsoft Chief Technology Officer, Azure, will kick off the event, followed by deep technical training in the technologies critical for IT Pro Implementers, like you, to deepen your foundational cloud skills. Following the keynote, experts will share their technical insights on topics including Core IaaS, Cloud Infrastructure Fabric, Open Source Software on Azure, and Workloads on Azure IaaS.
Be recognized for your skills
Get certified for your skills! Register for the event to receive reminder emails and obtain details for receiving a 50% off exam voucher you can use towards Exam 70-533: Implementing Microsoft Azure Infrastructure Solutions for Microsoft Azure Specialist Certification.
Join the live event from 9am to 1pm PST
December 1
Establish the Foundation: Core IaaS Infrastructure Technical Fundamentals
December 2
Dive Deep into Networking, Storage, and Disaster Recovery Scenarios
December 3
Embrace Open Source Technologies (Chef and Puppet Configurations, Containerization with Docker and Linux) to Accelerate and Scale Solutions
December 4
Optimize Windows Workload Architecture and Administration Capabilities Within Azure
Register Now