Check out my new blog at https://shibumiware.blogspot.com

Friday, October 26, 2012

Windows 8

We are doing a lot of testing and performance work on EVMS forProject™ these days so in between tests and performance runs I got a Windows 8 machine put together yesterday.

I have been working with Microsoft either as employee or a partner for almost 20 years.   I was working on campus when Windows 95 was launched and my second manager at Microsoft was the lead product manager on that launch.  Those were heady days. 

After that I was really interested in operating systems but nothing coming out of Microsoft was really exciting.  It was like the lost decade and the Bermuda triangle for operating systems. So when Windows 8 was released I was a bit apprehensive for Microsoft.  After all, they are our “mother ship”. 

Windows 8 is a huge gamble.  The user experience is different.  Very different.  I had read the pundit reviews prior to the release and watched a couple of videos on YouTube of people struggling to figure out how to start apps.  I knew what to expect when it first booted but I hadn’t used any of the betas.  I decided to just go with the flow and not try to force my old habits on Windows.  Of course for a guy who REALLY dislikes the mouse, this was a struggle at first.

Then I found this.

Now I am actually faster in Windows 8 than I am in 7 or 2008 Server.  Windows 8 is slick and fast.  It just flows. 

There are a few ways to access your apps.  First the tiles, which are surfaced when you hit the Windows key.  Here is a short video on starting Outlook using tiles.

Starting Outlook with Tiles

Another way is to use the search feature.  Pressing Windows Key + q and typing the name of the app you want to start.  Here is a short video demonstrating that.

Starting Outlook with Search

Microsoft did a great job redesigning PC settings.  The following are screenshots showing a few of the highlights:

image

image

image

The App Store is also pretty slick.  Here are the top free apps:

image

I updated some of the preinstalled apps, which also has a nice clean interface;

image

The new task manager rocks!

image

image

image

Check out the new mail app:

image

And the new messaging app:

image

Maps (I will avoid cracking a joke about the other guy’s map app):

image

News:

image

And social:

image

Okay, back to work.  More later.

Friday, October 19, 2012

Announcing International Project Management Day

Click below to register for this free event

ipmds

International Institute for Learning, Inc. (IIL) has put together an exciting program for International Project Management Day on November 1, 2012: Power of the Profession, a free virtual event featuring video presentations from global industry professionals, experts, and influencers.

You’ll learn about the most current and critical topics in project management through over 30 presentations worth up to 15 PDUs.  You’ll also have a chance to visit IIL Virtual Booths on various knowledge areas, live chat with the presenters, stop by Sponsor Booths, and download white papers and other collateral.

Thursday, August 30, 2012

Resharper 7.0 is available

Has been for a while but I just now got around to upgrading.  Pretty sweet.  Check it out at http://www.jetbrains.com/resharper/.

Wednesday, July 25, 2012

Migration Toolkit for Project Server

One of my side projects is a project migration toolkit for Project Server.   Have you ever wanted to move a project from one Project Server instance to another, including resources, custom fields, and lookup tables?  Yeah, me too!

Requirements

  • Migrate a project from one Project Server instance to another, including:
    • Project custom field values
    • Tasks
    • Task custom field values
    • Resources
    • Resource custom field values
    • Optionally:
      • Custom field definitions
      • Lookup table definitions
  • Allow for Project Server to Project Server migration
  • Allow for MPP export to Project Server import

The driving reason behind my working up this toolkit was testing.   Our newest product, EVMS forProject, has a Project Server synchronization engine that syncs Project Server data with our system.  I needed a way to get projects from one environment (test, dev, production, etc.) to another for testing and debugging purposes.

Walk Through

The toolkit user experience begins with a switchboard:

image

The options are to:

  • Migrate Project – This option allows the user to either choose an MPP that has been exported to MPP by using the toolkit or to choose a source and target Project Server instance.  The source project is then migrated to the target Project Server instance
  • Migrate Server Settings – Coming Soon
  • Migrate System – Coming soon
  • Create Custom Fields Description File – This option allows the user to create a file that contains the custom field and lookup table definitions for the source Project Server instance.  This can be used in conjunction with the final option to migrate custom field and lookup table definitions to the target Project Server instance.
  • Export MPP for Migration – In the case where the user doesn’t have access to the source Project Server instance at the time that the project is to be migrated to the target Project Server instance, this option provides an MPP export mechanism.  As we shall see later, it even provides a mechanism by which a self-extracting executable is created that when run against the target Project Server instance essentially “installs” the project into the new environment—including custom field and lookup table definitions.

Lets walk through some use cases

Use Case: Project Server-To-Project Server Migration

