Sharepoint 2010 Site Customization – Approach and How to?

Too often, we always look for tools to solve problems. Many a times we miss out on exploring the options provided by the software/product and straight away jump to tools to design and custom code right away. Just recently, one of my colleague asked me if there are any tools to help customize and brand the website. I told him yes, there are plenty of tools to do that, but suggested that he read the article first before taking any steps. This SharePoint article provides as excellent approach towards customization and branding in SharePoint 2010.

The best thing I liked about this article is the author’s approach towards design:

…. you start your project with the available options in the browser – the SharePoint interface itself. When you run out of options here, you move to SharePoint-supported tools. And when you run out of options here, you move to custom code solutions with development tools.

A must read for all Administrators, Managers and Developers alike.

Happy Customizing and Branding!


Working with project schedule offline in Project Server 2007

Project Professional 2007 enables you to work on a project schedule when you are not connected to Project Server. There are two ways of working offline from Project Server:

  1. Save for Sharing – This option is normally used if you want to share the project schedule with other vendors/users/partners etc who may not have access to Project Server 2007. Here you check out the project schedule -> Save the project schedule as .mpp file -> send it to team via email. Changes received from team can then be imported onto project on Project Server. For detailed step by step instructions, view my blog post here

  2. Offline – Many a project managers, especially consultants, are used to working offline on a slew of documents, including project schedule. So, the question is how do you accomplish this with project server 2007? Below is the step by step instructions for the same.

Step-by-Step instructions for working on project schedule offline:
Step 1: Connect to project server. In this example, I am connecting to Development project server

Step 2: Open the project by clicking “Retrieve the project server”

The example I have used here is Test Project

Step 3: Close the project without checking in (File -> Close). When prompted keep the project checked out.

Now, you Project Managers, can goto beach or board a flight.

Step 4: When disconnected from network, connect to the Project Server instance from which you saved the project and click the WORK OFFLINE button. Work with your project and make the changes you want to make, as illustrated below.

Step 5: When prompted to check-in, click No

Vacation over, You are back in office.

Step 6: Open the project normally by connect to project server, as usual

Step 7: Open the project from local cache

Step 8: Click on File -> Save; File -> Publish and Check-in the project

All the changes that were incorporated offline, should now be reflected on project server.

It took us a while to get this working correctly with our group with good amount of training and education about project server local cache etc. But it definitely pays to understand the differences between Work Offline vs. Save for Sharing vs. Save.

Scenario utilizing “Save as File” feature in Project Server 2007

The preferred way of working with MS Project on Microsoft Project Server for Project Manager is usually a 3 step process (a) build the schedule with the team (b) save the schedule on project server and (c) publish the schedule. But, creating a project schedule in huge outsourcing engagements, with multiple vendors, for multi-million dollar engagement, is not straight forward and takes time. Project Manager can take several approaches to building a schedule in such scenario:

Option #1: Sit with each vendor and document list of tasks. After all the tasks are documented, publish the project schedule to project server. This process is time-consuming before one can see the project on Project Server (esp, the Sr. Mgmt who are in a hurry to view the schedule as soon as project charter/scope is finalized)

Option #2: To satisfy Sr. Mgmt, PM could create an initial draft with milestones and deliverables (usually a shell) and publish this for review by stakeholders. Stakeholders, are anyways interested in milestones vs. day-to-day tasks. PM could then work with individual vendors to build a detailed project schedule. This process takes no less time compared to option 1 but atleast it takes a phased approach is building a project schedule and at the same time provides visibility to Sr. Mgmt.

The challenge with option #2 comes in when vendor is spread across globe. In such cases, PM is forced to send the initial draft schedule and ask the vendor(s) to fill in the placeholders for his tasks. In this article, I want to show you on how to accomplish option #2 using Project Server 2007.

Working with multi-vendors to build project schedule in Project Server 2007:
Assumptions: Vendor does not have access to MS Project Professional 2007 and/or does not have access to Project Server
End goal: is to get the updated .mpp file from vendor(s) with all the updates, onto project server.

Step 1: Launch Microsoft Project Professional and log into Project Server. Create and publish the initial draft schedule (sample illustrated below with placeholder for vendors’ tasks)

Step 2: Download the schedule (PWA -> Edit) and” Save as File” on local machine. Click OK on prompt [The file saved will be sent to vendors for building their tasks in schedule]

Step 3: Send the downloaded schedule to Vendor’s Manager for them to create tasks and assign resources. Remember, the resources added by vendors will all be local resources (see assumptions)

After you receive the updated schedule from Vendor, save the file on local PC.

Step 4: Launch Microsoft Project Professional and log into Project Server. Click on Tools -> Enterprise Options -> Import Project to Enterprise

