Skip to main content

Project Server Help Blog

Go Search
Project Server Help Blog
Project Server Experts Community
MSProjectExperts
Training Schedule
Contact Us
  

Project Server Help Blog > Categories
See the Work Breakdown Structure (WBS) in the Resource Usage View

The Resource Usage view is one of two special assignment views in Microsoft Project, the other of which is the Task Usage view. On the left side of the Resource Usage view, the system displays each resource in the project, along with the task assignments for each resource. The system indents and italicizes the task assignments below each resource's name. On the right side of the Resource Usage view, the system displays the timephased grid, which displays Work per time period by default. The following figure shows the default Resource Usage view for a project in Microsoft Project 2010.

Resource Usage view

One of the chief limitations of the Resource Usage view is that you cannot see the Work Breakdown Structure (WBS) of summary tasks for each task assignment in the left side of the view. For many project managers, this limits the usefulness of the Resource Usage view. In most versions of Microsoft Project (including the 2003, 2007, and 2010 versions), however, there is a very simple way to see the WBS of summary tasks in the Resource Usage view. To do this, simply apply the Assignments Keeping Outline Structure group. This group is one of the default groups included in all three versions of the software.

To apply the Assignments Keeping Outline Structure group in Microsoft Project 2003 or 2007, complete the following steps:

  1. Open any project in which the task list includes summary tasks.
  2. Click View Ø Resource Usage.
  3. Click the Group By pick list on the Standard toolbar and select the Assignments Keeping Outline Structure group.

To apply the Assignments Keeping Outline Structure group in Microsoft Project 2010, complete the following steps:

  1. Open any project in which the task list includes summary tasks.
  2. Click the View tab to display the View ribbon.
  3. In the Resource Views section of the View ribbon, click the Resource Usage button to apply the Resource Usage view.
  4. In the Data section of the View ribbon, click the Group By pick list and select the Assignments Keeping Outline Structure group.

The following figure shows the Resource Usage view with the Assignments Keeping Outline Structure group applied in Microsoft Project 2010. Notice how you can clearly see the WBS of summary tasks for every task assignment. For example, notice that the tasks assigned to Amy McKay are in the Renovation phase, the Construction deliverable section, and the Carpentry sub-deliverable section of the project. Notice also that the tasks assigned to Bob Siclari are in the Renovation phase, the Construction deliverable section, and the Plumbing sub-deliverable section of the project.

Resource Usage view with the Assignments
Keeping Outline Structure group applied

MSDN Webcast Event – Real-World Solutions: Project Server Security in SQL Reporting Services (Level 300)

Please join us on Wednesday, December 16th 2009 for the ‘MSDN Webcast Event – Real-World Solutions: Project Server Security in SQL Reporting Services (Level 300)’ MSDN Webcast Event. This web-based event, led by Project MVP Stephen Sanderlin, will begin at 1:00 PM Pacific Time (4:00 PM Eastern Time).

In this webcast, we discuss a method of taking advantage of Microsoft Office Project Server security in Microsoft SQL Server Reporting Services reports. We also cover a scenario where a customer has requested a SQL Server Reporting Services report that displays sensitive financial data. The customer only wants executors of the report to see information on projects to which they have access. Join us to learn more.

The companion article for this webcast can be found on MSDN: Using Project Server Security in SQL Server Reporting Services Reports.

Stephen Sanderlin is an experienced system and software architect who specializes in designing, implementing, customizing, and developing custom software and reporting solutions for Microsoft Office Project, Microsoft Office Project Server, and Microsoft Office SharePoint Server. In 2009, Stephen was named a Microsoft Most Valuable Professional (MVP) for his technical expertise around Project Server and his contribution to the user communities. Stephen also holds a wide variety of Microsoft certifications, including all those currently available for both the 2003 and 2007 versions of Project and Project Server. He has worked with Project since 2000 and has been providing consulting services to Fortune 500 clients in the areas of project management, SharePoint Server, Project Server, and Project on a full-time basis since 2003.

For more information, and to register for this event, please visit the Microsoft Events site:

http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032423645&EventCategory=4&culture=en-US&CountryCode=US

Sample Code posted for Microsoft Project Conference 2009 sessions DM303 and DM401

