First real world 2010 issues..

Been very quiet on this blog the last couple of weeks, largely due to the fact that I’ve just kicked off my second PS2010 project (this one for one of the big mobile network management companies), while at the same time being in the thick of the first round of system testing for my first 2010 project!

I’ve got a handful of things I wanted to blog about but let’s start with some issues that I have come across, some of these I plan to log with MS, however none were really bad enough to cause any major concern.

 

1. Workspace Template Risks List ‘Exposure’ Unexpected Error

When you create a blank template site (not linked to a project) an ‘Unexpected Error’ will occur when you try to edit the field behind the default ‘Exposure’ field. This doesn’t happen when the site is linked to a project through the normal project creation.

Fortunately the standard calculation (Consequence * Likelihood) is all that I usually use anyway so this is a non-issue.

 

2. No Spaces Between Tasks when using PWA online editing

This one is causing some frustration, basically the Project Web App online editing does not support blank lines between tasks at all. Rather annoying as just about everyone I know uses spaces to make large projects more readable.

 

3. BCM Project Professional 2007 Crash when spaces exist between tasks

This one is related to #2 above, if you save a project template containing spaces between tasks (blank lines) and associate it with an Enterprise Project Type, then it seems when in BCM mode attempting to open a project created by that type will cause problems for Project 2007 client, but not 2010.

I didn’t fully test this one out to find if there are any other factors, but after removing the blank lines from my templates both this and #2 were fixed.

 

5. Project Client version restriction ignores CU build numbers

This one is more of an annoyance, it seems that the new feature in server settings to restrict the version number of connecting Project Pro clients only recognises major build numbers, ie Service Packs. Meaning that trying to force all 2007 clients in BCM mode to run at least Feb2010 CU will be just as troublesome as it always was.

 

5. Project Template used by EPT with Budget Resources assigned causes failure to create project

This is probably the worst issue I have found, I like the Budget Cost feature but it doesn’t seem to be the most widely used feature if an issue like this can slip through testing. I’m probably going to log this one with MS, but for this particular customer we simply modified our procedures to work around it. Here is my full issue description:

Issue:

Attempting to save an Enterprise Template and associate it with an Enterprise Project Type when the template includes Budget Resources assigned to the Project Summary Task causes a failure in the project creation queue job(s).

Environment:

Project Server 2010 RTM

Project Professional 2007 or 2010

Reproduction Steps:

  1. Create a new blank project in Project Professional
  2. From Tools – Options menu select ‘Show Project Summary Task’ (or equiv ribbon in 2010)
  3. Select Resource Sheet view, then add a single Cost Resource named ‘Test’
  4. Double click the resource to edit properties, and select ‘Budget’ to set the resource as a Budget Cost resource
  5. Assign the Test resource to the Project Summary Task
  6. Save As  to save as an Enterprise Template named ‘Test Template’
  7. Open PWA, go to Server Settings – Enterprise Project Types
  8. Create a new Project Type as follows;
    1. Name: Test type
    2. Workflow: No Workflow
    3. New Project Page: Proposal Details (or anything else)
    4. Project Plan Template:  Test Template
    5. All other values default
  9. Select Project Centre, New Project – “Test type”
  10. Enter the details and Save

Result:

Queue job fails with the following error:

Datasets:

ProjectDataSet

Table Assignment

Row: ASSN_UID=’18a3ec42-a1ad-415b-9e38-5b822f38750e’ PROJ_UID=’09c32ca4-5d86-4b0b-91f0-21e8abe97e3c’

Error TaskNotFound (7021) – column

General

Queue:

GeneralQueueJobFailed (26000) – ProjectCreate.ProjectAddToMessage. Details: id=’26000′ name=’GeneralQueueJobFailed’ uid=’b6640d9d-36ab-496d-b210-7b765ea852ea’ JobUID=’abf46cad-10b1-4e7c-94b8-6beeb76b30c5′ ComputerName=’AU-GLB-MSP04′ GroupType=’ProjectCreate’ MessageType=’ProjectAddToMessage’ MessageId=’1′ Stage=”. For more details, check the ULS logs on machine AU-GLB-MSP04 for entries with JobUID abf46cad-10b1-4e7c-94b8-6beeb76b30c5.