Note: I happen to be using Project Server 2007 in these demos but the tool is designed for 2007 and 2010.

Suppose you have a project in Project Server A and you want to create a copy of it in Project Server B.  Using the toolkit, this is extremely easy.  Choosing the first option described above displays a migration details form:

image

Clicking on the ellipsis in the “Select Project Server” in the Source group control displays a Project Server login dialog:

image

Once logged in, the project selector edit button is enabled.  When clicked, the source project can be selected:

image

And the target Project Server instance and project name are specified:

image

Notice that I have “Create Missing Custom Fields” and “Create and Populate Missing Lookup Tables” checked.  Here is the source Project Server custom field definitions:

image

Here is the target Project Server custom field definitions:

image

Also, I have resource migration selected as well. Here is the source resource pool:

image

Here is the target resource pool:

image

Click Migrate and we are off and running… A short while later, we go to the target system and see the migrated project, including custom field definitions, lookup table definitions, resources, and the project itself!

Use Case: Export/Import MPP

Suppose you have a project you want to send to a colleague that is working in a different instance of Project Server.  The toolkit provides two ways to do this.  First, you can export and MPP (and supporting files, which includes custom field information) to a directory—which then you could zip up and send to your colleague.  Or you can use the toolkit to create a self-extracting “project setup” file when run against the target Project Serer instance will “install” the project, including custom field information and resources, into the server.

image

image

After running the migration tool, an executable is created (using my sfx technology—see the sfx section in this post):

image

Let’s run it…First thing is the files are extracted, then I am prompted to login to the target Project Server instance:

image

Provide a name for the project:

image

image

And wham, the project is imported with custom fields, lookups, and resources

Back to work.  This was supposed to be my lunch break!

Monday, June 04, 2012

EVMS forProject–Project Synchronization

It is funny having such a big title “Chief Architect” in such a small team with so many top-notch guys.  I think the title is appropriate because I got hired first and then went out and found the kernel of the team that subsequently delivered the product, but ultimately the team is “chief”.
My real title is “Captain Sync”.  I have spent the last 1,000 days working on technology that provides synchronization services between Microsoft Project Server and EVMS forProject.  From the get-go, we wanted to build a system that was more than just a bolt-on to Project Server—we wanted the two systems to prop each other up and provide a complete EV system.  This was not without challenges.
The Project Server Interface (PSI) is the primary interface for companies aiming to build on the Project Server platform.  I have been working with Microsoft Project since the mid ‘90s but it wasn’t until the PSI was introduced with Project Server 2007 that I really got interested in building a framework for creating companion products for Project Server.  The core of that effort is what we call “mpFx”, which has been around since 2007.  The framework  encapsulates the web services used to interoperate with Project Server. In a future post I will describe the technology in depth but here I am going to start with our requirements for EVMS forProject and the options for Project Server synchronization.
(The screenshots and features in this post are part of the announced product but subject to change until general availability)

Project Server Synchronization

First and foremost we needed to be able to integrate schedule information from Project Server into EVMS, including:
  • Activities –Tasks in Microsoft Project are marked with an “element type” via a custom field so that EVMS knows what kind of element to create in our system (or, optionally, the element types can be maintained wholly in EVMS):
    • WBSE – A Work Breakdown Structure Element,  which is essentially the superstructure of the program or project
    • CA – A Control Account  is management control point at which budgets (resource plans) and actual costs are accumulated and compared to earned value for management control purposes. A control account is a natural management point for planning and control since it represents the work assigned to one responsible organizational element (or integrated work team) for a single program Work Breakdown Structure element
    • WP – A Work Package is a natural subdivision of Control Accounts. A Work Package  is simply a task/activity or grouping of work. A WP is the point at which work is planned, progress is measured, and earned value is computed. It can be translated into different terms in different companies and functions. It can be a design job, a tool design package, a build-to-package, a shop order, a part number, a purchase order or any other definable task/activity at whatever level control is normal for program management with in the company
    • SLPP - Summary Level Planning Package is an aggregation of work for far-term efforts, not able to be identified at the control account level, which can be assigned to reporting level Work Breakdown Structure (WBS) elements (and is therefore not “Undistributed Budget”)
    • PP -- A Planning Package is a holding account (within a control account) for budget for future work that is not yet practicable to plan at the work package level. The planning package budget is time-phased in accordance with known schedule requirements (due dates) for resource planning and the plans are refined as detail requirements become clearer and the time to begin work draws nearer. A company may elect to break the work assigned to a control account into smaller groupings of tasks/activities, i.e., multiple planning packages, for internal planning and control reasons
    • Tasks and Milestones – Both are lower level planning constructs that allow the program manager, project manager, or control account manager the option of defining intermediate program structures or temporal points in the schedule signifying an important milestone.  These are not schedule milestones, but milestones upon which earned value may be earned.
  • Resources –  If a resource found in Project Server does not exist in EVMS it can be optionally configured to automatically be created in EVMS.  Resource custom fields may also be configured to be synchronized
  • Resource Assignments – Again optional, resource assignments detected in Project Server that do not exist in EVMS can be automatically created.  Resource assignment custom fields can be synchronized with EVMS as well
  • Project-level custom fields – Custom fields at the project-level can be mapped and optionally synchronized into EVMS
  • Custom field definitions --  New custom fields added to Project Server can be optionally configured to synchronize their definitions into EVMS, as is the case with lookup tables.
