20
INTRODUCTION TO BPC LOGIC FILTER FOR MICROSOFT PROJECT Prepared For: General Release Prepared By: Thomas M. Boyle, PE, PMP, PSP BPC Project No. 15-001 10-Mar-20 4236 Chandworth Rd. Charlotte, NC 28210 Phone: 704-916-6765 [email protected] Boyle Project Consulting, PLLC Project Management and Construction Support Services

Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

  • Upload
    others

  • View
    22

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

INTRODUCTION TO

BPC LOGIC FILTER FOR MICROSOFT PROJECT

Prepared For:

General Release

Prepared By:

Thomas M. Boyle, PE, PMP, PSP

BPC Project No. 15-001 10-Mar-20

4236 Chandworth Rd. Charlotte, NC 28210

Phone: 704-916-6765 [email protected]

Boyle Project Consulting, PLLC

Project Management and Construction Support Services

Page 2: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA i

TABLE OF CONTENTS

1.0  EXECUTIVE SUMMARY .................................................................................................... 1 

2.0  BACKGROUND / MOTIVATION ...................................................................................... 1 

2.1  HISTORY ................................................................................................................................... 1 

2.2  NEEDS ....................................................................................................................................... 2 

2.3  AVAILABLE TOOLS ................................................................................................................... 2 

3.0  PROGRAM DEVELOPMENT ............................................................................................ 3 

3.1  INITIATION ................................................................................................................................ 3 

3.2  FEATURE DEVELOPMENT ......................................................................................................... 4 

3.3  SHARING THE TOOLS .............................................................................................................. 13 

4.0  NOTES ON SCHEDULE CALCULATIONS ................................................................... 14 

4.1  DATES ..................................................................................................................................... 14 

4.2  SUMMARY TASKS ................................................................................................................... 14 

4.3  INACTIVE TASKS .................................................................................................................... 14 

4.4  MANUALLY-SCHEDULED TASKS ............................................................................................ 15 

4.5  RESOURCE LEVELING ............................................................................................................. 15 

5.0  USER APPLICATIONS AND SETTINGS ....................................................................... 16 

6.0  SOFTWARE EDITIONS AND LICENSING ................................................................... 16 

Page 3: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA 1

1.0 EXECUTIVE SUMMARY

For the professional planner, scheduler, project manager, or administrator working with Microsoft Project (2010+),

BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and the requirements of logic-

driven schedule management in complex projects. BPC Logic Filter includes simple tools for examining and tracing

the schedule network(s) for any given task or collection of tasks. It also offers tools for standardized reporting of a

project’s Critical Path and near-critical paths when Microsoft Project’s internal reporting does not suffice. Finally,

BPC Logic Filter introduces and implements several tools for advanced schedule network analysis, including Path

Relative Float, Driving Path Drag, Bounded Network Analysis, Cross-Project Links, Gantt Chart Highlighting, and

Resource Leveling Drivers (i.e. Resource-Constrained Driving Path). The tool is implemented as a Microsoft Office

Customization (i.e. Project Add-In) and is deployed using secure Microsoft-developed technology that does NOT

require Administrative Privileges.

.

2.0 BACKGROUND / MOTIVATION

2.1 History

Twenty-five years after its introduction to the market, Microsoft’s Windows-based project scheduling software tool

– which I will call MS Project, Project, or MSP here – has become ubiquitous worldwide among corporate (and

government) users of the Microsoft Office suite of business software. During that time many “serious” project

planners and schedulers have avoided the tool due to real and perceived shortcomings compared to the competition.

Now most of the previous shortcomings have been addressed, and Project offers a task scheduling engine that

appears to be generally compliant with the Precedence Diagramming Method (PDM) and the Critical Path Method

(CPM) – two closely-related and often-specified methodologies for developing and implementing project schedules

based on networks of logically-related tasks. Nevertheless, Project continues to provide only rudimentary built-in

capability for logical network analysis – that is what is needed regularly to respond to schedule disruptions, and

more importantly, to communicate the sequential plan behind the schedule dates.

As an engineer, project manager, and (execution-focused) planning and cost consultant for complex industrial

engineering/construction projects around the world; I have been a user of Project and competing tools (P3/ST/P6)