Share and Enjoy !

Shares

Database names in SharePoint 2010

With SharePoint 2010 adding a good number of new databases to the default configuration one thing that is sorely missing is the ability to easily name those databases.

Is it just me who has to conform to strict database naming conventions in most installations of Project Server?

I’ve just been working on what I think is a pretty typical Project Server 2010 installation and found that in-order to simply prefix my databases names with something rather than let them be automatically named with a GUID I faced the following:

  • Central Admin and the farm configuration is the same as 2007, the PSCONFIG command line will let you name both of those databases.
  • Session State Service Application – the first hurdle, this one requires a PowerShell command to give the database a name, e.g.:

$serviceApp = New-SPStateServiceApplication -Name "State Service"

New-SPStateServiceDatabase -Name "MyPrefix_State_Service" -ServiceApplication $serviceApp

New-SPStateServiceApplicationProxy -Name "State Service" -ServiceApplication $serviceApp –DefaultProxyGroup

  • Secure Store Application – Central Admin fortunately will let you name the database through the usual creation process.
  • Search Service Application – Next hurdle and this one much bigger, three databases are required now for the Search service; Administration, Crawl and Property databases are created, this blog post has a nice PowerShell script to create the service with named databases but with 50 odd lines for the script I’m not going to repeat it here. Fortunately if you’re happy with not naming just one of those three databases, it is actually possible to create new Crawl and Property databases with specified names after creating the three using Central Admin.
  • PerformancePoint Service – Well for this one I have not found a way to name the database?! I need to revisit this as there must be a way, but looking at the PowerShell command line options and searching TechNet I couldn’t find one!
  • User Profile Service, Excel Services and WSS Usage are all well behaved and through Central Admin you can name the databases.

So it’s about time to get that installation PowerShell script done, as unless your happy with the default wizard configuration then this setup is getting quite long “just” to get Project Server 2010 installed.

Share and Enjoy !

Shares

SQL Reporting Services 2008 R2 Required for SharePoint 2010 Add-in

Found this one out the hard way this week; it seems that currently the only supported version of SSRS for the SharePoint 2010 SRS Add-in is SQL 2008 R2. At least one forum poster from MSFT has confirmed this.

Annoying as it can be surprisingly hard enough to convince customers to install Windows 2008 let alone upgrade their SQL servers! Ah, well at least SRS can be separated from the SQL DB servers making it a bit easier.

Update 12/07: This has now been addressed by Microsoft in the SQL 2008 SP1 CU8 release which adds support to reporting services 2008 to work with the R2 add-in.

Share and Enjoy !

Shares

First Full 2010 Configuration Round-up

As I’ve been deep in the world of Project Server 2010 configuration this week, I thought I’d share a quick round up of the cool things I have noticed:

  • Ability to edit custom fields in PWA without Pro client running.
  • Project and Task Custom Fields update when project edited in PWA (Except for the first time usually).
  • SharePoint 2010 Workflows have been updated, they are quite nice; for example the approval workflow is now able to do multi-level serial / parallel approvals, etc.
  • Saving new Workspace templates is so so easy now! Just save site as a template, then go to your project type and select the new template!
  • PDP’s rock – ‘enuf said.
  • BI Centre is great, but so much more time will be needed (at least at first) in getting the reports you need. The flip side is that the reason why so much more time is needed is because you can get so much more out of them!

More to come in the coming days / weeks as it looks like client number 2 is going to kick of a 2010 implementation in the next week or so. Exciting times..

Share and Enjoy !

Shares

Quickly Updating the Default BI Data Connections

As you’ll quickly find in Project Server 2010, if you want to use the default Business Intelligence Center data connections then in order to include your own custom fields, then you’ll need to update the connectors. Here’s a quick guide on doing that to get to that data for your first Project Status Report.

