TFS Server Integration with Project Server 2010

Useful links

Microsoft Team Foundation Server 2010 and Microsoft Project Server Integration Feature Pack = https://msdn.microsoft.com/en-us/library/gg455680.  This link has all the links you need.  I strongly recommend you read through all of the sub-articles prior to beginning installs and configuration.  It will save you some headache.

Managing Project Server Integration with TFSAdmin ProjectServer - I wish I had come across this link sooner than I did.  It's practically a step by step on how to use the TFSAdmin ProjectServer command line tool to set up synching between TFS and Project Server (https://msdn.microsoft.com/en-us/library/gg412656).  The help on TFSAdmin ProjectServer is really good, so all you need to do is enter that at a command line to get the information you need on how to successfully execute commands.

I should say right off the top that I am not a developer, have never used Visual Studio 2010 in any meaningful way, and don’t even pretend to have scripting skills.  I have a little skill with SQL queries that I picked up on the job supporting Project Server 2007 and 2010.  I guess what I’m saying is, if I can do this, you can too, and you can certainly learn from my mistakes.

A brief description of the WHITE domain user accounts
1. White\farmadmin: This is my farm admin account for SharePoint and is the service account for Project sErver.
2. White\sqlserver: This is the service account for SQL Server.
3. White\test1: This is a domain user that I will assign tasks to in TFS and synchronize with the enterprise project plan.

A brief description of architecture:
1. Project Server 2010 application tier and web front end tier both reside on \\brwhitewfe2010.   This server also hosts SharePoint 2010.  Project Professional is installed on this same server.
2. The Team Foundation Server runs on \\tfs2010. My developer workstation is also \\tfs2010.
3. The database server is \\brwhitedb2010 and is running SQL Server 2008 R2.

Because I’m only using one server for TFS and developer work, I copied all the install files for Visual Studio 2010, Visual Studio 2010 SP1, and Visual Studio 2010 Feature Pack 2 to the local TFS server (\\tfs2010) for quicker installs.  The Visual Studio 2010 install can be time consuming (understatement) so I wanted to get every advantage I could. 

I installed Visual Studio 2010, SP1, and Feature Pack 2 successfully on \\tfs2010.

I installed Team Foundation Server on \\tfs2010 with a web access URL of https://tfs2010:8080/tfs/web.

I plan to use an existing PWA instance on \\brwhitewfe2010 called PWAoob, which is my out of the box PWA instance for testing.  The URL is https://brwhitewfe2010/PWAoob.

I configured a TFS collection called TFS Team Project Collection because I lack imagination.  A customer would probably name this something meaningful (I hope) because they will likely have more than one such team project collection.  It’s likely every development project would have its own team project collection.

Using https://msdn.microsoft.com/en-us/library/ms181477(VS.100).aspx, I created a new team project called “American Project X”.  The new team project site on SharePoint is on my Project Server at https://brwhitewfe2010/sites/tfs/TFS Team Project Collection/American Project X. As part of the new team project creation wizard, I created an empty control folder (as this is a new project) and the creation completed successfully.

The project dashboard for this team project collection is located on my SharePoint 2010 server which is also my Project Server 2010 at: https://brwhitewfe2010/sites/TFS/TFS%20Team%20Project%20Collection/American%20Project%20X/Dashboards/ProjectDashboard.aspx.

 

TFSAdmin ProjectServer switches
Here is a summary of the switches I listed for myself for use in the TFSAdmin ProjectServer command line tool.  You may consider creating a similar list for yourself if you are setting up a test environment for TFS integration with Project Server 2010.
• /pwa:https://brwhitewfe2010/PWAoob
• /tfs:https://tfs2010:8080/tfs
• /collection:https://tfs2010:8080/tfs/tfs%20team%20project%20collection
• /enterpriseProject:"Code Development Plan II"
• /teamProject:”American Project X” 

Setting up the integration
Per https://msdn.microsoft.com/en-us/library/gg412647, I went to Drive:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE and ran the command below:

