As a consultant for Microsoft Project, often we have to give demos to potentials clients to show the amazing things that Microsoft Project and Microsoft Project Server can do for them. The Project Server Demo image (2010 Information Worker Demonstration and Evaluation Virtual Machine) created by Microsoft is excellent in terms of showing important features with rich demo data.
I was able to reproduce this issue every time I built a new Hyper V machine using setup files from below (For Project Server we need only Virtual machine “a”)
This issue is not specific to these customized reports. It can be reproduce using sample reports as well. Below is the screenshot of the Summary Dashboard Report
Following are the screenshots of the issue
If you enable Internet Explorer Developer Tools by pressing F12 key, the following error is displayed on the Script tab. (Make sure to refresh Excel report after launching developer tools)
A similar error is displayed on the Summary Dashboard report
After enabling verbose ULS logging for Excel Calculation Services, you will see error similar to the one below:
Exception ExcelService.PostProcessRequest: Excel Server Exception: System.TypeInitializationException: The type initializer for 'Microsoft.Office.Excel.Server.CalculationServer.ExcelServerApp' threw an exception. ---> System.IO.FileLoadException: Loading this assembly would produce a different grant set from other instances. (Exception from HRESULT: 0x80131401) at Microsoft.Office.Server.Diagnostics.ULS.SendWatsonOnExceptionTag(UInt32 tagID, ULSCatBase categoryID, String output, Boolean fRethrowException, TryBlock tryBlock, CatchBlock catchBlock, FinallyBlock finallyBlock) at Microsoft.Office.Excel.Server.CalculationServer.ExcelServerApp..ctor() at Microsoft.Office.Excel.Server.CalculationServer.ExcelServerApp..cctor() --- End of inner exception stack trace e.Excel.Server.CalculationServer.ExcelServiceBase.SafeSetContext() at Microsoft.Office.Excel.Server.CalculationServer.ExcelServiceBase.BeginProcessOperation(CommandParameter parameter, WebMethodBehaviorAttribute webMethodBehavior, WebMethodType webMethodType, AsyncCallback callback, Object state, UserOperation operation) at Microsoft.Office.Excel.Server.CalculationServer.ExcelServiceSoap.BeginGetHealthScore(AsyncCallback callback, Object asyncState) at AsyncInvokeBeginBeginGetHealthScore(Object , Object , AsyncCallback , Object ) at System.ServiceModel.Dispatcher.AsyncMethodInvoker.InvokeBegin(Object instance, Object inputs, AsyncCallback callback, Object state) System.TypeInitializationException: The type initializer for 'Microsoft.Office.Excel.Server.CalculationServer
ExcelServerApp' threw an exception. ---> System.IO.FileLoadException
Existing Excel Service Calculation Service application is corrupt
Fixing this issue is a three stage process
A. Create root (/) site collection for PWA site (which is currently not present)
B. Provision new excel service application, Change the association with web application
C. Re-configure the excel services settings for new excel service application
The result is Dashboard pages that load properly:
Once both the services are restarted validate the result by accessing Summary dashboard report and other reports which we discussed
OK I know it has been a very, very (very!) long time since I posted. No excuses. Everyone is busy and I should have been keeping up. I hope to do better with that in the coming weeks and months. To that end though I am happy to announce that Hrishi Deshpande will be contributing blog posts starting tomorrow. Hrishi is a coworker of mine at DeltaBahn and spent several years working at Microsoft in the Premier Support team that specialized in Project Server. He is a super talented Project Server architect and will bring some badly needed architectural and technical expertise to this blog.
I was recently asked about how to display a custom Gantt bar in one of the PWA Gantt chart views. At first I did not see a way to do it but then tested and verified that the Duration1 –Duration10 bar styles available in several of the bar sets in PWA can be used. I had some some reading on the Internet that implied that they were non-functional but I found that they draw using the StartX-FinishX date sets for tasks. So Duration1 is drawn from Start1-Finish1, Duration9 between Start9 and Finish9.
Server Settings | Gantt Chart Formats:
Then this project draws like this:
OK so I’m building a Project 2010 addin using Visual Studio 2010 (VSTO) and I got tired of the clickonce deployment option. I added a Visual Studio installer project to my solution and went about following the advice on this page: http://msdn.microsoft.com/en-us/vsto/ff937654.aspx
It was mostly pretty good. A bit confusingly worded in a few places but I wrote that off to me not having enough real development background to pick up on the flow as I might if I was an experienced dev. In the section on registry entries it made mention of this page: http://msdn.microsoft.com/en-us/library/bb386106.aspx. It also showed sample registry entries settings and how to set them up in your installer project. I followed these to the letter and matched mine up with their screenshot to make sure they matched. For the Manifest entry mine was:
I used this and my addin installed the proper ribbon tabs and buttons which meant that the system was able to interpret my entry enough to install my code into Project 2010. But some of my code was not quite working properly.
Two of my dialog boxes should have read in a default value from an Application setting but the combobox controls that should have contained these defaults were blank. Click events for buttons were not firing off the code connected to them. The load event of a graphing control did not fire so while the graph control was there with the right visual settings it contained no data.
I spent most of last night and much of the early part of this morning trying to figure out what was going wrong. I rebuilt my setup project from scratch. I double checked dependencies and looked to make sure I was building my setup project based on the right output, etc, etc. No Joy.
I then checked in with old friend Colby Africa, one of the resident developer geniuses over at forProject to see what I was doing wrong. He had seen some roughly similar oddities in one of his projects and his research with his contacts suggested that I needed to add ‘file:///’ to the beginning of my registry setting in my Manifest key. It had something to do with the way the system interpreted the entry.
I was skeptical but did it anyway. My Manifest entry was now “file:///[TARGETDIR]ADDINNAME.vsto|vstolocal". I rebuilt my setup project and reinstalled my addin and poof! It worked!
As always, having smart friends is at least as important as being smart yourself! :-)
I’m working on a toolkit for Project 2010 that will have several tools and utilities that people have, over the years, asked me to write for them in VBA.
I'm looking for feature suggestions from the crowd. What do wish there was a button for in Project 2010? do you want to run a series of checks against your project to make sure your tasks and resources abide by a set of standard rules? Do you want to create a logfile of all the new tasks, task deletions, resource assignments, etc for that project? How about a tool to remove rates and costs from a schedule before you send it to a client or partner? What about one that lets you prepend or append some text to the Task Name of a set of selected tasks? Well my toolkit has these already. What would you like to see?
Send me an email at email@example.com and tell me what you wish there was a button for and I will try to add it to the toolkit.
Just a quick post to get this into the search engines for the next person.
If you have an Administrative Task in Project Server 2010 that has either any of the following characters in the task name you cannot manually add that task to a timesheet.
There are likely others but these are the 3 I know of for sure.
When you add one of these tasks to a timesheet you get the error “An unknown error has occurred” as shown below.
The odd thing is that you can set one of these tasks to “Always Display” and the task will display with no problem but it cannot be manually added to the timesheet.
I will be giving a talk titled “Planning and Executing a Multi-Instance, Multi-Version Project Server Migration” about the process required to merge a Project Server 2007 instance and a Project Server 2010 instance into a new Project Server 2010 instance.
Hope to see you all there!
Quick note to save someone down the road some time and frustration. :-)
When working with VBA TimeScaleValue collections in Microsoft Project 2007 or Microsoft Project 2010 remember that timescaled values that fall on nonworking days are not zeros. They are also not NULLs. They are in that shadow world between numbers and NULLs. They are “”. Why is this important you ask?
It is NOT important if you are just going to set the Value directly as in:
TSV(Counter).Value = $400.00
It is VERY important if you are doing a running total of creating a rollup inside of a loop (in my case a For…Next looping through sets of Tasks, as in:
TSV(Counter).Value = TSV(Counter).Value + TaskObject.Cost10
If you fire that second line of code off and the TSV(Counter).StartDate is a nonworking day AND there is not already a number in that value then the value that is there by default is that crazy shadow “” value. The result is a Type Mismatch error because you are trying to add your TaskObject.Cost10 to a non number.
So to get around this you have to test the current value of TSV(Counter).Value to see if it is numeric:
If IsNumeric(TSV(Counter).Value) = True then
TSV(Counter).Value = TSV(Counter).Value + TaskObject.Cost10
TSV(Counter.Value = TaskObject.Cost10
Now the first pass through this TSV ‘slice’ will show a nonnumeric value and it will just set the value to be the Cost10 value for the TaskObject. But on the second pass through this slice it will be a numeric value since you just set it on the first pass and then it can start your ‘rollup’.
This is just a snippet of T-SQL to return the Project Name, Task Name, Task Start, and Task Finish dates for all tasks in the Project Server Reporting Database that are scheduled to start between the current SQL Server system time and the current system time plus 7 days.
The core of this is really just the use of SysDateTime and the DateAdd functions. Other than that it is a very basic query.
This gets asked for every once in a while so I will put it out here for those searching.
OK, so you have a nice view in Project Center and it groups by a given field, we will call it Location. You get all your projects into the system and you notice that the grouping works as expected but the sort of the grouped headings is odd. Not even alphabetical.
Now, this is an “issue” that I'm sure has been around for as long as there has been a Project Server but I only just found it because on this engagement I’m on I broke with my normal process and did not prepare my custom field information the way I normally do. Normally, I gather up the lookup table values and set them up in Excel first. By force of an old habit from other systems I would either sort them in Excel or for those that did needed to be in a non-alpha sort I would put numbers in front of the values. Then I would put them into lookup tables.
I know that Project Server allows you to control the display order of the lookup table (see below) but I have always done this and habits are hard to break.
So what was my problem with the sort of my groups? Project Server views sort the group headings according to the display order set in the lookup table of the field you grouped on. My issue was that I had not put numbers in front of the values and I did not pick Sort Ascending. The default is By Row Number and that has always worked for me given my odd ‘pre sorting’ that is part of my normal routine. I went in and changed the sort order or my lookup table and my grouping was correct.
The moral of this story could be “Don’t break with your process” or maybe it is “Update your process”. I'm going to go with the idea that it is “Don’t break with your process!” :-)
Almost all Project Server administrators know that when you have an enterprise custom field using a lookup table that you can pick one of the values from that lookup table to be the default value for new entities.
But what about a case where the field is set to NOT have a default value but some new projects are being created where when the Save button is hit on the New Project PDP a value is being entered for that field? What might cause that?
There are (at least) two possible answers.
Templates on Enterprise Project Types
When you create your enterprise project types you can associate an enterprise project template so that when a new project is created using an EPT it will automatically use that template. It is possible for a template to contain values in some enterprise fields as part of the template. If the template associated with the EPT has a value in that custom field then it can look like there was a default value set for the field, even when the field itself does not have a default set.
Two things lead to this being overlooked:
I have seen this issue at 2 different locations now and it can cause some pretty severe head-scratching.
Workflow Code or Custom Event Handler Code
Through workflow coding or custom event handler code there could be situations where the code would examine the values of certain custom fields when the project is initially saved and then make decisions about the values of other custom fields. An example of this is if a project is created and the user picks “Washington” as the value for the ‘Location’ field. The code might be set to assign a certain value for an Account Manager” field based on the project being located in Washington state. For some users that do not know about this coding it might appear as if there were default values on some fields.
This type of coding is much more common now in 2010 and in most cases users and certainly the administrators are likely to know about these kinds of changes. In my experience the most common cause for confusion about mystery ‘default’ values is going to be from a template on an EPT.
Some old buddies of mine from the Microsoft Consulting Services EPM team went NUTS and generated about 200 super high quality pages about Project Server 2010 reporting. Blaise Novakovic, Jean-Francois LeSaux, Steven Haden, and Amit Abrol outdid even the high standards MCS sets. Nice work guys!
One of the hardest questions I am asked is not one I get ‘on the job’. It is the one I get all the time from family, friends and people I meet at my kids basketball games: “So, what is it that you do for a living?”
For a long time I struggled with a short, accurate yet meaningful response. “I’m a project manager” is too general. “I deploy project management software” is accurate but is a little bit vague for most people.
What I have started saying is “I work with companies on the best ways to manage their projects and resources using Microsoft Project and Project Server.” If their face goes blank and they start looking for a way to escape I leave it at that. If they seem interested in knowing more I break into the more detailed version: “I learn how they decide which projects to do, how they manage them and how they use their people to work on them. Then I work with them on streamlining some of those processes and then on how to model those processes in the software.” By that time even people that love me are ready to talk about something else and I don’t blame them. What we do as Project Server consultants lacks the mass-appeal of a game developer but for our own purposes it is worth examining what it really IS that we DO.
In no particular order:
So this list is OBVIOUSLY not complete. I’m hoping to generate some comments from the community to round it out a bit. What are your additions to this list of what it means to be a Project Management Software or Project Server consultant?
I am happy to announce that I have accepted a position as a Senior EPM Solutions Architect with DeltaBahn, LLC. This is a Microsoft Project Partner that was created and is run by many of the people I was working when I was at Microsoft Consulting Services.
I VERY MUCH enjoyed my time with forProject Technology. They are a great team with some amazing new products coming out around earned value management and DCMA compliance work. If you have needs in those areas definitely give them a call. However, as much as I enjoyed working with forProject, I could not pass up the opportunity to go and work the the guys from my old Microsoft team.
Let me know if your company needs help deploying Project Server or getting more out of your Project Server deployment. You can reach me at firstname.lastname@example.org