Good morning!

I just wanted to write a quick post to let you know that I have posted the sample code for my Microsoft Project Conference 2009 sessions, DM303: Best Practices: Consuming the PSI and DM401: Building a PSI Wrapper for Application Integration. Links are available from the Developer’s Guide to Microsoft Project Server 2010 book page. Prior to downloading, you will have an opportunity to register for the private prepublication sale of my upcoming book, Developer’s Guide to Microsoft Project Server 2010.

As a reminder, there is no code sample for my third session, DM200: Project Server Programmability Overview.

Have a great day!

Field Not There? Don’t Despair when Building Views in Project Web Access

One of the frustrations many Project Server administrators have when they go to add a field to a view in Project Web Access is that it's simply not available in the pick list. There are numerous examples of this, some of which are real head-scratchers. For instance, I'm dumbfounded by the fact that the Predecessors and Successors fields are not available to add to a Project view in PWA. Even more puzzling is that the successor field appears in the Displayed Fields list for the Tasks Detail view that ships with PWA. Of course, it doesn't display in the view, but it is on the list. If you remove it from the displayed field list, it simply disappears never to be seen again. I'm certain there's some rhyme or reason as to why some fields are available while others are not, but the logic behind this must be obscure as who wouldn't want to display predecessors in a Task Detail view? Perhaps it's a performance thing or maybe just an oversight.

Yesterday I was working with a customer who wanted to see Finish Slack in a Resource Assignments view, a field that isn't available on the pick list for this type of view. When you run into these situations, don't give up until you try to create a custom field that references the source field you want to display in a formula. This type of custom field is easy to create and the formula you use to do this is as basic as it gets. To reference a field in a formula you simply include the Field Name in square brackets. In this case, the field I want to reference is [Finish Slack].

Remember that because you are creating a field using a formula, you must have Project Professional installed to do this as the formula validation occurs in Project itself. I find that sometimes PWA gets cranky if Project is already open on the desktop, so I always close Project before creating custom fields with formulas and allow PWA to open it for me. When PWA launches Project, it doesn't complain.

To create the field, navigate to the Server Settings Page in PWA and select Enterprise Custom Field Definition from the Enterprise Data section on the page and follow the steps below.

  1. Click the New Field button on the Enterprise Custom Fields Tool bar
  2. Select Task for Entity
  3. Select Text for Type
  4. For Custom Attributes, select the Formula radio button
  5. In the formula box enter [Finish Slack]/480
  6. Select none for Calculation for Summary Rows
  7. Select Roll down, unless manually specified for Calculation for Assignment Rows
  8. Select Data for Values to Display
  9. Select No for Required

Note that in step 5, I added "/480" after the field reference to convert the value to days. As this is a duration field, values are stored in minutes and must be converted. Also note that in step 7, I selected to Roll Down the values to assignment rows. This is very important as I want these values to appear in the Resource Assignment view. Without selecting this, the values are available at the task level only.

That's all it takes to create a custom field to show a standard project field value that isn't available on the pick list for the view you want to create in PWA. This doesn't work all the time but more times than not, you will be able to achieve your goal if you keep this little trick in mind. You have nothing to lose by trying other than a few minutes of your time. Don't forget that your new values will not appear in the views until you open, recalculate your projects, and publish them.

MSDN Webcast Event -- Real-World Solutions: Importing Workspace Data to Project Server Custom Fields (Level 300)

Please join us on Tuesday, September 29th, 2009 for an MSDN Webcast Event… ‘Real-World Solutions: Importing Workspace Data to Project Server Custom Fields (Level 300)’. This web-based event, led by Stephen Sanderlin, will begin at 1:00 PM Pacific Time (4:00 PM Eastern Time).

In this webcast, we discuss a method of importing data from Microsoft Office Project Server Project Workspaces (PWS) into project-level custom fields. We also cover a scenario where a customer has requested a Project Center view that displays the number of active issues for each project, which requires custom code. Join us to learn more.