Usage: TfsAdmin ProjectServer /RegisterPWA /pwa:pwaUrl /tfs:tfsUrl

Actual command: TfsAdmin Project Server /RegisterPWA /pwa:https://brwhitewfe2010/PWAoob /tfs:https://tfs2010:8080/tfs/web

I added c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE> to the PATH variable and ran the command below with the result:

TfsAdmin Project Server /RegisterPWA /pwa:https://brwhitewfe2010/PWAoob /tfs:https://tfs2010:8080/tfs/web

Registering PWA https://brwhitewfe2010/PWAoob

.................................................TF244060: Cannot access Team Foundation Server: https://tfs2010:8080/tfs/web. The error is: "Team Foundation services are not available from server https://tfs2010:8080/tfs/web. Technical information (for administrator): HTTP code 404: Not Found".

I tried that a second time around with no "web" on /tfs:https://tfs2010:8080/tfs and this is what happened:

TfsAdmin ProjectServer /RegisterPWA /pwa:https://brwhitewfe2010/PWAoob /tfs:https://tfs2010:8080/tfs

Registering PWA https://brwhitewfe2010/PWAoob

.........................................................................TF244087: The Feature Pack for Team Foundation Server 2010 and Project Server Integration must be installed on those machines that host Project Server. The download page for the feature pack can be found here: https://go.microsoft.com/fwlink/?LinkId=201922.

Okay, so I’ve got the correct URL for the TFS server, but I’m missing the feature pack.

What I needed is "Feature Pack for Visual Studio Team Foundation Server and Project Server Integration".  This is what I get for not reading the system and setup requirements at https://msdn.microsoft.com/en-us/library/gg412650.aspx.  Get the link to download in the "Installation Requirements” section.  You must have a Visual Studio Ultimate subscription on MSDN in order to grab this download.  Once on MSDN’s website, I had to search by using "Team Foundation Server 2010" in order to find the download when I went looking.

I downloaded and installed "Feature Pack for Visual Studio Team Foundation Server and Project Server Integration" on brwhitewfe2010.

I reran the RegisterPWA command and got an error:

TfsAdmin ProjectServer /RegisterPWA /pwa:https://brwhitewfe2010/PWAoob /tfs:https://tfs2010:8080/tfs

Registering PWA https://brwhitewfe2010/PWAoob

..............................................................................There is an error in XML document (1, 1905).

I started to research the error and then, because I'm an optimist, I reran the command without changing anything at all and it worked.  Ghost in the machine?  You decide.  Maybe I could star on “Ghost Adventures”.
TfsAdmin ProjectServer /RegisterPWA /pwa:https://brwhitewfe2010/PWAoob /tfs:https://tfs2010:8080/tfs

Registering PWA https://brwhitewfe2010/PWAoob

...........................................................................................................................................
You have successfully registered PWA https://brwhitewfe2010/PWAoob.

Wait a few minutes before running another provisioning command while background processes complete.

I ran the command below per https://msdn.microsoft.com/en-us/library/gg412651#GetMappedPWAs to get the mapped collection.

TfsAdmin ProjectServer /GetMappedCollections /tfs:https://tfs2010:8080/tfs

The result was a "No team project collections are mapped" as expected because I have not mapped any collections yet.

Next, I tried to upload default mappings using this command per https://msdn.microsoft.com/en-us/library/gg412658.aspx#UploadDefaults:

TfsAdmin ProjectServer /UploadFieldMappings /collection:https://tfs2010:8080/tfs/tfs%20team%20project%20collection /usedefaultfieldmappings

Uploading field mappings to team project collection https://tfs2010:8080/tfs/tfs%20team%20project%20collection.

......................................................TF294021: The following team project collection is not mapped to a PWA instance: TFS Team Project Collection. Check the mapping for the team project collection.

But…
It looks like I need to set up my mapping first between the team project collection on my TFS server to the PWAoob instance running on my web front end called \\brwhitewfe2010.  I mistakenly thought this is what the RegisterPWA command did.