When synchronization is initially setup for an EVMS project, the user is provided a series of options to choose from.  First, the user specifies the template that the EVMS project will use and whether or not it will be synchronized with a single Project Server project or multiple projects:
image
Synchronization templates (sync templates) are configured at the enterprise level and depending on policy and permissions, the user may or may not be able to create or modify a sync template.
In the example above, I have chosen the enterprise default sync template and specified that I intend to sync more than one Project Server project into a single EVMS project, as one would do in  a program.
Next, I specify how the WBS is going to be maintained in the system:
image
There are three options:
  1. Maintain WBS in EVMS – This means that tasks synchronized from Project Server will land in an “Unassigned” bucket and the project manager will use EVMS forProject Professional to establish the structure manually
  2. Use Microsoft Project structure – The structure of the project in Project Server will be mirrored in EVMS.  I am given the option of using the ID field or a custom field as the “key” field that ties an activity in Project Server to an element in EVMS
  3. Use Project Server custom field or Microsoft Project outline field – This option allows the user to specify either an enterprise custom field backed by a lookup table or a local Microsoft Project lookup field to drive the association between tasks in Project Server and the WBS in EVMS.  Each activity is coded using custom field values, which in turn have a counterpart in EVMS that is located using the values in Microsoft Project
Next, I configure the system to indicate what kind of entity will be created in EVMS based on the information in Project Server
image
There are five options:
  1. Maintain in EVMS – This simply means that tasks are synced from Project Server and the project manager will manually specify what kind of element type type they are (WBSE, CA, SLPP, WP, PP, TASK, or EVMSTN).
  2. Using a single Project Server custom field – This is the default and indicates to the system that a single Project Server custom field will be used by the project manager to “code” the task to a specific element type
  3. Use Project Server flag fields – Using this options means that a flag fields will be created in Project Server so the project manager can check the element type (IsWBSE, IsCA, etc.)
  4. Use a single Microsoft Project (local) custom field – This option is similar to (2) except that the source of the coding is in a local custom field rather than  an enterprise custom field
  5. Use Microsoft Project (local) flag fields – This is similar to (3) but the source of the flags are local custom fields rather than enterprise custom fields.
You notice below the radio group control that there is a mapping control that allows you to map the value of the custom field to our internal system types for element type designation.   This allows the organization to use different names for the various element types to fit their process and culture.
Next, the user can map Project Server fields, both system and custom, to EVMS fields, again both system and custom.  This technology goes beyond simple mapping of field values.  At the project-level, a project custom field could be set to a value that indicates the earned value set being used in EVMS.  Once that is set, individual task EV method can be set and automatically synced to EVMS:
image
And you can see here in the field mapping facility that I have mapped the Project Server custom fields “EV Method Set” and “EV Method” to the project and the various EVMS elements:
image
And here you can see it set at the task-level in Microsoft Project:
image
After synchronizing, you can see that the EV Method Set has been synchronized from Project Server to EVMS:
image
And the EV method on the individual elements has also been synced:
image
Next, the user can specify options regarding resource synchronization.  A single enterprise resource set (EVMS) can be created that is synchronized with the Project Server resource pool.   Each EVMS project that chooses that resource set will have resource information synchronized from Project Server whenever anything changes, including resource custom fields.
image
Next, the user can map time phased data from Project Server into an EVMS “result unit” such as hours, quantity, or cost:
image
These values are then available to the user in EVMS forProject Professional and our reporting suite:
image
Next, the user can configure how status information is brought from Project Server into EVMS:
image
And finally, the user can configure some advanced options, including an option that tells the system how to roll up task information and not bring detailed tasks over.  This feature will be detailed by itself in a future post:
image
Okay, I am out of time.  Next post we will look at how synchronization works from a developer perspective (without spilling too many beans of course).
Colby

Thursday, May 31, 2012