for more than twenty years. Early on, I used the other tools for integrated project schedule management, and I used

Project mainly to open and review the relatively simple MSP schedule submittals from major equipment suppliers.

More recently (i.e. 2003 to 2015), I regularly consulted with Owners who required MS Project for integrated master

schedules involving multiple contracts, handover milestones, and firm deadlines. While overseeing these projects,

it was continually frustrating to have to rely on Project’s Total Slack as the only quantifiable measure of a task’s

importance – either to the project schedule as a whole or to any other specific task. It simply can’t tell the stories

that need telling – especially in a complex schedule with variable calendars, multiple deadlines, and multiple

critical/near-critical paths.

Page 4: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA 2

2.2 Needs

A tool was needed to answer the following questions:

For a given task:

1. Which tasks are its predecessors? (The whole chain, not just the immediate dependencies.)

2. Which tasks are its successors?

3. Which predecessors are driving – i.e. effectively limiting the early start of – the task? (Also the whole

chain, though identifying the immediate dependencies would be a good start. Project’s Task Inspector and

Task Path bar highlighters promise to do exactly this, but their results are inconsistent for non-FS

relationships.)

4. Which successor tasks are being driven by the task?

5. If a predecessor is NOT driving, how much may it slip before it becomes driving.

6. If a successor is NOT being driven, how much may the given task slip before it has an impact on the

successor?

For the project as a whole:

7. What is the real “Critical Path” and how is this related to Project’s “Critical” task flag? (Is it related at all?)

8. What is the Longest Path – i.e. that group of logically connected activities that drive the overall project

completion date? (In my opinion a much better definition of Critical Path in the presence of deadlines and

variable calendars.)

9. What is the Critical/Longest Path for a project whose key milestone(s) don’t coincide with the end of the

project schedule? For example, construction schedules for industrial plants are often geared to starting

production (and generating revenue) as soon as possible, while permanent administration and maintenance

facilities may be completed later. A simple Longest Path doesn’t seem to reflect the true schedule

priorities.

10. Finally, how can we identify and differentiate parallel critical paths and near critical paths from each other

based purely on the schedule data?

2.3 Available Tools

There are established workflows for answering most of these questions in other project scheduling tools. Users of

Primavera Project Planner (P3) and its descendants are familiar with the info-packed predecessor and successor lists

and the asterisk that identifies the driving relationships in the lists. Combined with Primavera’s intuitive task-

jumping feature, it is a fairly simple matter to (manually) trace an activity’s logical drivers and non-drivers alike

through a project network. The overall project scheduling questions can be answered, in addition, using the

“Longest Path” and “Multiple Float Path” scheduling parameters that have been available natively for many years.

Page 5: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA 3

With a couple exceptions, MS Project provides no similar functionality out of the box, and there are no obvious

technical restrictions precluding it. The exceptions are the aforementioned Task Inspector and the task network

diagram, neither of which I have found very workable. To use the tree-forest analogy, TI examines and displays

the bark on the (north side of the) tree, while the network diagram presents a birds-eye view of the whole forest or

whichever specific trees you tell it to show in advance. Neither can discern the path through the forest. Project also

includes an advanced calculation option called “Calculate multiple critical paths,” but it is completely unrelated to

the “Multiple Float Path” functionality that is needed. [Finally, recent versions (MSP 2013+) incorporate a set of

Task Path bar styles for graphically displaying the Predecessors, Driving Predecessors, Successors, and Driven

Successors of any selected task. These are useful for simple projects.]

Before writing BPC Logic Filter, I found no comparable tools available on the market at any price.1 The most

productive internet searches for “MS Project logic tracing” and similar terms typically led to discussion boards for

programmers who specialized in Visual Basic for Applications (VBA), the language underlying Microsoft Office’s

“macro” programs. Macros (also called vba customizations) provide methods to automate repetitive tasks, often in

Excel or Word. They are typically developed by advanced users for personal use or by corporate IT specialists for

use on machines within the corporate network. I have written and edited vba customizations for Excel for many

years, so what I found seemed to make sense.

3.0 PROGRAM DEVELOPMENT

3.1 Initiation

In late 2013, I started writing the code for BPC Logic Filter. Besides my ongoing frustration with Project, I was