To that end, I ran this command from https://msdn.microsoft.com/en-us/library/gg412651.aspx#MapPlanToProject:

TfsAdmin ProjectServer /MapPlanToTeamProject /collection:https://tfs2010:8080/tfs/tfs%20team%20project%20collection /enterpriseProject:"Code Development Plan II" /teamProject:”American Project X” /workItemTypes:Task /nofixedwork

The command above includes this note in the online document:

Replace tpcUrl with the URL of the team project collection, EnterpriseProjectName with the name of the enterprise project plan, and TeamProjectName with the name of the team project. Replace ListOfWorkItemTypes with the names of the types of work items that you want to participate in data synchronization. Specify /noFixedWork if you want to prevent fixed-task-type assignments. You can also specify the /projectFieldForWorkItemType argument and the name of a field in Project to store the type of work item.

So, I had to find out what to include for the "/workItemTypes:ListOfWorkItemTypes /nofixedwork /projectFieldForWorkItemType:ProjectFieldName" portion of the command.  Based on the note above, I can drop the /projectFieldForWorkItemType and I will just to see what happens.  For this, I went to "Specifying the Work Item Types That Can Be Synchronized" at https://msdn.microsoft.com/en-us/library/gg412661...

To list types of work items that are mapped for a team project:

TfsAdmin ProjectServer /GetMappedWorkItemTypes /collection:https://tfs2010:8080/tfs/tfs%20team%20project%20collection /teamProject:”American Project X” 

................................................................................................................................................................
There are no types of work items configured for synchronization for the following team project collection and team project: https://tfs2010:8080/tfs/tfs%20team%20project%20collection, American Project X.

Okay.  Next, I went back and ran the command to map the enterprise project plan in Project Server to the team project in TFS:
TfsAdmin ProjectServer /MapPlanToTeamProject /collection:https://tfs2010:8080/tfs/tfs%20team%20project%20collection /enterpriseProject:"Code Development Plan II" /teamProject:”American Project X” /workItemTypes:Task /nofixedwork              
which resulted in a message saying "TF294021: The following team project collection is not mapped to a PWA instance: TFS Team Project Collection. Check the mapping for the team project collection."

So, I ran the TfsAdmin Project Server /MapPWAtoCollection command:
TfsAdmin ProjectServer /MapPWAtoCollection /pwa:https://brwhitewfe2010/pwaoob /collection:https://tfs2010:8080/tfs/tfs%20team%20project%20collection

Mapping team project collection https://tfs2010:8080/tfs/tfs%20team%20project%20collection to PWA https://brwhitewfe2010/pwaoob.

......................................................................................................................................................
You have successfully mapped team project collection https://tfs2010:8080/tfs/tfs%20team%20project%20collection to PWA https://brwhitewfe2010/pwaoob.

I reran the MapPlanToTeamProject:
TfsAdmin ProjectServer /MapPlanToTeamProject /collection:https://tfs2010:8080/tfs/tfs%20team%20project%20collection /enterpriseProject:"Code Development Plan II" /teamProject:”American Project X” /workItemTypes:Task /nofixedwork

Mapping enterprise project Code Development Plan II to team project American Project X.

.........TF294016: You do not currently have any fields mapped. You must first upload the field mapping file before you can map projects.

So now, I know I need to first upload the field mapping file before I can map projects.  I feel like I’m getting somewhere, even if I’m sort of fumbling with command lines.

From https://msdn.microsoft.com/en-us/library/gg412657, I find the /UploadField command:
TfsAdmin ProjectServer /UploadFieldMappings /useDefaultFieldMappings - I had to alter this command line based on the help returned by entering just that command in bold above.

I ended up with a Usage statement that looked like this:
TfsAdmin ProjectServer /UploadFieldMappings /collection:<tpcUrl> [/filePath:<filePath>] [/encoding:<encoding>] [/validateOnly] [/useDefaultFieldMappings] [/force]