Before I get into it don’t forget that the OLAP connections are automatically created, so in many cases you can use those, but if you’re like me and prefer direct reporting from the Reporting Database then you’ll have to create your own connections.

Step 1: Start from an existing connection file

For this I am going to use "Project Server – Project and Task Data" from the default location "BC CenterData Connections – English (…)", find the existing file and save it somewhere locally using the Send to – Download a Copy option.

clip_image001

Now open that ODC file in Notepad and you’ll see the XML contents and hopefully the important part the section labelled <odc:CommandText> where the SQL "SELECT …" statement is, that’s what we need to change to include our custom fields.

Step 2: Add your Custom Field details using SQL Management Studio

Using SQL Management Studio is the easiest way to confirm that you have the right field names to add to the query, to do that find your ProjectServer_Reporting database and in particular what you will want is the View named dbo.MSP_EpmProject_UserView (or one of the others if you want task or resource fields). Select the view and using the ‘Select Top 1000 Rows’ option to generate a SELECT query returning all data.

 

clip_image002

You’ll end up with something like this:

/****** Script for SelectTopNRows command from SSMS ******/

SELECT TOP 1000 [ProjectUID]

,[ProjectName]

[ …. Snip lots of built in fields….]

,[ProjectBaseline10Duration]

,[Project Departments]

,[Sample Business Need]

,[Sample Areas Impacted]

,[Sample Proposal Cost]

,[Sample Compliance Proposal]

,[Sample Assumptions]

,[Sample Goals]

,[Sample Post Implementation Review Date]

,[Sample Post Implementation Review Notes]

,[Sample Proposed Start Date]

,[Sample Proposed Finish Date]

,[Sample Approved Start Date]

,[Sample Approved Finish Date]

FROM [PWA_ProjectServer_Reporting].[dbo].[MSP_EpmProject_UserView]

The nice thing is in the views all the custom fields are listed last, as you can see from above the out of the box ‘Sample’ fields are all there to see. So next you just have to copy those field names into the ODC file opened earlier and save your changes.

Step 3: Update the ODC file

The only catch with updating the ODC file as you probably noticed is the format includes the view or table name prefix, such as:

MSP_EpmProject_UserView.ProjectBaseline10FinishDate as [ProjectBaseline10FinishDate],
MSP_EpmProject_UserView.ProjectBaseline10Duration as [ProjectBaseline10Duration],

So all you need to know is that unless your changing the name you don’t need the bit after ‘as’, so if you search and replace to prefix each of your custom fields to add the "MSP_EpmProject_UserView." before the "," so you end up with something like:

,MSP_EpmProject_UserView.[Sample Business Need]
,MSP_EpmProject_UserView.[Sample Areas Impacted]
,MSP_EpmProject_UserView.[Sample Proposal Cost]

Now the last step is to paste those lines into the ODC file in Notepad, but note that the commas are at the start not the end, so you just need to make sure that when you paste the new lines that you have just one comma between each line except for the last line before the "FROM". You should end up with something like this:

MSP_EpmTask_UserView.TaskBaseline10Duration as [TaskBaseline10Duration],
MSP_EpmTask_UserView.TaskBaseline10DurationString as [TaskBaseline10DurationString],
MSP_EpmTask_UserView.[Health] as [Health]
,MSP_EpmProject_UserView.[Sample Business Need]
,MSP_EpmProject_UserView.[Sample Areas Impacted]
,MSP_EpmProject_UserView.[Sample Proposal Cost]
FROM
dbo.MSP_EpmProject_UserView
INNER JOIN dbo.MSP_EpmTask_UserView ON
MSP_EpmProject_UserView.ProjectUID = MSP_EpmTask_UserView.ProjectUID
ORDER BY
MSP_EpmProject_UserView.ProjectName,
MSP_EpmTask_UserView.TaskIndex,
MSP_EpmTask_UserView.TaskName
</odc:CommandText>

Step 4: Upload the new ODC file to your Data Connection library