prompted by an urgent request from a department manager in a client organization:

“My people can’t see why they need to finish these tasks so soon. Isn’t there a report or something to show

what other tasks (in other departments) are depending on them?”

“Well, yes there is,” I thought, “but the only way I know how to make it is to manually inspect each of ‘these tasks,’

identify and mark each of its successors, then identify and mark each successor’s successors, and so on. Then I

would have to apply a filter showing only the marked tasks and apply a table showing the key task responsibility

fields.” That could take a long time! And if the other department managers asked for the same report, we would

have to use more of the precious task fields in the Project file. This was a job for a macro that could be run on

demand and that would only use task fields when needed.

1 No doubt some of the alternate CPM scheduling tools can provide the needed functionality after importing the MSP files, but I preferred to stay in MSP. There are also some risk management tools that claim good interoperability with MSP, but I didn’t investigate – while struggling just to manage the deterministic project schedules, adding probabilities seemed a step too far. Finally, I was able to find three comparable tools only after developing BPC Logic Filter: ProjectPro Complete Critical Paths (www.ProjectProCorp.com); Driving Path Widget (www.projectwidgets.com); and OPDEC Critical Path Tool (www.opdec.com). They may be worth considering….

Page 6: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA 4

Given the immediate need, I felt confident in buying Rod Gill’s book – VBA Programming – For Microsoft Project

’98 through 2010 with an Introduction to VSTO – and getting to work. What resulted was the recursive logic tracing

algorithm that is at the core of BPC Logic Filter. This is not special. Similar logic tracing algorithms, including

some complete VBA macros, have been generously shared on the internet by several developers. Any Project user

with minimal programming experience would have no trouble implementing the same macro on her own machine,

at which point she would be able to answer the first two questions above. Much more work would be needed to

answer the others, however.

3.2 Feature Development

Over the several years – and some hundreds of hours – I refined and added functionality to my little set of macros

as time permitted and as new needs arose. With each new feature came an extra layer of complexity, the need for

extensive re-testing and debugging, and the inevitable need for new features or complete re-writing of code to

overcome my previous shortsightedness. Here is the list of basic feature adds in order:

1. Created a simple logic tracer and filter for all dependencies of a task or group of tasks. (Answers questions

1 and 2 on the Needs list.)

2. Added limits for overall number of tasks to be checked (for terminating an endless loop during

development) and the number of logical steps away from the selected task (i.e. “local network only”).

3. Added filter for Driving Relationships Only. This was the first quantum leap in complexity and

functionality, as it required the calculation of Relative Relationship Float. The concept is very simple: for

a successor task in a relationship, what is the difference between the computed (early) date of the task and

the earliest date that can satisfy the constraints of the relationship.2 A value of zero means that the

relationship is “driving.” (Answers questions 3 and 4 on the Needs list.) A value greater than zero reflects

the amount of time that the predecessor may slip before it becomes one of several concurrent drivers of the

successor task. Values less than zero are not encountered except in cases of unresolved logical conflicts.

Figure 1 illustrates the Relative Relationship Float computed for each relationship in a simple schedule

network. Figure 2 shows that path which includes only Driving Relationships among the predecessors of

the last task of the schedule (“Task9”) – this is Task9’s “Driving Path”.

2 According to Dr. Gui Ponce de Leon (2010 PMI Global Proceedings), what I’ve called Relative Relationship Float is essentially identical to the “link lag” originally described by Fondahl for FS relationships and subsequently established as “link gap” by Ponce de Leon for other relationship types. Link gaps are regularly computed by Ponce de Leon’s Graphical Planning Method (e.g. PMA Netpoint.) Ron Winter (www.ronwinterconsulting.com) defined a similar quantity that he termed (relationship) “Slack” in some papers aimed at Primavera users. While the word “slack” in American usage seems intuitively more appropriate for relationships, MSP already uses it in a distinctly different context. I’ve stayed away from it. A similar quantity in Oracle’s Primavera Project Management P6 is called Relationship Successor Free Float.

Page 7: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA 5

Figure 1. Relative Relationship Float in a Simple Project Schedule Network

Figure 2. Driving Path Relative Relationship Float = 0

4. Introduced Path Relative Float, the second quantum leap in complexity and ultimately the most useful