Or, with my parameters
TfsAdmin ProjectServer /UploadFieldMappings /collection:https://tfs2010:8080/tfs/tfs%20team%20project%20collection /filePath:"C:\Program Files\Microsoft Team Foundation Server 2010\Mapping.xml" /useDefaultFieldMappings
and I almost ran this command before considering the Mapping.xml files does not exist and that may be required.  And again, because I’m an optimist, I ran the command anyway and received an error that I can specify a .xml file OR I can use the /useDefaultFieldMappings, but not both.  So it looks like the TFS programmers were watching out for people just like me.

Because of that restriction, the above command becomes this, which I ran:
TfsAdmin ProjectServer /UploadFieldMappings /collection:https://tfs2010:8080/tfs/tfs%20team%20project%20collection /useDefaultFieldMappings

Now, I should be able to rerun my /MapPlanToTeamProject command, but without /workItemTypes:Task /nofixedwork because they are not required:
TfsAdmin ProjectServer /MapPlanToTeamProject /collection:https://tfs2010:8080/tfs/tfs%20team%20project%20collection /enterpriseProject:"Code Development Plan II" /teamProject:”American Project X” 

Mapping enterprise project Code Development Plan II to team project American Project X.

...........................
You have successfully mapped enterprise project Code Development Plan II to team project American Project X.

Excellent link alert: Managing Project Server Integration with TFSAdmin ProjectServer - I wish I had come across this link sooner than I did.  It's practically a step by step on how to use the TFSAdmin ProjectServer command line tool to set up synching between TFS and Project Server.  Here’s the URL https://msdn.microsoft.com/en-us/library/gg412656

Double checking my progress
Using the Managing Project Server Integration with TFSAdmin ProjectServer link, I went back to double check everything and found a hole.  See the commands I ran below.  Just a quick note, I used my Project Server FarmAdmin domain account to do all this work because I'm lazy and didn't want to bother with setting up proper accounts.  I’m explaining this because I wanted to include the entire command line so you could see where the command lines begin and end easily:
C:\Users\farmadmin>TfsAdmin ProjectServer /getregisteredpwa /tfs:https://tfs2010:8080/tfs

The following PWA instances are registered:

https://brwhitewfe2010/PWAoob

C:\Users\farmadmin>TfsAdmin ProjectServer /getmappedcollections /tfs:https://tfs2010:8080/tfs

The following collections are mapped:
Collection https://tfs2010:8080/tfs/tfs team project collection is mapped to PWA https://brwhitewfe2010/PWAoob.

C:\Users\farmadmin>TfsAdmin ProjectServer /getmappedprojects /collection:https://tfs2010:8080/tfs/tfs%20team%20project%20collection
...
The following projects are mapped:

Enterprise project Code Development Plan II is mapped to team project American Project X.

C:\Users\farmadmin>TfsAdmin ProjectServer /getmappedworkitemtypes /collection:https://tfs2010:8080/tfs/tfs%20team%20project%20collection /teamProject:"American Project X"

There are no types of work items configured for synchronization for the following team project collection and team project: https://tfs2010:8080/tfs/tfs%20team%20project%20collection, American Project X.

So, there's still a problem when I go to get my mapped work item types, I get a message saying there are no types of work items configured for synchronization for the team project collection  (https://tfs2010:8080/tfs/tfs%20team%20project%20collection) and team project (American Project X).

Like always, I ran to the help file by running an incomplete command, which generated this:
TfsAdmin ProjectServer
Team Foundation Server Administration Tool
Copyright (c) Microsoft Corporation. All rights reserved.

Commands to administer and provision the synchronization of Project Server and Team Foundation Server

The following is the list of commands that are available. Type 'tfsadmin ProjectServer [command] /?' or 'tfsadmin help ProjectServer [command]' and
press Enter to view help for a specific command.