Stephen Sanderlin is an experienced system and software architect who specializes in designing, implementing, customizing, and developing custom software and reporting solutions for Microsoft Office Project, Microsoft Office Project Server, and Microsoft Office SharePoint Server. In 2009, Stephen was named a Microsoft Most Valuable Professional (MVP) for his technical expertise around Project Server and his contribution to the user communities. Stephen also holds a wide variety of Microsoft certifications, including all those currently available for both the 2003 and 2007 versions of Project and Project Server. He has worked with Project since 2000 and has been providing consulting services to Fortune 500 clients in the areas of project management, SharePoint Server, Project Server, and Project on a full-time basis since 2003.

For more information, and to register for this event, please visit the Microsoft Events site:

http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&EventID=1032423642

Making sharing schedules easier

Woeful apologies for my lack of posts, but no sooner had this blog started, I got a full time contract helping to plan an expansion to an oil refinery. Now I’m only part time so intend to resume blogging.

One of the problems we had on the refinery project was that there were 5 main schedules and 3 core schedulers to manage them. Each scheduler used all schedules (though mostly just two). Other issues aside, the key complaint was that each time you opened a schedule; it was in the state saved by the last user (no project server). Here is my solution:

A Project_Open macro that depending on the logged in user’s name, applied a View and Table reserved for each contractor’s scheduler. Finally the Gantt chart was scrolled to today’s date.

Private Sub Project_Open(ByVal pj As Project)

    Select Case UserName

        Case "Contractor1 Name"

            ViewApply "Gantt Chart C1"

            TableApply "C1"

        Case "Contractor2 Name"

            ViewApply "Gantt Chart C2"

            TableApply "C2"

        Case "Contractor3 Name"

            ViewApply "Gantt Chart C3"

            TableApply "C3"

        Case Else

            ViewApply "Gantt Chart"

            TableApply "Entry"

    End Select

    EditGoTo Date:=Date

End Sub

 

Now each user experiences only their own interface by default and always sees current Tasks (Gantt Chart scrolls to today’s date). This is so seamless, they complained when using Project on another system!

 

Happy programming,
Rod Gill

More Project Server Timesheet Hacks -- Hiding the 'Add Lines' Feature

Those of you who have used Project Server 2007 Timesheets for any period of time have probably noticed some drawbacks to using the 'Add Lines' feature, such as difficulty locating the correct task from a potentially long list of projects and associated tasks, as well as the inability to enforce that Team Members only select task names, rather than project names. Use of the 'Add Lines' feature can sometimes cause issues and Team Member confusion... something that we don't want if Team Members are expected to complete timesheets accurately and consistently.

With a little SharePoint web part trickery, however, you can prevent Team Members from using the 'Add Lines' feature by hiding it from the 'Actions' menu and the toolbar.

If you're not familiar with manipulating SharePoint pages with web parts, see my primer on the topic ('Hacking PWA with Web Parts') here:

http://www.projectserverhelp.com/Lists/Posts/Post.aspx?ID=7

 

Note: there are drawbacks to hiding the 'Add Lines' feature; without it, Team Members will have no means of adding newly-assigned tasks to timesheets which have already been created; their only option to post time to these tasks will be to delete the current timesheet and re-create it, possibly losing any actual work hours which have already been entered into the timesheet.

Note: this procedure will hide the 'Add Lines' feature for ALL Project Server users.

 

Hiding the 'Add Lines' Feature

Follow these steps to hide the 'Add Lines' feature in Project Server 2007 timesheets:

 

1. Visit the 'My Timesheets' page in PWA, select any timesheet (regardless of state), then click on the link in the first column to create or open the timesheet:

 

2. On the 'My Timesheet' page, pull open the 'Site Actions' menu near the upper right corner of the page, then select the 'Edit Page' option:

 

 

3. With the 'My Timesheet' page in edit mode, click the 'Add a Web Part' button, which spans the entire width of the 'Main' web part zone:

 

 

 

4. In the 'Add Web Parts to Main' dialog box, select the checkbox next to the 'Content Editor Web Part' item, then click the 'OK' button:

 

5. After the 'Content Editor Web Part' has been added to the page, pull open the 'edit' menu near the upper right corner of the newly-added web part, then select the 'Modify Shared Web Part' option:

 

 

6. In the 'Content Editor Web Part' editing panel which has opened on the right side of the page, click the 'Source Editor...' button:

 

 