Now your just about done, save the file and back in your BI Center upload the file to a new location, make sure that you don’t try to overwrite the default file as those may be replaced by future service packs, I upload them directly into the Data Connections library.

Once uploaded you can now use them in Excel as normal. You might want to update or copy the existing templates and edit the data connection properties to point to this new ODC file, or otherwise just add them in as you normally would and carry on..

Share and Enjoy !

Shares

Project Workflow Approval Task Form link problem

I’ve been working on a full end-to-end demand management workflow over the past couple of weeks and unfortunately as RTM is due any day now, much of the final documentation is still not public, meaning that some things just need to be figured out.

One problem that I found is the custom workflow task form, which has a very useful "Review project details" link on it. However if you have used Microsoft’s demo2010a image, then you’d see that for all of the workflow’s the link initially does not work. (See image)

clip_image001

 

Fortunately this one was relatively easy to guess, thanks MS for making it quite obvious!

Firstly a custom workflow task content type called PSWApprovalTask is created by default in the PWA site "Project Server Workflow Tasks" list, here’s what it looks like out-of-the-box:

clip_image002

 

Interestingly though, it is not by default added to the list content types, BUT if you run through the Sample Proposal Workflow once then you will see it appear in the list automatically. For the purpose of this just use the ‘Add from existing site content types’ option in List Settings to add it:

clip_image003

 

Now another interesting thing is apparent on the list settings page:

clip_image004

 

Specifically Microsoft has pre-defined three Columns named: Project Name, Project Owner and ProjectUid (and some others..), however they are not added to the content type by default either, but they are used in the views including the default My Tasks.

To the point:

Now getting to the point of this post, if you use the content type and populate all of those fields then the task approval page will work as expected! Specifically the ProjectUID Column needs to be populated with guess what: the Project’s GUID, once that is done then the link works as expected!

Too easy!

Well unfortunately not. The Visual Studio Workflow Activities included with Project Server 2010 gives you the very handy ReadProjectProperty action, however while having a choice of either reading a Custom Field based on GUID or a pre-defined built in field based on name, it does not include Project GUID. This is where it gets complicated.

The “simple” solution is to use PSI, then using something like this nice little method created by Chris Boyd you can retrieve the GUID by providing the Project Name using PSI method ReadProjectStatus.

Unfortunately having to use PSI in what otherwise could be a very simple SharePoint workflow in my opinion is clunky, it would be very nice if MS could add the Proj_UID property to the ReadProjectProperty action!

If you’re interested, based on Chris’s blog post linked above, here is an extract of my code to get all of those fields working (Note that this plugs in nicely to my last code post: Extending the Branching Workflow):

// Declare your PSI Stuff
private static WebSvcProject.Project project = new WebSvcProject.Project();

private void createTask_InitApproval(object sender, EventArgs e)
{
    [… insert your other required task attributes …]
    taskProps.ExtendedProperties["Project Name"] = Proj_Name[0];
    taskProps.ExtendedProperties["Project Owner"] = Proj_Owner_Name[0];
    taskProps.ExtendedProperties["ProjectUid"] = GetProjectUidFromProjectName(Proj_Name[0]);
}
public static Guid GetProjectUidFromProjectName(string projectName)
{
    Guid projectGUID;
    project.Credentials = CredentialCache.DefaultCredentials;
    WebSvcProject.ProjectDataSet readProjDs = new WebSvcProject.ProjectDataSet();
    readProjDs = project.ReadProjectStatus(
        Guid.Empty,
        WebSvcProject.DataStoreEnum.WorkingStore,
        projectName,
        0
        );
    if (readProjDs.Project.Rows.Count == 1)
    {
        projectGUID = new Guid(readProjDs.Project[0].PROJ_UID.ToString());
    }
    else
    {
        throw new Exception("No Project by the name: " + projectName + " Found");
    }
    return projectGUID;
}

Enjoy!

Update 4/08/2010:Check the comments below for a much easier way to correct this issue, without the use of PSI.

Share and Enjoy !

Shares