/DownloadFieldMappings Retrieves the field mappings defined for a team project collection.
/GetMappedCollections Retrieves the set of team project collections for a Team Foundation Server that have been mapped to a PWA.
/GetMappedProjects Retrieves the set of enterprise projects that are mapped to team projects defined for a team project collection.
/GetMappedWorkItemTypes Retrieves the types of work items that are configured for synchronization for a team project.
/GetRegisteredPWA Retrieves the PWA instances that are registered to Team Foundation Server.
/GetSyncMessages Retrieves recent error messages that occurred during synchronization of Team Foundation Server and Project Server. For each enterprise project that is synchronized with a team project, only the first error per synchronization attempt is output.
/MapPlanToTeamProject Maps an enterprise project defined on Project Server to a team project defined on Team Foundation Server.
/MapPWAToCollection Maps a team project collection to a PWA instance. The PWA instance must be registered before mapping the collection to it.
/MapWorkItemTypes Configures the types of work items to participate in synchronization of data in a team project and an enterprise project plan.
/RegisterPWA Registers an instance of PWA to an instance of Team Foundation Server and configures each instance to support data synchronization.
/UnmapPlanFromTeamProject Unmaps an enterprise project defined on Project Server from a team project defined on Team Foundation Server.
/UnmapPWAFromCollection Unmaps a team project collection from a PWA instance.
/UnmapWorkItemTypes Removes types of work items from participating in synchronization of data for a team project and an enterprise project plan.
/UnregisterPWA Unregisters a PWA instance from a Team Foundation Server.
/UploadFieldMappings Uploads the field mapping file for integration of Team Foundation Server and Project Server.

Of interest to me was the /MapWorkItemTypes command, so I ran TfsAdmin ProjectServer /mapworkitemtypes to generate the help for the specific command.

TfsAdmin ProjectServer /mapworkitemtypes
Team Foundation Server Administration Tool
Copyright (c) Microsoft Corporation. All rights reserved.

Configures the types of work items to participate in synchronization of data in a team project and an enterprise project plan.

Usage: TfsAdmin ProjectServer /MapWorkItemTypes /collection:<tpcUrl> /teamProject:<tfsProject> /workItemTypes:<workItemTypes> [/skipUIChanges]

 /collection Specifies the URL for a team project collection on your Team Foundation Server. Use a fully specified URL such as https://servername:8080/tfs/Collection0.
 /teamProject Specifies the name of a team project defined on Team Foundation Server.
 /workItemTypes Specifies the work item types in Team Foundation that you want to synchronize with tasks on Project Server. These should be specified in a comma-delimited form, such as /workItemTypes:"Task,User Story".
 /skipUIChanges Specifies to make no changes to the form for the work item type.

Now, we are getting somewhere with that Usage statement...
TfsAdmin ProjectServer /MapWorkItemTypes /collection:<tpcUrl> /teamProject:<tfsProject> /workItemTypes:<workItemTypes> [/skipUIChanges]

I'm going to try this and I might add that because I’m not a developer, I have no idea how User Story figures into Agile which is the type of project management I selected when I created the team project collection, but I recognize Task as something I would probably want to synch with my Project Server project.

TfsAdmin ProjectServer /MapWorkItemTypes /collection:https://tfs2010:8080/tfs/tfs%20team%20project%20collection /teamProject:”American Project X” /workItemTypes:"Task,User Story"

Configuring synchronization for the following work item types for team project American Project X: Task, User Story.

...........
You have successfully configured the following work item types for team project American Project X: Task, User Story.

If I run the command to get the mapped work item types again, I should get a result now.
TfsAdmin ProjectServer /getmappedworkitemtypes /collection:https://tfs2010:8080/tfs/tfs%20team%20project%20collection /teamProject:”American Project X”

The following types of work items are configured for synchronization:

Task
User Story

So this is all good now!

Associate an Enterprise Project Plan with my Team Project
NOW, I can associate an Enterprise Project Plan in Project Server 2010 with my Team Project in TFS.  Oh, this is getting good.  And yes, I am geeking out a little. 