7. In the source editor dialog box, enter the following text, then click the 'Save' button:

<script language="JavaScript">

var menuitems = document.getElementsByTagName('ie:menuitem');

for (var i=0; i<menuitems.length; i++)

{

itm = menuitems(i)

if (itm.id.match('AddTask')!=null)

{

itm.hidden = "true";

}

}

var tbls = document.getElementsByTagName('table');

for (idx in tbls)

{

if (tbls[idx].className == 'pwa-toolbar2')

{

var cells = tbls[idx].getElementsByTagName('td');

for (var j=0; j<cells.length; j++)

{

if (cells(j).id.match('AddTask')!=null)

{

cells(j).style.display = "none";

}

}

}

}

</script>

 

 

8. In the 'Content Editor Web Part' editing panel which should still be open on the right side of the page, expand the 'Appearance' heading by clicking [+], then enter 'Hide Add Lines' as the 'Title' of the web part:

 

 

9. In the 'Content Editor Web Part' editing panel which should still be open on the right side of the page, select 'None' for the 'Chrome Type' of the web part, then click the 'OK' button at the bottom of the panel:

 

 

10. After the 'Content Editor Web Part' editing panel is closed, hover the mouse cursor over the header of the 'My Timesheet' web part until the 4-way cursor is displayed, click and drag the header until it is positioned above the new 'Hide Add Lines' web part header (as indicated by the colored 'I-beam'), then drop the web part into the upper position in the web part zone:

 

 

The 'Hide Add Lines' web part will now appear below the 'My Timesheet' web part on the page:

 

11. Exit 'edit mode' by clicking the 'Exit Edit Mode' link near the upper right corner of the page:

 

As you can now see, the 'Add Lines' feature no longer appears on the toolbar above the data grid (normally located between the 'Print' and 'Delete Lines' buttons):

 

 

Additionally, the 'Add Lines' feature no longer appears on the 'Actions' menu (normally located above the 'Delete Lines' option):

 

 

In Summary...

No Server Access Required, and No Custom Coding Required

As long as you have the permission to edit PWA pages, you can perform this hack, regardless of whether you have direct access to the server. This will work in hosted environments (such as ProjectHosts) as well!

Be Careful!

Remember... this hack affects all users and all timesheets, so be sure that there isn't anyone who will miss the 'Add Lines' feature on the Project Server timesheet interface.

To unhide the 'Add Lines' feature, simply delete the 'Hide Planned Work' web part from the page. To learn how this is done, review my PWA web parts primer ('Hacking PWA with Web Parts') here:

http://www.projectserverhelp.com/Lists/Posts/Post.aspx?ID=7

 

Other Project Server Timesheet Hacks

Interested in other Project Server Timesheet hacks? Check out these posts:

 

More Project Server 2007 Timesheet Hacks -- Manipulating Columns

http://www.projectserverhelp.com/Lists/Posts/ViewPost.aspx?ID=10

 

Hacking Project Server 2007 Timesheets -- Hiding Planned Work Rows

http://www.projectserverhelp.com/Lists/Posts/ViewPost.aspx?ID=8

 

Happy hacking!

Project Conference 2009 Early Registration Now Open
Yesterday, February 23, 2009, the Project Conference 2009 Team announced the availability of early registration for this year's conference to be held In Phoenix Arizona from Septermber 14 through the 17th. This is the premiere Microsoft Office Project and Project Server event sponsored by Microsoft.
 
The Project Conference is a wonderful learning and networking opportunity for Project and Project Server practioners. Mingle with your peers and members of the Project product team. Although the final agenda has not been announced the conference team is touting more than 75 breakout sessions and a number of high-impact keynotes.
 
We expect that much of the conference will show of new functionality introduced in the next version of the software, currently code-named P14. To register and save $150 Register Now
 
FREE Midwest Microsoft Project Conference -- 1/14/2009 - 1/15/2009
Please join us on Wednesday, January 14th and Thursday, January 15, 2009 at the Midwest Microsoft Office Project Conference in Oak Brook, IL.
 