Announcing EVMS forProject

This week has been a dash to get ready for EVM World 2012, the premier conference for earned value management professionals, where we announced our newest product EVMS forProject™.  The product has been in development since 2009 and took an incredible 45 person-years of work to produce.  Built as a companion product for Microsoft Project Server/Project Professional 2010 (and 2007) and SharePoint, EVMS forProject is the first product to provide a purpose-built earned value management system for the enterprise based on Microsoft technology.

For a product overview, visit this link.   The official announcement is here.

(The screenshots and features in this post are part of the announced product but subject to change until general availability)

Developing this product has been high adventure.  Our CEO, Glenn Gallop, had a vision based on decades of working in the EV space.  Realizing the vision took our team of 6 developers (and a few contractors) three years of work. 

image

Credits

Glenn Gallop – CEO, President, and visionary

Andrei Cismaru – Developer
Chet Farmer – Product manager and IT services director
Colby Africa – Architect and developer
Joe Sharp – Development manager, architect and developer
Karl Werner – Developer
Ken Inglis – Developer
Paul Gorman --  Developer

Families – All of the above peoples’ families contributed in a major, almost incalculable fashion by supporting us during the long nights and weekends of work and tolerating our absence when we needed to congregate in Overland Park.  I want to thank my wife, Melina, for doing the hard things that helped me push on.

Developing The Product

The architecture and overall system design was a collaborative effort led by Joe Sharp and myself with a ton of individual developer feedback.  Laying down the source code to articulate the architecture was a superhuman effort.  I think we could have powered a mid-size city if we could convert the caloric value of the number of keystrokes to alternating current.   

Microsoft was a big supporter and partner in the development of the product, as was one of the largest privately held consulting, engineering and construction companies in the world.  Without these two staunch allies, we would have not pulled this off.

In the early stages of development, we spent almost three fourths of  the year at the Hyatt Place Overland Park.  The team at the Hyatt provided amazing service to the straggly team, up at all hours of the night working hard on the early phases of product development.

hyatt

Our development process was driven directly by a real customer with real requirements, backed by the decades of experience our combined management and development team have in product development, earned value management, and project management in general.  We were building and delivering useable software from the very beginning, which contributed greatly to overall product quality.  The team turned on several dimes to ensure from a team, architecture, and usability perspective that the product was right.  While this was painful at times, the net effect was both a stronger team and a better product.

I have worked with many product groups over the years and yet it is easy for me to say that this team is the best, most cohesive, and generally fun team I have worked with.  My hat is off to these guys and cannot thank them enough for sticking it out and making our vision a reality.

Product Overview

The following are excerpts from the link provided at the beginning of this post, with additional information on enterprise configuration/data and our Windows product.

Key Benefits

Improve project performance measurement and management visibility
Promote consistency of practice across the enterprise
Meet widely-adopted industry and government EVMS guidelines
Increase user adoption of EVM

Planning & Budgeting

Financial period calendars support weekly or monthly EV process, with summary reporting calendars (quarters, years, etc.)
Define resources in EVMS forProject or import from Microsoft Project Server
Element of Cost (EOC) breakdown for direct costs such as labor, material, travel, ODC
Enterprise configuration for indirect/overhead cost categories and calculation rules
Enterprise or project-level rate tables with escalation
Configurable calculated Result Units and calculation rules
Interactive Control Account Planning interface

Cost / Schedule Integration

Robust, configurable synchronization with Microsoft Project Server
Synchronize Baseline, Forecast, Status and Actual data from schedule
Allows multiple schedules to be combined into a single EVMS project
Import resources from schedule, or plan resources directly in EVMS

Performance Measurement