functionality. This essentially expands Relative Relationship Float to account for all the tasks and

relationships between any two tasks in the network. For a certain “Selected” task, all of its predecessors

(and successors) may be identified and grouped according to their Relative Float values. Those

predecessors with a value of zero represent the “driving path(s)” for the selected task. (Answers questions

5 and 6 on the Needs list.) Those with low non-zero values represent the “near-driving paths” for the

selected task. By starting the analysis from the last task in the project or from the key project completion

milestone, the “driving path” becomes the “Critical Path” for the project according to the most commonly-

applied “longest path” definition. (Answers questions 8 and 9). Applying special sorting criteria can also

differentiate any concurrent- or near-critical paths. (Answers question 10.)3 Figure 3 illustrates the Path

Relative Float (relative to Task9) for three non-driving paths of the simple schedule network.

3 For a project Critical Path or Longest Path application, Ron Winter’s “Longest Path Value” seems to play a similar role as the more general “Path Relative Float” does here. The same could be said of Total Float and Forensic Total Float in the Graphical Path Method (e.g. PMA Netpoint.)

Page 8: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA 6

Figure 3. Path Relative Float for Driving and Non-Driving Paths

5. Introduced Longest Path Filter as a special application. This automatically selects the last task(s) in the

project schedule and identifies the associated driving path(s).

6. Introduced Local Network Filter as a special application to facilitate task-jumping through the network a

few steps at a time.

7. Introduced the Target Task concept to support finely bounded impact analysis. For example, given the

prospect of a delay on one task, what will be the impact on another related but more important task, and

where are the opportunities for recovering the delay between the two? Here the analysis is truncated to

show only those logic paths connecting the two tasks (one the “selected task” and the other the “target

task”), with the zero-Relative Float values presenting the first opportunities for recovery. Figure 4

demonstrates the concept for the simple schedule network introduced above, where the grayed-out area is

automatically omitted.

Figure 4. Bounded Analysis of a Simple Schedule Network

8. Added Cross-Project Links to apply logic tracing and all the other features across master- and sub-project

boundaries. Adding this functionality was technically quite challenging, but it seems invaluable for those

who are forced to rely on these powerful but problematic MS Project features. Testing showed no problems

Page 9: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA 7

in a standalone Windows 7 machine. I didn’t test in environments using a network file server or Project

Server.

9. Added Driving Path Drag as an advanced feature for prioritizing a schedule crashing process. Critical Path

Drag was introduced in 1999 as a formal metric to be applied to Critical Path tasks/activities only4. In that

context, Drag represents the amount of time that each task contributes to the Critical Path of the Project. In

simple terms, “how much could the Critical Path be compressed by eliminating this task?” It is computed

for each CP task as either a) the duration of the CP task, or b) the lowest Total Float of any parallel task –

whichever is less. Figure 5 is a simple network logic diagram with drag computed as originally presented

to illustrate the concept. BPC Logic Filter adapts the concept for general use with respect to the “driving

path” for any selected task, not just the last task in the network. In this context, the Drag for each task (on

the Driving Path of a given selected task) is either its own duration or the lowest Path Relative Float of its

parallel tasks, whichever is less. Figure 6 illustrates the concept as adapted for our own simple network

schedule introduced above. In this figure, the Drag of Task8 (Dur =10 days) is limited to 5 days by the

RelFlt=5 of the parallel path. Similarly, the Drag of Task7 is initially limited to 7 days by the RelFlt=7 of

the single parallel task (Task61). Ultimately however the Drag of Task 7 and its two predecessors are

limited to 5 days by the same parallel path that limited Task 8. In other words, the current “Critical” Path

may be shortened a maximum of 5 days before the secondary path becomes critical.

Figure 55. Drag Definition

4 See Devaux, Stephen A., Total Project Control: A Manager’s Guide to Project Planning, Measuring and Tracking, 1999, John Wiley & Sons 5 Figure taken from The Drag Efficient: The Missing Quantification of Time on the Critical Path, by Stephen A. Devaux, Defense AT&L: January–February 2012

Page 10: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA 8

Figure 6. Drag Analysis for a Simple Schedule Network

10. Some months later, added a feature to analyze resource leveling drivers. MSP’s resource leveling engine

