Blog
Colby's Blog
Tags
Disclaimer
Thursday, April 25, 2013
32/64 Bit 2.x-4.x Global Assembly Cache Manager
| Reactions: |
Friday, April 12, 2013
.NET 2.x–4.x GAC Browser
I filed this under “there I fixed it” because it seems like this should already be out there given how simple it was to write. I t took me a long lunch break…If you are interested in it, hit me up.
| Reactions: |
Wednesday, March 20, 2013
Exciting News Coming Soon
Stay tuned…
| Reactions: |
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.
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.
Microsoft did a great job redesigning PC settings. The following are screenshots showing a few of the highlights:
The App Store is also pretty slick. Here are the top free apps:
I updated some of the preinstalled apps, which also has a nice clean interface;
The new task manager rocks!
Check out the new mail app:
And the new messaging app:
Maps (I will avoid cracking a joke about the other guy’s map app):
News:
And social:
Okay, back to work. More later.
Friday, October 19, 2012
Announcing International Project Management Day
Click below to register for this free event
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:
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:
Clicking on the ellipsis in the “Select Project Server” in the Source group control displays a Project Server login dialog:
Once logged in, the project selector edit button is enabled. When clicked, the source project can be selected:
And the target Project Server instance and project name are specified:
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:
Here is the target Project Server custom field definitions:
Also, I have resource migration selected as well. Here is the source resource pool:
Here is the target resource pool:
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.
After running the migration tool, an executable is created (using my sfx technology—see the sfx section in this post):
Let’s run it…First thing is the files are extracted, then I am prompted to login to the target Project Server instance:
Provide a name for the project:
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
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.
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:
There are three options:
- 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
- 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
- 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
There are five options:
- 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).
- 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
- 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.)
- 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
- 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.
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:
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:
And here you can see it set at the task-level in Microsoft Project:
After synchronizing, you can see that the EV Method Set has been synchronized from Project Server to EVMS:
And the EV method on the individual elements has also been synced:
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.
Next, the user can map time phased data from Project Server into an EVMS “result unit” such as hours, quantity, or cost:
These values are then available to the user in EVMS forProject Professional and our reporting suite:
Next, the user can configure how status information is brought from Project Server into EVMS:
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:
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
| Reactions: |
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.
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.
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:
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:
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:
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:
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:
After choosing a base unit, I can apply various operators to it:
I can choose to add rates, fields, or other result units to the formula:
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.
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:
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):
Planning View with Notes
The WBS Editor
You can see that this matches what is in Microsoft Project. I just synchronized the structure, resources, and resource assignments:
Okay, I have run out of time today. Next look for a post featuring a deep dive on Project Server synchronization.
Colby
