I discovered this issue with portfolio
selection about a two years ago and I have finally decided to write about it.
This blog will demonstrate what the problem is and the options for a
I have never understood the ins and
outs of portfolio analysis. I will not be explaining how to do a portfolio
analysis or what each feature means. I will only be talking about it in the
context of pushing a workflow.
Portfolio Selection in the Past
For Project Server 2010 when workflows
were developed in Visual Studio 2010, any complex condition or process could be
accounted for with custom coding in C#. Portfolio selection was one of these
things, usually contained in a while loop so that “not selected” projects could
travel back to the previous stage.
There are many activities in the image
above, but the names are self-explanatory.
A project has two internal variables
that are written when a portfolio analysis is done. “Optimizer” for cost
analysis, and “Planner” for resource analysis. If the user clicked Commit on
the Cost analysis page, the Optimizer value would be populated and the Planner
value would be null. Inversely if the user clicked Commit on the Resource
analysis page, then the Planner value would be populated and the Optimizer
value would be null.
In 2010 with C#, this was no issue. A
simple null check on each field, then whichever one had a value was compared to
0 or 3 (0 meaning selected, 3 meaning forced in). And so the project advanced.
Portfolio Selection Now
In 2013 and Project Online, SharePoint
Designer does not handle this well. Consider the stage block below:
It should be simple to understand. We
wait for the Commit action, then we check the Planner Decision variable for 0
If I complete a portfolio analysis by
clicking Commit on the Resource analysis page, this works as expected. If I
click Commit on the Cost analysis page, I get this error on the workflow
It seems like workflow manager is
choking on the NULL value in Planner Decision. The workflow is now dead.
This creates a big problem. I cannot
even check both Optimizer and Planner to see if they have values because the
very act of checking is what causes this exception! If you know SharePoint
Designer, you know that some variables have an “is not empty” option, but
unfortunately I don’t have that for these variables. This is a technical
problem… and I hate to be harsh to MS but this is really obvious.
There is no technical workaround. Only
process options that you can present to your client.
the stage to Submit
Have the user perform the portfolio
analysis however they wish, and then manually go into each selected project and
push it forward with a Submit.
the stage to an Approval
Same as option 1, except the user would
manually complete an approval instead of a Submit.
one kind of analysis
Talk to the client and figure out which
is more likely to be a constraint (cost or resource) and then make sure that
they only use that one kind of analysis (and that is the one you put in SPD).
I have experienced this issue on multiple computers pointing
at multiple environments both in the cloud and on premises for the past two
years. Fortunately, clients have been willing to take one of the above
workarounds, but I think it is unacceptable that for something so basic (a NULL
check) an organization will have to make a difficult process decision.