Announcement : Agile in Microsoft Project


Microsoft is excited to announce (literally just announced at the Ignite session!!!) that they will be releasing MS Project Agile v1 to our Insiders Fast build 16.0.8625.1000 this week. If you are on this build or later you will be the first MS Project users to get your hands on our new MS Project Agile v1 feature!

Use Agile in MS Project

Project Managers can use simple, visual task boards that support Scrum, Kanban, or custom workflows

  • Visually manage your projects and tasks using agile-style views
  • Plan work in iterations using sprints or choose a Kanban-like workflow to track ongoing status and limit work-in-progress
  • Customize workflows to meet your project’s tracking and reporting needs

Choose your work style

Project managers can choose whatever methodology makes sense: agile, waterfall, or hybrid.

  • Manage task-oriented projects using agile-style views
  • Use Gantt views for projects that require upfront planning, resource balancing, and critical path analysis
  • Manage sub-projects within a larger project using agile-style views while using a Gantt view for the overall project

Maintain Transparency

PMO can centrally manage different types of projects with governance and visibility

  • Maintain governance of standards and processes across teams and projects
  • Gain visibility across projects whatever work styles are being used to manage them
  • Use out-of-the-box and custom reports to report across projects or focus on status specific to agile-style workflows
Advertisements

Show tasks on Timeline view based on custom column


I came across this question in MPUG Discussion forum and thought my answer to this question will address those who are looking for option to show tasks on Timeline view based on custom field or another field

Question: I’ve created a project schedule that includes a custom column that indicates what phase of the project the task belongs to – planning, development, release, marketing, etc. I’d like to be able to select one or many of the phases to display on the timeline, for example, display the planning & development dates or show the release & marketing dates. Does anyone know how I might be able to achieve this? Source link

Answer: You can select one or more tasks and add them on Timeline view. You can also use the Display on Timeline checkbox in Task Information to display/hide the task in Timeline. The question raised by this user is very unique, as you wants to add tasks based on the value of a custom field in this case the phase name custom field.

My suggestion would be use to a small macro and it could do the job easily.

1. Click View tab. Click Macros dropdown and select Visual Basic

image12.png?w=640

2. In the editor, double click your current project on the left panel. This will display the code editor.

3. Now, insert a procedure named addTasksOnTimeLine by selecting Insert menu, and then Procedure.

4. In the sub routine, the first for loop removes all tasks (ActiveProject.Tasks) from the time line and the second for loop adds tasks in the current view (ActiveSelection.Tasks) to the Timeline view

5. Change the current view to Gantt Chart view with/without Timeline view

6. Apply a filter or use the AutoFilter dropdown on the custom field to filter the tasks matching the phase name

7. Run the macro. Click Macros dropdown and select View Macros. Select the macro addTasksOnTimeLine and click Run button

 

Protecting Baseline Fields


Baseline refers to approved estimates. After you have set the baseline in Project, the approved estimates can be displayed by inserting the Baseline fields such as Baseline Start, Baseline Finish, Baseline Work, Baseline Cost and Baseline Duration. Depending on the view these columns are inserted, Project can either display the approved estimates of tasks, resources or assignments

In Gantt Chart view, you can see the approved estimates of the tasks

In Task Usage view, you can see the approved estimates of tasks as well as its assignments

In Resource Sheet view, you can see the approved estimates of resources

Project does not have feature to lock the approved estimates. You can change the baseline fields and Project doesn’t stop you from doing that.

A better solution is capture the event and having VBA handlers for it.

1. Click View tab. Click Macros dropdown and select Visual Basic
image12.png?w=640

2. In the Visual Basic Editor, on the option menu for VBAProject, choose Insert, and then choose Class Module to create a class named Class1.

3. You can rename the class module in the Properties pane. In the following examples, the class is named Events.

4. You must create a new object using the WithEvents keyword in a class module
Public WithEvents App As Application
5. If you user changes the task related fields, the event ProjectBeforeTaskChange is fired. So, change the object and procedure to App and ProjectBeforeTaskChange respectively

6. If you user changes the assignment related fields, the event ProjectBeforeAssignmentChange is fired. So, change the object and procedure to App and ProjectBeforeAssignmentChange respectively

7. If you user changes the resource related fields, the event ProjectBeforeResourceChange is fired. So, change the object and procedure to App and ProjectBeforeResourceChange respectively

8. You need to bind the current Application object to the App object declared in the class to fire the events. Open the ThisProject module and paste the below code. This code declares an object X of type Events (the class module we created earlier), and sets the current Application object to the App object of Events class module

8. Save the changes.
10. Save the plan and close Project.

Now, reopen the plan (why? the application object is set in Project_Open event handler) and make change to the baseline fields. Project will not accept the change and you need to press Escape key to cancel the edit

What are you starting now?


I recently came across this interesting question from Algola in MPUG Discussion Forum

http://www.mpug.com/forums/topic/filter-activities-that-can-start/

In other words, the solution should work for the below scenarios
Scenario 1: Unstarted tasks without any predecessors

Scenario 2: Unstarted tasks with all predecessors 100% complete