acts to delay lower-priority tasks in favor of higher-priority tasks demanding the same resources. BPC

logic filter examines the leveling delays and assignment details to infer resource-driven, implied logical

relationships between tasks that demand the same resources. As a result, the user can easily determine the

Resource-Constrained Driving Path for any task in the project. Incorporating the feature in the Longest

Path Filter reveals the Resource Constrained Critical Path for the overall project.

Figure 7. Inferred Links from Resource Leveling Drivers

11. In concert with the added resource-leveling features, added bar-coloring methods to modify the Gantt Chart

appearance. These methods allow the results of logical analysis to be presented within the context of the

overall project schedule, not limited to filtered views. Even within the filtered views, bar coloring methods

are necessary for effective communication of the logical relationships (including resource drivers) that

control the scheduled dates.

5 5

5

A1  Releases 

resource

A2  Gains 

resource

Inferred  A1‐

A2 FS Link

Page 11: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA 9

Figure 8. Resource Drivers and Bar Coloring Example

12. Added the Project Logic Checker function. This provides a method for precisely-controlled review and

summary of various logic issues and topics of interest in the schedule.

Figure 9. Project Logic Checker Preferences

The analysis concludes with the presentation of a dynamic output form that…

Summarizes the findings on the face of the form;

Provides a report (in the text window) of the details of the analysis, including a complete project

logic statistical summary;

Provides a dynamic filter controller (using simple checkboxes) to display only the tasks of interest

for particular logic issues.

Page 12: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA 10

Figure 10. Project Logic Checker Dynamic Filter Control Form

13. Added the Logic Quick Checker function. This provides a method for one-click examination of key project

schedule health metrics, with only minimal user input required.

Page 13: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA 11

Figure 11. Logic Quick Checker Output Form

14. Later added a Task Logic Inspector. This function provides data-rich interface windows for examining

schedule logic relationships – typically verifying the Tracer/Filter results on a task-by-task basis. In

addition to the logic information, the Logic Inspector windows provide “jump” buttons to navigate through

the schedule based solely on logical relationships. The Logic Inspector is the most-used tool in all of BPC

Logic Filter, for good reason.

Page 14: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA 12

Figure 12. Task Logic Inspector Windows

15. Integrated the QuickTrace macros. This collection of simple programs – which I originally wrote and

shared in a weekend blog entry – performs quick filtering, highlighting, and sorting of schedule tasks based

strictly on internal MSP task properties. QuickTrace results are 100% consistent with the results of MSP’s

“Task Inspector” tool and its “Task Paths” bar styles. Comparing these results with those obtained using

the Task Logic Tracer can be enlightening, especially when “Driving” relationships are examined.

The attentive reader may notice I did not add any features to answer Question 7 on the Needs list: What is the real

“Critical Path” and how is this related to Project’s “Critical” task flag? (Is it related at all?) I don’t think there

is a good answer except for relatively simple project schedules. With BPC Logic Filter, I don’t rely on Project’s

Page 15: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA 13

Critical flag (or Total Slack) anymore.

3.3 Sharing the Tools

I wrote BPC Logic Filter to be more effective and efficient as a project management consultant in multiple

industries. Within a very short time the set of macros comprising BPC Logic Filter became the “go to” tools in my

MS Project toolbox. I could now do in a few seconds – and with perfect repeatability – what previously could be

done only manually over several hours and with unavoidable human error. Now I was routinely using the tools to

analyze, to persuade, to justify, and to report status. This last of course included monthly management updates of

project critical path (i.e. the driving and near driving paths to the key completion milestones.)

Then came the objections, “we would like to open the project file and re-print the critical path reports (maybe with

a few changes), but all we get is a blank screen! Why can’t we do this?” The very people I had helped to develop

in client organizations now couldn’t do their jobs because I had set a certain standard and then withheld the tools to

meet it. I had also set up a situation where my firm’s primary value to our clients might devolve to “software-

jockey” rather than keeping our true focus on successful project management processes and outcomes through

people. It seemed clear, then, that we needed to find a way to share these tools with clients and others.

Since macros are not easy to share on a large scale, I spent a few more hundreds of hours preparing BPC Logic