I went to https://msdn.microsoft.com/en-us/library/gg412651#MapPlanToProject with an eye toward using the “To map an enterprise project plan to a team project” section, which includes the command:
TfsAdmin ProjectServer /MapPlanToTeamProject /collection:tpcUrl /enterpriseProject:EnterpriseProjectName /teamProject:TeamProjectName /workItemTypes:ListOfWorkItemTypes /nofixedwork /projectFieldForWorkItemType:ProjectFieldName

With my parameters, this turns into:
TfsAdmin ProjectServer /MapPlanToTeamProject /collection:https://tfs2010:8080/tfs/tfs%20team%20project%20collection /enterpriseProject:"Code Development Plan II" /teamProject:”American Project X” /workItemTypes:"Task,User Story"

Mapping enterprise project Code Development Plan II to team project American Project X.

....
You have successfully mapped enterprise project Code Development Plan II to team project American Project X.

I know my FarmAdmin user is assigned to tasks in the published enterprise project plan Code Development Plan II, so I’m wondering when and where I will see those tasks show up in TFS.

This thinking leads me to https://msdn.microsoft.com/en-us/library/hh190735, which covers Verifying the Synchronization Process for Team Foundation Server and Project Server Integration.

Because I haven’t done a good job of reading the documentation before I started, my interest is peaked by https://msdn.microsoft.com/en-us/library/gg412653#configpermissions.  I reviewed the permissions required and found that because I’m running has FarmAdmin on my TFS server I’m in good shape with that account, but I don’t have any developer accounts on the TFS server – so if a developer called white\Test1 has an assignment in my enterprise project plan in Project Server, he needs to be able to see it from TFS.  I am assuming here, of course, that synchronization runs both ways between TFS and Project Server which may not be the case.  My ignorance is showing here.

The article says “You must grant Contributor permissions to team members for the team project” for access to TFS.  I had to dig around in the TFS Admin Console to find where this was, so I’ll spare you the search and blind alley description.  I launch Team Foundation Server Administration Console on my TFS server and select my Team Project Collection called “TFS Team Project Collection”.

On the General Tab at the bottom of the screen, I click Group Membership. 
Then I click on [TFS Team Project Collection]\Project Collection Valid Users and click Properties. 

On the Properties page, I see an [American Project X]\Contributors group, so I click Properties for that group.

I select the Windows User or Group radio button and then Add.

Again, because I’m lazy and this is a test server, I can choose Domain Users as the AD group to add.  The group only has about ten users in it. 

I added Domain Users to the Builders group (again, probably not what a customer would do) and made sure that FarmAdmin was in the Project Administrators group.  (Setting this up, it’s easy to see how a developer might be given access to one project but not another within the same team project collection.)

To test my new permissions configuration, I logged into the TFS web portal at https://tfs2010:8080/tfs as user white\test1.  I received an error stating “Access Denied: WHITE\test1 needs the following permission(s) to perform this action: View collection-level information”.  So, I went back to my TFS Admin Console and went to Group Membership again on [TFS Team Project Collection]\Project Collection Valid Users.  Once there, I clicked Properties.  I added Domain Users to the Readers group and clicked OK.

Then, I went back to IE and attempted to log into https://tfs2010:8080/tfs as white\test1.  I got this error for my trouble: TF201072: A user or group could not be found. Verify that the users and groups used in your work item type definition have been added to Team Foundation Server. At least this is different than not being allowed to log on at all, right?  Online research indicated that this may be because the Visual Studio Team Foundation Background Job Agent wasn’t running on the TFS server.  Mine was, but I restarted it and I verified I was logging in with the right account name for white\test1 based on the user domain account in Active Directory.  I tried to log in again, but no luck; same error.

Back to Group Membership I go - [TFS Team Project Collection]\Project Collection Valid Users, Properties.  I can still see my Domain Users in the Readers group.  In the [American Project X]\Contributors group, I added white\test1, specifically.  And THAT allowed me to log into https://tfs2010:8080/tfs.  Whew.  This leaves me to wonder if I haven’t configured something correctly in TFS in order to make groups in AD receive the permissions I want them to in TFS.  I’m so happy I can log in now that I leave that for another day.