Step 5: In the Import Project Wizard sidepane, click the Map Resources link.

As you can see, vendor has updated the project schedule with his tasks (Task1, Task2, Task3).

Step 6: In the Map Project Resources onto Enterprise Resources dialog, map every local resource in the .mpp file with enterprise resources in the Enterprise Resource Pool and then click the OK button.

Step 7: Continue to Step 2. Ensure that you see 0 errors on Confirm Resources screen as follows:

Step 8: Continue to Step 3

Step 9: On the Task Field Mapper page, click the Map Task Fields link. In the Map Custom Fields dialog, map each local task field with its corresponding enterprise custom tasks and then click the OK button.

Step 10: Continue to Step 4. Ensure that you see 0 errors on Confirm Tasks screen as follows:

Step 11: Continue to Step 5

Step 12: In the Import Project Wizard sidepane, click the Save As link.

Step 13: In the Save to Project Server dialog, save the project with the same name that you originally created in step 1, and then click the Save button. Confirm prompts regarding calendar.

Step 14: You should receive a message “Congratulations: You have now imported your project into Project Server“

Step 15: In the Import Project Wizard sidepane, click the Save and Finish link.

Step 16: Click File – Publish to publish the project if it is an in-progress project containing actual progress.

Step 17: Click File – Close to the project and check in the project when prompted.

Now the updated tasks by vendor will be reflected on PWA. Repeat the same for adding the tasks and resources from all the other vendors.

Now, you may ask, why just not give permissions for vendor to edit and save project schedule. Sure, that’s one way of accomplishing option 2, provided vendor(s) have access to Project Server and has the required software, in this case MS Project Professional 2007 for editing. But vendors don’t necessarily have the latest a greatest software always (atleast in our case, we were on MS Project 2007 and several vendors’ organizations were still on MS Project 2003). That’s the reason why we went with the approach of sending the .mpp file for vendor for updates.

For us, it’s working perfectly for now, but time-consuming. Hopefully, we’ll get all the vendors on MS Project Professional in near future.

Save vs. Publish in Project Server 2007

Consider this scenario. As a PM, you create your project, publish the project on Project Server 2007 and now you’re ready to let others collaborate with you and so you ask yourself “how do I let others get access to my project?” By default, users who are a part of team (i.e., build team) will be able to atleast view the project schedule on PWA. Many a times, you may want to grant access to resources to be able to just edit/modify the project schedule and save but NOT publish. This is accomplished with changes to category permissions as below (pick a group ->category).

As a PM, maybe you’d like to review the changes first before Publish. But the question is, how do you know if the project schedule’s been modified? Easy … there are 2 fields available to provide you with info on PWA –
1. Last Modified – when the project was last changed and saved, but not published
2. Last Published – just that, last time the project was published
These 2 fields can be added to any views on Project Center indicating when the project was last modified and/or published.

How to add the “Last Modified” and “Last Published” to Project Center view?

Step 1: Click Server Settings -> Manage views

Step 2: In Manage Views, pick a view in project Center. Here, I have picked Summary view for illustration

Step 3: Add the fields and click Save

Now, when you goto Project Center -> Summary view, you should see these 2 columns, indicating when the project was last saved and last published.

In cases when multiple team members (think Global engagement with multiple streams of work with several team leads) are updating the project, it is important to determine if changes were done since you, as PM, last published the schedule.

Forms-based Authentication in Project Server 2007

Project Server 2007 provides 2 mechanisms to authenticate users – Windows-based (widely used against AD/LDAP) and Forms-based authentication. Forms based authentication is mostly users for external users who may need access to project server on need-to-know basis. Forms-based authentication can be configured against an SQL Server database or a LDAP store. This article covers only the forms authentication against SQL Server database.

What is Forms Authentication? User enters a user name and password for access, and is authenticated against SQL membership databases (vs. AD)

High-Level Process:

Detailed Operational Steps:

How to log-in as Form Authenticated user?

Go to the URL for the forms-authenticated site: http://servername:port/PWA. Log on with user name and password.

After this one time setup, additional users can be created in PWA.

Creating users with forms-based authentication is a tedious easy task. DBA’s along-with Technical Administrator of Project Server should work closely to setup Forms-based Authentication.

Client/Browser settings and ActiveX controls required for PWA in Project Server 2007

ActiveX controls are used for certain functionality in Microsoft Office Project Professional 2007 and in Microsoft Office Project Web Access. In secured environments, these controls might not have been downloaded and the user might be prevented from downloading them because of security restrictions. You must download and enable these controls on the client for these features to work. Installation of ActiveX controls are listed below.

In order for the ActiveX controls to work properly, the Office Project Web Access Web site must be added to the list of trusted sites in Internet Explorer [Tools -> Internet Options -> Security -> Trusted Sites]. Uncheck “Require server verification (https:) for all sites in this zone” settings. Pls note that PWA site works only with IE6 or later.