Filter for deployment as a Project Add-In. This process exposed how terribly under-educated I was in the

fundamentals of object-oriented program design. Nevertheless, the resulting program runs as well (though not quite

as fast) as its predecessors.

BPC Logic Filter was deployed for initial (internal) testing as a Project Add-In in April 2015. The first beta-testing

began at client sites in North America in May 2015, and we actively sought other beta test sites to validate the

software before proceeding with general deployment in Q3-Q4 2015. From that time through the beginning of

2019, BPC Logic Filter remained non-commercial software that we freely licensed to clients, other qualified

professionals, and advanced academic users. Substantial improvements were made during this period, often in

response to diverse user needs. Beginning in Q1 2019, we made the tool generally available for downloading, trial

operation, and commercial licensing.

A Note on Language Packs: BPC Logic Filter uses English as its sole language for user interface, but it has been

adapted for use with Microsoft language packs for a number of different locales. Additional language packs are

added in response to specific user requests.

Page 16: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA 14

4.0 Notes on Schedule Calculations

4.1 Dates

BPC Logic Filter does not change the dates. Because it is necessary to compute the path relative float for each task

in the analysis, BPC Logic Filter mimics most of MSP’s forward-pass and/or backward-pass analyses, consistent

with MSP default behavior for task calendars, leads and lags.6 All task dates, however, remain exactly as computed

by MS Project. This also means that if you have made a change to the schedule logic without re-calculating the

dates, then BPC Logic Filter may display incorrect results.

4.2 Summary Tasks

While BPC Logic Filter does account for sequential logic (i.e. predecessors and successors) passing through

summary tasks, it ignores all sequential constraints that are passed through parent/child inheritance. Parent/child

inheritance means that if a summary task (the parent) is logically-driven or otherwise constrained to start no earlier

than a given Summary Start Date, all of its sub-tasks (the children) will inherit the same constraint. Similarly, the

date constraints of sub-tasks routinely roll up to the summary task. This behavior is not optional in MSP, and

haphazard application of scheduling logic to summary tasks and their subtasks can lead to schedule dates that are

difficult to explain or justify. For this reason, and since parent/child inheritance is not anticipated in the classical

CPM algorithm, it is customary to avoid applying sequential logic or constraints to summary tasks in professional

schedules. BPC Logic Filter is mainly aimed at CPM-oriented professional schedulers, so it was judged that

including a feature to check for such inheritance was simply not worth the additional complexity. It may be added

to future versions.

4.3 Inactive Tasks

BPC Logic Filter ignores “Inactive” Tasks in MSP 2010 but includes them in the logic tracing for MSP 2013+. As

defined when introduced with MSP 2010, “Inactive” tasks (i.e. tasks with Active field = False) are retained in the

schedule file for record purposes but are omitted from the schedule calculations. Consequently, when used with an

MSP 2010 build, BPC Logic Filter excludes inactive tasks from logic tracing and filtering. With the introduction

of MSP 2013, Microsoft changed this behavior such that – at calculation time only – Project inserts pseudo-links

between all predecessors and all successors of each inactive task.7 When used with an MSP 2013+ build, BPC

Logic Filter accurately traces driving logic through inactive tasks but excludes them from filtered views. Depending

6 BPC Logic Filter normally computes relative float using the effective calendar of the successor task and its resources. (An alternate relative float is computed using the predecessor calendar.) Project computes the slack of the two related activities each using its own effective calendar, ignoring resources. 7 This can lead to unexpected results for those who routinely activate and deactivate tasks as part of what-if analyses or contingency planning – especially if the inactivated tasks have relationships other than finish-to-start-with-zero-lag. Ironically, the few mentions of this change in the “blogosphere” seem to refer to it as a “fix” for the as-designed behavior observed in MSP 2010.

Page 17: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA 15

on the exact nature of the inactive task dependencies, the relative float of some non-driving relationships may be

underestimated.

4.4 Manually-Scheduled Tasks

BPC Logic Filter ignores the “Task Mode” (2010+) and assumes all tasks with predecessors are automatically

scheduled. As a consequence, if a manually scheduled task has unresolved schedule conflicts, BPC Logic Filter

will ignore them. In the example below (Figure 13), the new “Manual Test Task” has been logically inserted