Let me demonstrate how this can be done using VBA Macros

1. Click View tab. Click Macros dropdown and select Visual Basic

image12.png?w=640

2. In the editor, double click your current project on the left panel. This will display the code editor.
3. Now, insert a procedure named ReadyToStart by selecting Insert menu, and then Procedure.

4. Inside the ReadyToStart procedure, write this code to loop through all the tasks in the current project

5. We will now use the Marked field to indicate whether the task is ready to start or not. If the current task is not yet started, set Marked to True otherwise False

6. If the current task is not yet started then check if predecessors, if any, are completed or not

7. After marking the tasks, we will now highlight these tasks by creating a filter Ready To Start

The complete code is shown below

8. Now to run this macro click View tab. Click Macros dropdown and select View Macros. Select the macro ReadyToStart and click Run button

What is driving your decisions?


I recently came across this interesting question from Thomas in LinkedIn MS Project Schedule group

https://www.linkedin.com/groups/Milestone-predecessor-filtering-2552040.S.5929005434290593795

The simplified version of his requirement: Filter all milestones in the next 6 months along with its immediate predecessors. In the below plan, the current date falls in October and his requirement is to highlight Go Live 1, Build 1 and Build 2 (as Go Live 1 is the only milestone in the next 6 months and its immediate predecessor are Build 1 and Build 2)

I evaluated different options such as (a) custom fields with formula, (b) custom filters, (c) write VBA code. The first two options was eliminated as the formula can test only the current task and cannot test its predecessor tasks. To test the task and its predecessor, VBA macros is the solution.

Let’s start with a pseudocode
1. For each task in plan do
1.1. If task is not empty and active
1.1.1. If the task is milestone and is happening in the next 6 months
1.1.1.1. Mark the milestone to True
1.1.1.2. For each predecessor of the current task
1.1.1.2.1. Mark the current predecessor to True
2. Highlight all the tasks with Marked as True

Now you need to translate each statement by using Project model object, properties and methods.
1. Click View tab. Click Macros dropdown and select Visual Basic

image12.png?w=640

2. In the editor, double click your current project on the left panel. This will display the code editor.
3. Now, insert a procedure named FindMilestonesAndImmediatePredecessors by selecting Insert menu, and then Procedure.

4. Let’s first loop through all the tasks in the current project

5. Now mark the current task if it is non-empty active task and milestone happening in the next 6 months.

6. Now loop through the immediate predecessor of the milestone and mark these tasks

7. After marking the milestones and its immediate predecessors, you can highlight these tasks by creating a filter MilestonesAndImmediatePredecessors

The complete code is shown below

8. Now to run this macro click View tab. Click Macros dropdown and select View Macros. Select the macro FindMilestonesAndImmediatePredecessors and click Run button

I Know What You Did Last Summer


This post is not about the horror movie but about “I Know What You Did Last Update”

i-know-what-you-did-last-summer.jpg

Project 2013 includes Created field to tell the date and time when the task or resource was added to your plan

In Gantt Chart view …

In Resource Sheet view …

Every time you update your plan, you lose track of which ones you updated. The problem is Project doesn’t have a field to tell when the task is last updated.

You need to write a small VBA to code to handle this requirement. We will be using a custom date field (Date1) to store the current date and time when the task is updated and here is how it goes.

1. Click View tab. Click Macros dropdown and select Visual Basic
image12.png?w=640

2. In the Visual Basic Editor, on the option menu for VBAProject, choose Insert, and then choose Class Module to create a class named Class1.

3. You can rename the class module in the Properties pane. In the following examples, the class is named Events.

4. You must create a new object using the WithEvents keyword in a class module
Public WithEvents App As Application
5. Now change the object and procedure to “App” and “ProjectBeforeTaskChange”. ProjectBeforeTaskChange event will be fired for every task that is changed
Capture

6. Within this sub-routine include the below code

7. You need to bind the current Application object to the App object declared in the class to fire the events. Open the ThisProject module and paste the below code. This code declares an object X of type Events (the class module we created earlier), and sets the current Application object to the App object of Events class module

8. Save the changes.
9. Insert Date1 column in Gantt Chart. Right the column and select Custom Fields. In Custom Fields dialog, rename Date1 to Modified

10. Save the plan and close Project.

Now, reopen the plan (why? the application object is set in Project_Open event handler) and make some changes the tasks. You will notice the Modified column will get updated to current date and time

Your Personal Assistant: Project can remind the tasks due this week


In my earliest post, you learnt how to write event procedures for Project and Application object. In this post, I will focus on a very simple tip – "How to highlight the tasks due this week every time the project plan is opened?".

Looks very simple and it is indeed very simple.

1. Click View tab. Click Macros dropdown and select Visual Basic
image12.png?w=640

2. In the editor, double click your current project on the left panel.

3. Now change the object and procedure to "Project" and "Open".

4. This will include a private sub-routine which will be invoked when the file is opened

5. Within this sub-routine, include the below script

6. Close the editor, and close the project

Open the project file, and Project will highlight the incomplete tasks that should be completed by this week.