Where are my task assignments from the enterprise project plan in Project Server?

Now, where are my task assignments for white\test1 from the Code Development Plan II project plan in Project Server and where do I see them in TFS?  Should I even be able to see them?  I just don’t know at this point.

I go to verify the synchronization is working by using https://msdn.microsoft.com/en-us/library/hh190735. The first suggestion is to TFSAdmin ProjectServer /GetSyncMessages.
C:\Users\farmadmin>TFSAdmin ProjectServer /GetSyncMessages
Team Foundation Server Administration Tool
Copyright (c) Microsoft Corporation. All rights reserved.

Retrieves recent error messages that occurred during synchronization of Team Foundation Server and Project Server. For each enterprise project that is synchronized with a team project, only the first error per synchronization attempt is output.
Usage: TfsAdmin ProjectServer /GetSyncMessages /collection:<tpcUrl>
 /collection Specifies the URL for a team project collection on your Team Foundation Server. Use a fully specified URL such as https://servername:8080/tfs/Collection0.

C:\Users\farmadmin>TFSAdmin ProjectServer /GetSyncMessages /collection:https://tfs2010:8080/tfs/tfs%20team%20project%20collection
Date Team Project Collection Name\Team Project Name Enterprise Project Name Message

Based on the description, “For each enterprise project that is synchronized with a team project, only the first error per synchronization attempt is output.”, I think this is good.
In the TFS web interface and logged on as white\test1, I see this under New:

I select Task and fill out the form as you see in this screenshot.  I was particularly happy to see the Project Server tab and how when I changed the Submit to Project Server to Yes, the Enterprise Project changed to Code Development Plan II.  This is very encouraging and again, I had a little geek moment.  I may have even done a little happy dance.


 
After clicking Save & Close, I clicked Refresh for My Work Items on my TFS home page and I can now see the new task listed there as 1 Task.  After I clicked on the 1, reviewed the task, and came back to the home page, I saw Recently Accessed Work Items became available, as below.


 
I logged onto my Project Server and launched Project Professional 2010 (customers shouldn’t have Project Pro installed on their WFE/App servers), connected to my PWAoob instance and then opened Code Development Plan II.  The first thing that happened was a pop up stating that “Team member have submitted 1 new update to the plan.  Would you like to review these updates and apply them to the plan?”  I clicked yes.  PWAoob opened in IE and I clicked on Approval Center.  I saw the task I had created in TFS! 


 
I accepted the task and, darn it, got an error saying “A timesheet job is failed and blocking correlation in the queue.  The approval item no longer exists or has already been approved. The host server is unreachable.” 
I went back to Project Pro and attempted to open the plan again and saw a pop up stating that 1 new update had been accepted and 1 more update needs to be reviewed.  Hmm.  I didn’t submit a second update in TFS.  I check the queue and see my Status Update job is “Waiting to be processed”, but I don’t see any failed jobs.  Back in Project Pro, I click Yes to review the update.  I accept the update and now I have two jobs in the queue waiting to be processed when no other incomplete jobs are present. 

I cancel both and check the error detail of the queue job.  All the error detail says is “Root element is missing”.  I attempted to open the project again in Project Pro and got a message stating “2 updates have been accepted for this project.  Would you like to close this project and apply these updates?”  I clicked Yes aaaaaand, nothing appears to happen.  I try again and click No. I noticed the status bar saying “Verifying if enterprise project is mapped to a team project”, which, while useless at this point, means my enterprise project plan is linked to TFS.  I use File > Approvals to accept updates.