Microsoft and the partner community are joining forces to launch this FREE 2-day Microsoft Project Conference to share turn-key solutions and best practices with local companies who have an interest in Enterprise Project Management solutions and making the most of their Microsoft investments.  You’ll hear from partners and your peers in other organizations who have transformed their businesses using Microsoft Project, Project Server, Portfolio Server and SharePoint.
 
Among the many speakers at the conference will be Dale Howard, MVP who will be presenting 'Tips, Tricks, and Certifications for Microsoft Project 2007 and Project Server 2007'. Dale is the Vice President of Education for msProjectExperts and is one of only 29 Microsoft Project MVPs in the entire world. In addition to his coveted MVP title, he also possesses the CTT, MCTS, and MCITP certifications.
 
Click Here to learn more about and register for this FREE event (please enter event code 4DC885 when prompted).
 
S-Curve Macro - Part 3

Welcome to part 3 of the S-Curve macro. Part 2 ended with code that copied all time phased data to Excel. Now we want to make sure the data starts with a zero value so the line on the graph starts at zero work. Then the macro will create the S-Curve charts in Excel. Here is the code:

    'move xlr down a row at a time until all 4 columns have a zero start point

    Index = 0

    Set xlRzero = xlR

    Do Until Index >= 4

        If IsEmpty(xlRzero.Range("B1")) And xlRzero.Range("B2") > 0 Then

            xlRzero.Range("B1") = 0

            Index = Index + 1

        End If

        If IsEmpty(xlRzero.Range("C1")) And xlRzero.Range("C2") > 0 Then

            xlRzero.Range("C1") = 0

            Index = Index + 1

        End If

        If IsEmpty(xlRzero.Range("D1")) And xlRzero.Range("D2") > 0 Then

            xlRzero.Range("D1") = 0

            Index = Index + 1

        End If

        If IsEmpty(xlRzero.Range("E1")) And xlRzero.Range("E2") > 0 Then

            xlRzero.Range("E1") = 0

            Index = Index + 1

        End If

        Set xlRzero = xlRzero.Offset(1, 0)

    Loop

   

    'Create Charts

    Set xlrChart = xlApp.Range("A4")

    If Val(xlApp.Version) >= 12 Then        'Excel 2007

        'Create Charts

        xlApp.Range(xlR, xlR.End(xlDown).Range("C1")).Select

        xlApp.ActiveSheet.Shapes.AddChart.Select

        xlApp.ActiveChart.ChartType = xlLine

       

        xlApp.Range(xlR.Address & ":" & xlR.End(xlDown).Address & "," & xlR.Range("D1").Address & ":" & xlR.End(xlDown).Range("E1").Address).Select

        xlApp.ActiveSheet.Shapes.AddChart.Select

        xlApp.ActiveChart.ChartType = xlLine

       

        'Format charts

        With xlApp.ActiveSheet.ChartObjects("Chart 1") '.Chart

            .Left = xlrChart.Left

            .Top = xlrChart.Top

            .Height = xlrChart.Offset(RowsHigh, 0).Top - xlrChart.Top

            .Width = xlrChart.Offset(0, ColumnsWide).Left - xlrChart.Left

            .Chart.HasTitle = True

            .Chart.ChartTitle.Text = "Cumulative Work"

            xlApp.ActiveSheet.ChartObjects("Chart 1").Chart.Legend.Position = xlBottom

        End With

       

        Set xlrChart = xlrChart.Offset(RowsHigh, 0)

 

        With xlApp.ActiveSheet.ChartObjects("Chart 2")

            .Left = xlrChart.Left

            .Top = xlrChart.Top

            .Height = xlrChart.Offset(RowsHigh, 0).Top - xlrChart.Top

            .Width = xlrChart.Offset(0, ColumnsWide).Left - xlrChart.Left

            .Chart.HasTitle = True

            .Chart.ChartTitle.Text = "Cumulative Cost"

            xlApp.ActiveSheet.ChartObjects("Chart 2").Chart.Legend.Position = xlBottom

        End With

        xlApp.Range("A1:E1").EntireColumn.ColumnWidth = 12

    Else    'Excel 2003 or earlier

        xlApp.Charts.Add

        With xlApp.ActiveChart

            .ChartType = xlLine

            .SetSourceData Source:=xlApp.Sheets("Sheet1").Range(xlR, _                                                xlR.End(xlDown).Range("C1")), PlotBy:=xlColumns

            .Location Where:=xlLocationAsObject, Name:="Sheet1"

            xlApp.ActiveChart.PlotArea.Interior.ColorIndex = xlNone

            xlApp.ActiveChart.HasTitle = True

            xlApp.ActiveChart.ChartTitle.Characters.Text = "Cumulative Work"

            xlApp.ActiveChart.Legend.Position = xlBottom

            With xlApp.ActiveSheet.Shapes("Chart 1")

                .Left = xlrChart.Left

                .Top = xlrChart.Top

                .Height = xlrChart.Offset(RowsHigh, 0).Top - xlrChart.Top

                .Width = xlrChart.Offset(0, ColumnsWide).Left - xlrChart.Offset(0, 1).Left

            End With

        End With

        Set xlrChart = xlrChart.Offset(RowsHigh, 0)

       

        xlApp.Charts.Add

        With xlApp.ActiveChart

            .ChartType = xlLine

            .SetSourceData Source:=xlApp.Sheets("Sheet1").Range(xlR.Address & ":" & _

                   xlR.End(xlDown).Address & "," & xlR.Range("D1").Address & ":" & _

                   xlR.End(xlDown).Range("E1").Address), PlotBy:=xlColumns

            .Location Where:=xlLocationAsObject, Name:="Sheet1"

            xlApp.ActiveChart.PlotArea.Interior.ColorIndex = xlNone

            xlApp.ActiveChart.HasTitle = True

            xlApp.ActiveChart.ChartTitle.Characters.Text = "Cumulative Cost"

            xlApp.ActiveChart.Legend.Position = xlBottom

            With xlApp.ActiveSheet.Shapes("Chart 2")

                .Left = xlrChart.Left

                .Top = xlrChart.Top

                .Height = xlrChart.Offset(RowsHigh, 0).Top - xlrChart.Top

                .Width = xlrChart.Offset(0, ColumnsWide).Left - xlrChart.Offset(0, 1).Left

            End With

        End With

        xlApp.Range("A1:E1").EntireColumn.ColumnWidth = 15

    End If

    xlApp.Range("A1").Select

   

    'Tidy up