Configurable EV methods including:

  • 0/100, 50/50 and other start/finish percentages
  • Units complete
  • Discrete milestone
  • Measured milestone
  • Percent complete
  • Technical measurement rules
  • Direct BCWP entry
  • Apportioned effort
  • Level of effort

    Enter status in EVMS forProject or synchronize from Microsoft Project Server

    Budgeted Cost of Work Performed (BCWP) / Planned Value calculated instantly in all planning units and result units and currencies

    Cost Tracking

    Import actual costs either weekly or monthly
    Track actuals at Work Package or Control Account level
    Incremental or cumulative values
    Maintain transaction history

    Forecasting

    Track ETC and EAC in EVMS forProject or import from Microsoft Project Server
    ETC and EAC instantly available at all levels of detail and in all planning units, result units and currencies
    Ten (10) standard independent EAC (iEAC) calculations
    Support top-down or bottom-up forecasting
    Manual forecast by either ETC or EAC

    Variance Analysis

    Earned value metrics calculated and displayed instantly, including CV, SV, CPI, SPI, CV%, SV%, VAC, VAC% and more
    EV performance metrics instantly rolled up from details to summary levels
    Variance thresholds can be defined and used to highlight views and reports

    Change Management

    Integrated project change log tracks changes to:
    Negotiated contract cost (NCC)
    Authorized, unpriced work (AUW)
    Undistributed budget (UB)
    Distributed budget (DB)
    Management reserve (MR)
    Over target baseline (OTB)
    Contract Performance Report (CPR) header & footer logs
    Ability to close periods to baseline changes
    Easily produce change log reports and export to Excel

    Enterprise Data and Features

    The product is extremely configurable… I mean extremely configurable.  Here is a screen shot of our System Settings area in SharePoint:

    image

    In subsequent posts, I will describe in detail what each of these areas and features are but for this post I am going to focus on three areas: security, calculation models, and custom fields.

    Security

    EVMS forProject has a granular, role-based security system.  There are almost 650 individual permissions which are rolled up internally into groups of permissions by area.   Roles are defined by enabling or disabling permissions:

    image

    This granular, role-based approach provides detailed control of what users are able to do and see which is very important for the enterprise—particularly for the government agencies and contractors we work with.

    Calculation Models

    Every organization we work with has different policies, practices, and techniques for managing projects--at times varying so widely that is hard to imagine a product that would service all of them.  We worked very hard on providing a system that could accommodate the various management approaches.

    One of the big difference between organizations, in terms of  cost management, is how various calculations are performed to arrive at cost, G&A, overhead, etc.   We built a server-side/client-side calculation engine that allows for detailed configuration and execution of these varying calculation models.

    A “calculation model” is a set of user-defined calculations performed on project.  Calculation models are defined at the enterprise level (more than one is supported and can be picked by the project manager if security allows them to).

    Here is a screenshot of the labor portion of an enterprise calculation model:

    image

    The “Result Unit” is the result of an earlier calculation or of some “base” result unit like hours, money, or quantity.   The calculation model allows you to take a base result unit and develop derivative result units using formulas.  The above example takes hours, multiplied by the labor rate (which is defined on the resource or even the individual resource assignment) to arrive at the direct labor cost.  That derivative result unit is then used to formulate addition derivatives, eventually cumulating in the invoice price.  Very, very slick.  Joe Sharp was the lead architect and developer on this part of the product and it is truly awesome.

    These result units are then available to the project manager, control account manager, and other users in EVMS forProject Professional and our SharePoint-based reporting suite.

    We developed a SharePoint-based formula editor which allows the user to create simple or complex formulas for calculation.  Here is a new calculation rule that shows the base formulate editor menu:

    image

    After choosing a base unit, I can apply various operators to it:

    image

    I can choose to add rates, fields, or other result units to the formula:

    image

    One of the most powerful features of the calculation engine is the ability to include contextual values in the formula, such as values of a project, resource, or assignment.

    image

    The above example include the value of “SalaryMuliplier”, which is a custom field on the project in the calculation of a price multiplier.

    For even more complex formulas, we provided a parser that allows the user to create complex formulas using .NET’s math and string libraries.

    Custom Fields

    Every enterprise project management system provides the ability to define and use custom fields.  We spent days haggling over custom field features and implementation—wait, I mean weeks—before we settled on our approach and feature set.

    We support as many custom fields as you like on a wide range of “entities” such as the project, tasks, resources, resource assignments and various other entities.  Custom fields can be of any type, including text, number, flag, cost, date, etc.  The custom field can be backed by a lookup table, optionally included in our cube definition and snapshot (a snapshot of project data for a specific time), and setup to fill down automatically to the entities’ children.  The custom field input can be masked as well.  Here is a screenshot of a custom field definition:

    image

    Custom field values can by synchronized from values existing in Project Server, including values from the project, task, resource, and resource assignment. 

    EVMS forProject Professional

    In addition to our SharePoint-based interface, EVMS forProject includes a rich Windows client employing Microsoft’s Fluent User Interface

    Here is the Planning View with details, which include the resources assigned to the project and the result units (in this case, just hours are shown):

    image

    Planning View with Notes

    image

    The WBS Editor

    image

    You can see that this matches what is in Microsoft Project.  I just synchronized the structure, resources, and resource assignments:

    image

    Okay, I have run out of time today.  Next look for a post featuring a deep dive on Project Server synchronization.

    Colby

  • Disclaimer

    Content on this site is provided "AS IS" with no warranties and confers no rights. Additionally, all content on this site is my own personal opinion and does not represent my employer's view in any way.