between Task 15 and Task 16, but the manual dates are unachievable in light of the Task 15 predecessor relationship.

The conflict is not resolved, and Project computes negative total slack as a result. BPC Logic Filter assumes that

the unresolved conflict reflects an unreal relationship, and all the dates shown will be honored.

Figure 13. Impact of Manually Scheduled Tasks

4.5 Resource Leveling

BPC Logic Filter allows resource leveling. When “Check Resource Leveling Drivers” is not selected, the program

will account for leveling the same way that Project does when computing slack, i.e. by including the “leveling

delay” field in the backward pass to eliminate “phantom” float in the logically-connected tasks. Such results are

hardly useful, however, since the resource-constrained driving path remains hidden.

If “Check Resource Leveling Drivers” is selected, then the user should carefully review the results to understand

the resource constraints that are implied by the order of the tasks. MS Project’s leveling algorithm can make major

changes to the inferred logical paths in response to minimal modifications of the leveling parameters. BPC Logic

Filter utilizes but does not report these parameters, and the user should be careful to document them separately. In

addition, Project does allow users to manually-enter values for task (and assignment) leveling delay, but BPC Logic

Filter may be unable to identify a resource driver under such conditions.

BPC Logic Filter identifies resource drivers solely by time adjacency of resource assignments; that is, any task that

releases a resource immediately before a leveling-delayed task begins to use it is considered a resource driver for

the leveled task. If two or more tasks release a leveled resource at the same time, then each is considered an

equivalent, parallel, resource driver, regardless of its relative resource demand or work. For projects with large

resource pools that are allocated among many tasks with fractional resource demands, then a large number of

ID Unique ID Task Name Start Finish Duration Total Slack

BPC Relative Float (d): 0 16 Jun '15 10 Aug '15 40 days4 8388611 Task13 16 Jun '15 29 Jun '15 10 days -46 days

5 8388612 Task14 30 Jun '15 13 Jul '15 10 days -46 days

6 8388613 Task15 14 Jul '15 27 Jul '15 10 days -46 days

8 8388614 Task16 28 Jul '15 10 Aug '15 10 days 20 days

BPC Relative Float (d): 41 01 Mar '15 30 May '15 67 days7 8388646 Manual Test Task 01 Mar '15 30 May '15 67 days 61 days

0% 0%

0% 0%

0% 0%

0%

0%

Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov1st Quarter 2nd Quarter 3rd Quarter 4th Quart

Page 18: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA 16

parallel driving paths may be inferred. Under such conditions, the concept of a “resource constrained driving path”

may not be valid.

Note that resource-leveled schedules are not compatible with Drag Analysis. A future upgrade to improve

compatibility is planned.

5.0 USER APPLICATIONS AND SETTINGS

A User Guide, separate from this document, provides detailed instructions related to the user interface, applications,

settings, and interpretation of program output. The User Guide is made available to trial users and registered users

after installation of the software.

6.0 SOFTWARE EDITIONS AND LICENSING

BPC Logic Filter is targeted for per-user licensing in Standard and Professional Editions, with the latter being

required for more advanced functions. These editions are NOT related to the Microsoft Project versions; both

editions work with any modern desktop version of Microsoft Project. Users who evaluate a Trial Version but elect

not to upgrade the software will retain limited (i.e. Freeware Edition) functionality. See Table 1. In general, the

Freeware Edition includes elementary logic tracing capability along with the general display options. This improves

upon what might be achieved by copying and adapting some of the publicly available vba code within a “macro-

building” context.

The Standard Edition adds full data persistence, the ability to show only driving/driven tasks (with constraint

delays), and the ability to use hourly schedules in all Tracer functions. In addition, the Standard Edition offers a

fully-integrated version of the QuickTrace macros and provides access to the pre-programmed Logic Quick

Checker, Longest Path, and Local Network special applications. Finally (and most importantly), the Standard

Edition provides full access to the Task Logic Inspector, including driving relationship flags, user-selectable data

columns, and logic-based schedule navigation (i.e. the Jump buttons.) The Standard Edition is aimed at the typical

Project Manager, administrator, or scheduler whose duties may include schedule development and review (for

simpler projects) or generating standard reports requiring these functions (for complex projects.)