'    xlApp.ActiveSheet.PageSetup.Orientation = xlLandscape

    xlApp.Range("B1:C1").EntireColumn.NumberFormat = "#,##0\h"

    xlApp.Range("D1:E1").EntireColumn.NumberFormat = _

ActiveProject.CurrencySymbol & "#,###,##0"

    Set xlApp = Nothing

    Application.ActivateMicrosoftApp pjMicrosoftExcel

 

If you run the code now, you will see the data in four columns: "Baseline Work", "Work", "Baseline Cost" and "Cost". The zero value loop moves the xlrzero pointer down the data. When the cell below the one pointed to by xlrzero is not nothing, then the beginning of the data for this column has been found. Set the last empty cell to zero. This will force the beginning of the data curves to start with a zero value, which is what you expect for an S-Curve.

Now for the code to create the charts. This is easier than you might think, but complicated by the fact that the code required is slightly different for Excel 2007 than for Excel 2003. To create this code, I recorded macros in Excel 2003 and 2007 to create the two charts in the position and size I wanted, then I edited the code to make it work in Project VBA. Editing mostly involved adding an xlApp qualifier to the start of all Excel VBA code.

The following constants were declared to make it easier to calculate the locations for the two charts:

Const ColumnsWide = 7

Const RowsHigh = 22

 

Finally there is some code to tidy up the code, set landscape for printing and format the data.

Each of you will likely find one part of the code easy to understand a different part harder. To help understand what is happening, click anywhere in the code in the Project VBA then press F8 to single step through the code. After a line or two, swap to Excel to see exactly what the last step or two has done and you will find the code much easier to understand.

My intentions for the next blog are to create an add-in for Project using Visual Studio 2008. The add-in will simply let you clear all estimated ? marks from durations, round durations to a whole number and change the units for durations. All of these actions are fairly regular requests in the Microsoft Project news groups.

Until then, happy coding,

Rod Gill.

1 - 10 Next