I see Internal (Timer Message) and Project Save from Project Professional in the queue.  The project just doesn’t seem to be updating, so now it’s time to check the ULS logs.  Using ULSViewer (https://archive.msdn.microsoft.com/ULSViewer/Release/ProjectReleases.aspx?ReleaseId=3308), I don’t see anything in the log for this project’s name or UID.  I got the UID by running this command in SQL:
select PROJ_NAME, PROJ_UID from MSP_PROJECTS where proj_name like '%code development%'

At the suggestion of a coworker, I updated the Project Pro client with SP1 and restarted the Project Server (so I don’t know if the SP1 or the restart fixed my problem) and I can now publish again.

Adding tasks while logged into TFS web interface as white\test1 sends updates to the PM in Project Server and, as the PM, I can accept those updates in PWA and publish the plan now.  Insert another happy dance here!

Further investigation and play time with TFS.

I noticed that in TFS, I can’t seem to find a start date and finish date for a task created in TFS.  When I edit a task that has been synchronized, the Details tab has a History section on the right hand half.  When I scroll down, I can see this when I expand the selection:


 
It appears that I have a Project Server Start Date and Finish, but I can’t see where that date is reflected anyplace else in TFS.

Logged into TFS as white\test1, I created a new task called “Create workforce management code section 1” and assigned it to white\test2. I noticed that on the Project Server tab, I have to manually change Submit to Project Server from No to Yes.  This seems to be how I can control which tasks get synched to Project Server.  Because I had to specifically name white\test1 as a user on this team collection, I expected to have to do the same for white\test2.  I chose Sign in as a different user and logged into https://tfs2010:8080/tfs as white\test2 expecting an error, but was greeted with a home page and the task created as test1.

The “Create workforce management code section 1” task was synched to Project Server and I accepted the update, then published it using PWA.  I opened the plan in Project Pro and clicked Yes to apply the update to the plan. 

This opens the PWA home page and I clicked on Approval Center, checked the task, and clicked Accept.  I had to go back to Project Pro and open the plan again, but it opened successfully and I can see the new task assigned to test2.

In What's New in Tracking Work Items, https://msdn.microsoft.com/en-us/library/dd286632, I found this description:  Maintain predecessor and successor relationships of tasks that you create in Office Project. If you create tasks in Office Project and publish them to Team Foundation, they are automatically defined with predecessor and successor links that you defined in Office Project.

And would you look at this?  There’s a field in Project Pro now called Publish to Team Project!  So, let’s change that value to Yes (I have to publish, of course) and see if I can log in as Test1 and FarmAdmin to see the assignments.


 
When I publish, I get this popup message.  It’s asking me to specify the Work Item Type in the Choose Values dropdown. 


 
When I look back at the screenshot showing the Publish to Team Project column, I see the Work Item Type column right next to it.  I should note that I did not add those columns to this view which defaulted when I opened the project plan in Project Pro to the Team Foundation Gantt (Project Server) view.  I specify Task as the value for this column and publish again.

This time, I receive another Validation Resolution popup with this comment: To publish a task to a team project, you must specify one owner who is a valid team project contributor. Select one of the following enterprise resources as the owner.  Note: Project will remove all local resources  from the task whose Completed Work is 0.  Does this mean I can only assign one resource to task I want to synch with a project in TFS?  I select FarmAdmin and click Save and Publish.

On TFS, I log into the web interface as FarmAdmin and I can see the task I created in Project Pro synched to TFS and assigned to FarmAdmin.  Based on this, it appears TFS doesn’t handle more than one resource assigned to a task as well as Project Pro does.

Look what I see when I double click the task in Project Pro.  There’s an extra tab now called Custom Fields with TFS related items:


 
Curious to see if this tab was available in a project NOT synched with TFS, I opened another plan and found that while this tab was available, the Team Foundation Gantt (Project Server) view was not.

Because I don’t know what a User Story is in Agile, I changed the Work Item Type for a task called “Task in Project Svr with Work Item Type User Story” in Project Pro to User Story and assigned it to Test2.  I published.  A few minutes later, Test2 saw this in the web interface for TFS:


 
When I open the User Story work item, not much appears to be different.  I do notice the Details tab includes this text in the field - “As a <type of user> I want <some goal> so that <some reason>” and instead of Priority under Planning and Original Estimate, Remaining, and Complete under Effort (Hours) for a Task, we have Story Points and Risk added to Planning.