Which ActiveX controls?
Pj11enuc.dll, pjres12c.dll, Pjgrid12.ocx and Pjquery12.ocx
These dll’s are located in cab files – and These cab files are located on server where Project Server is installed, usually, C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\PWA\OBJECTS\1033. Copy these cab files from server onto client machine, extract the cab files, and execute the following commands:

  • regsvr32 dll-name
  • regsvr32 ocx-name

Doing so, will enable one to view all the grids in PWA. A more detailed explanation of these ActiveX controls is listed here.

Project Server 2007: Architecture Overview

Microsoft Project Server 2007 functionality uses a completely new platform built on Microsoft .NET Framework 3.0 and Windows SharePoint Services 3.0. A high-level overview of EPM architecture is depicted below:

The architecture of Project Server 2007 is multitiered. The presentation tier includes Project Web Access, Project Professional 2007, and third-party client applications. The application services tier includes the PSI Web services, the business logic, and Windows SharePoint Services 3.0. The data tier includes the Data Access Layer (DAL) components and multiple SQL Server databases.

Project Server 2007 requires Windows SharePoint Services 3.0. Windows SharePoint Services handles user authentication and is the foundation for all Project Web Access features including site administration, Project Server Web Parts such as Project Center and My Tasks, and project workspaces that include lists of issues, risks, deliverables, and related documents.

The Project Server Interface (PSI) and Project Server events are used to extend and integrate Project Server with other applications.

Few other tidbits –

Excellent deck on Microsoft Office Project 2007 Server Architecture Overview.

An experienced Administrator should be able setup and fully configure Project Server 2007 with about 8 hrs of effort.

Project Server: How to lock down site for Editing?

There are 2 ways to lock the Project Server Site for any changes.

Option 1: Include DisableWebDesignFeatures=”wdfopensite” property in site definition [Refer to Project Server: How to edit PWA site]

Option 2: Configure the permissions in Site Settings
Step 1: Navigate to Project Web Access -> Site Settings. Click Advanced permissions

Step 2: On Advanced permissions screen, click Settings -> Permission Levels

Step 3: Listed on this screen will be 8 default security groups

Step 4: Now, select the group for which you want to lock down the a) List permissions and b) Site permissions. Uncheck the Manage List check box.

Next, uncheck the options for ‘Add and Customize Pages’, ‘Apply Themes and Borders’ and ‘Apply Style Sheets’.

Once this is done, the selected group (i.e. users) will not be able to make any edits to site.

Project Server: How to edit PWA site?

By default, PWA site is locked down for any changes. However, there is a way to edit the main site by changing a configuration file.

Here’s how –
You need to be logged into the Windows 2008 server where project server is installed to execute this command.
1) On the server, open Windows Explorer and browse to the folder that contains the site definition: 
\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\SiteTemplates\site-name\ONET.XML 
In the SiteTemplates folder there are all the template sites used by SharePoint, select the right one for you. 
2) Search for DisableWebDesignFeatures=”wdfopensite” and remove this property
3) Restart IIS
Now, PWA main site, like other sites, should be enabled for editing by tools like SharePoint Designer.

How to edit the site with SharePoint Designer 2007?
I use SharePoint Designer 2007 version because it’s a free download.

1) Launch Designer and Click File -> Open Site -> http://server-name/PWA
2) Click Open
Designer should now load all the content of PWA site – Master pages, Lists, and Project Documents. I have found this feature extremely helpful for changing the look-and-feel of main PWA site, and with bulk check-in of files in Documents section. You need to have Administrator or Project Manager privileges to edit the main PWA site.

If the website is not configured for editing (i.e. DisableWebDesignFeatures=”wdfopensite” property present), then you would get the error message, as below:

Project Server: Migrating Project Server Settings with Project Resource Kit (PRK) Tool

I recently discovered a utility, called PRK tool, to export all the project server settings from Development to Production environment. Often times, when exploring new features I tend to work on development server, ensure that it works, document it and then make a similar change on Production environment. Now with this PRK tool, I am saving tons to time and also backing up server settings on regular basis.

Download from Microsoft Download Center. Few screenshots of PRK Tool is shown below:

If you get the following error while trying to backup the server security settings, you’ll need a copy of Microsoft.Office.Project.Server.Library in the same directory as the PRK tools. It ships in the Project SDK.

ERROR: Could not load file or assembly ‘Microsoft.Office.Project.Server.Library, Version=, Culture=neutral, PublicKeyToken=71e9bce111e9429c’ or one of its dependencies. The system cannot find the file specified.

This tool should ease a lot of migration headaches for Administrators.