The Professional Edition adds the more advanced functions described in this document, including Relative Float

Analysis (with sophisticated calendar handling), Cross-Project Links, Bounded Network Analysis (i.e. Target

Tasks), Driving Path Drag, Resource Leveling Drivers, and Gantt Bar Highlighting. The Professional Edition is

aimed at the professional project planner/scheduler, scheduling consultant, or forensics consultant whose duties

require a much more comprehensive and in-depth understanding of the scheduling logic network.

7.0 SOFTWARE DEPLOYMENT AND SECURITY

BPC Logic Filter is securely published to a Microsoft Azure cloud server for deployment as a self-updating

ClickOnce application. (ClickOnce is a Microsoft technology developed for this purpose.) The

Page 19: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA 17

download/installation process is seamlessly integrated with Microsoft’s Internet Explorer (and Edge) browser, and

downloading using other browsers is not recommended. By default, ClickOnce applications are installed as

standalone additions to a Windows User account. Such installations normally do not require administrative

privileges, but such limitations can be imposed by corporate security policy.

Right after installation, users will be prompted to accept the End User License Agreement and to validate or change

a selected folder for storing log files. Rejection of the EULA may lead to unreliable results.

During operation, the software requires continuous internet connectivity for two purposes:

At each startup it checks for updates at the deployment server.

At various times during operation it communicates with a license service to verify permissions for the

advanced functions. (The license service retains a minimal record of each such communication, including

the license number and the user’s public IP address.) If the license service connection is blocked or

disconnected, then the software will still run, but the advanced functions will be unavailable.

Page 20: Intro to BPC Logic Filter - Boyle Project Consulting Files/BPCLogicFilter-Intro R2.pdf · BPC Logic Filter is a tool that fills the gaps between Project’s native functionality and

Introduction to – BPC Logic Filter for Microsoft Project 10-Mar-20

Boyle Project Consulting, PLLC – Charlotte, NC USA 1

Feature  Freeware Edition 

Standard Edition 

Professional Edition 

Remarks 

Fully‐functioning trial version.  All three editions may be evaluated.  After expiration of the trial, Freeware edition features will remain available.  

General Relationships to Check             

    Start with single OR multiple selected tasks to analyze 

  

    Trace Predecessors Only, Successors Only, or Both 

  

General Display Options             

    Display Tracer results using Highlight OR Filter   

    Show/Hide Summary Task Rows  (In Filter) 

    Show/Hide Completed Tasks  (In Filter) 

    Re‐sort tasks to highlight dependencies  (In Filter) 

    Display an Output Form  (Copy/paste image or log for documentation.) 

    Autoformat Bar Chart & Page Layout      Needed for in‐line filter display and resource drivers 

Logic Tracing Options             

    Handle Inactive Tasks 

    Trace Summary Task Logical Dependencies 

    Trace Summary Task Parent/Child Dependencies  X  X  X 

    Trace Local Logic Network Only  Limited  Dedicated Ribbon command for Registered versions. 

    Trace Driving Relationships Only    Driving logic computed from relationship float. 

‐  Override if successor is delayed by constraint    (For complete longest path) 

‐ Allow partial‐day lags/slips/float   

    Longest Path Filter    Dedicated Ribbon command for Registered versions. 

    QuickTrace    Driving logic provided by MSP. 

    Task Logic Inspector    Detailed logic examination and navigation 

    Evaluate/Show Path Relative Float      i.e. Multiple Float Path Analysis 

    Near Longest Path Filter       

    Include Cross‐Project Task Links       (In Master/SubProject Structures) 

    Include a Target Task       i.e. Bounded Network Analysis 

    Compute Driving Path Drag       

    Check Resource Leveling Drivers      Resource Constrained Critical Path, Resource‐Constrained Driving Path 

    Use Combined Task/Resource Calendars       

Other Options           

    Restore Last View   

    Preserve Analysis Results for Custom Views/Reports 

  If selected, preserves all flags, labels, and analysis results in task custom fields  

    Logic Quick Check    Expedited Review of Task Logic Issues. 

    Project Logic Checker      Detailed Review and Dynamic Filtering of Logic Issues 

Table 1. BPC Logic Filter – Feature/Edition Comparison