The steps to customize and use different Project Site templates (the entities formerly known as Project Workspace templates) have changed for 2010, and the ways you can use them with the new Enterprise Project Templates has introduced more change. I thought I’d explain how these can be created, what customizations will work – and which will break things, what limitations you will see with the reporting data for modified sites and how they can be consumed. I'll show screen shots as I go along too.
The first thing is to create a new site that you will customize to become your new template. For this the easiest way is to go to Site Actions (top left of PWA page) New Site
then make sure you choose Microsoft Project Site from the available sites, give it a title and URL name and click Create. note in this screen shot I have scrolled down the page a little.
Once created then you can customize (almost) to your heart’s content. This assumes your heart’s content does not want to delete or duplicate any of our built-in lists, or change the type or delete any of our built-in list’s columns. For this example I will add another list, a document, add some columns to the Risks list and also change the choices for the Issues Status column.
But first, I’ll change the theme and color. Site Actions, Site settings, (Look and Feel) Site Theme will take you to here:
I’m going to choose Modern Rose, and scroll down and click Preview, which pops open a new windows like so:
which will do for demonstration purposes… So I now click Apply on the original screen (down the bottom), and continue my customization. I will add a column called Tracker. All Site Content (bottom of left nav) Create, Filter by List and choose Custom List, with a Name of Tracking and click Create.
I will leave my list as it comes, but usually you’d want to add other columns and views too. Next I add a document to my Project documents library – Project Documents, Add document (I think I can skip a picture or two) and then just browse and upload:
Next, for my Risks List I add a column called Triage. Risks, then select the List tab in the List Tools ribbon element, then List Settings:
Scroll down the resulting page,and click Create column
I’m just calling mine triage and taking all the defaults, which also adds it to the default view – not much to see there:
Finally we will go to our Issues list and add another value to our Status choices. Issues, List tab, List Settings, then click on the Status column. I’ve added on hold and renumbered the list accordingly.
That’s my customization finished, so no to save and re-use. Site Actions, Site Settings (Site Actions) Save Site as template.
Give it a File Name, Name and description, and check Include Content, then OK.
Then go to Site Actions, Site Settings, (Galleries), Solutions (or use the hyperlink on the “Operation Completed successfully’ screen and you will see your new Template is Activated! It will now be available both as an option within the default Project Site provisioning Settings option under PWA Server settings. In this screen shot I have actually chosen my SampleTemplate template (I couldn’t get the drop down in a screen shot…)
*** Update *** I discovered going through this process that the following setting is really redundant. All projects created will get the setting from the an Enterprise Project Template, and not this setting. Out of the box the Basic Project plan is the default for PSI or Project Professional plans. Changing the template here will do nothing. ***
It will also be available for either existing Enterprise Project Templates, or new ones, in the drop down at the foot of the EPT page:
Now, lets use my new template and see what we get. First I’ll set my Basic Project plan EPT to use my new SampleTemplate, then I'll create a new basic project plan called SampleTest and publish to get my new site. As you can see from my queue list it all went through, so I haven’t broken anything.
And here is my site!
I have my document
You can already see my new tracking list, and here if I add a new Issue I can choose my new On hold status.
The really cool thing is that my On hold status has flown right through to the reporting database WITHOUT HAVING TO PUBLISH THE PROJECT! And this was a custom addition choice for the field. This from my Excel sample template from the Business Intelligence Center – hardly the most inspiring report – but I was pleased to see it work!
So some gotchas:
Most of these gotchas will cause problems with reporting – so if doing heavy customization always monitor the queue to see exactly what works (and what breaks things!) with the Reporting jobs. Look in the ULS logs for further information if you see failures.
If a site template is created under one provisioned PWA instance, it is then available to that instance only. How do you then utilize it for other instances on same or different hardware?
Great question bpettersen. I had to have a play around with this one, and will do another blog posting with the full details and somne screen shots, but basically you need to go to Site Actions, Site Settings on the site where you do have the custom site template working, and then click Solutions in the Galleries section. Right click the name of the template you want to have on another site and select .Save target as'. This will allow you to save a wsp file. Now you go to the same location (Solutions gallery) in the site where you would like to use this template and select the Solutions tab and then Upload Solution. Browse to the location you saved the .wsp file and once uploaded click Activate in the dialog that comes up. You will then need to associate it with an Enterprise Project Template to be able to create sites. On one of the sites I tested on I did get a failure when creating a new site and the error pointed to a feature that was not activated - I used the Powershell command enable-spfeature with the Identity set to the GUID in the error, and the URL of the site collection where I was trying to use the feature and all was well. On another site I didn't need to go this, so not sure why at this time.
If your site template has other features incoorporated then you might need to do similar steps.
Thanks for the post. When using a field such as the Trigger field (and you have "Date" as one of the options to chose from)..is there any way that when the user choses the date field, they are forced to fill in a date? This does not seem possible, but will we be able to do custom development to enforce this, or could that be problematic? Thanks, Megan.
We have applied your solution suggestion for create site template but we could not see the created template in this "default project site settings" field.
This template is in activated status. Why we do not see this template ?
Hi Mehmet, have you added it to the right site? Adn did you start with a project site template? Either of these could be the issue.
I followed the steps above and have modified the default project site template and the one for a basic project. In server settings - project sites I see some existing projects that do no yet have a project site. When I select such a project and click Create Site, the new site does have the standard layout, not my new modified layout. What did I do wrong?
Thanks, Marcel Visscher
Hi Marcel, I haven't tested this but guess that the exisitng plans have a relationship to the original EPT. Perhaps re-associating them would resolve this? Or you could create a site manually and then associate. Are things working for new projects?
Obviously you can no to all your customisations all in one go. How do you go back to edit/modify your new saved SampleTemplate site template?
I can not find where to open-edit an existing site template.
There isn't an easy way to make updates, and these wouldn't get applied to existing sites. You could create a sample from the template and use that for making further updates - repeating as necessary.
Thanks for the post. It helps a lot. In the gotchas, you said that newly added lists etc. would not be passed to the reporting database without extra work. Could you explain what needs to be done or direct me to a posting showing how to get the information onto the reporting database? I want to do add a list and have it, along with the issues and risks on a progress report.
I don't have any references for the work involved in adding lists and getting the data into the reporting DB - perhaps I should have more correclty said 'you are on your own'. You would probaly be safest to create your own tables and use some SharePoint events to update them, as what Project does out of the box is not extensible.
I followed the steps above to create a new site. I added a new custom list called "Stakeholders" with a few new columns, and I added an Excel file to the document library. I created the template, assured that it was active, and edited the EPT to point to the new template.
I created a new project and I get the error below.
When I go back to the EPT and set it back to the "Microsoft Project Site" It works fine, but I obviously don't get the items I would like included in the template.
CreateWssSiteContent: Creating project site failed! Project Uid=587203a0-7115-4a62-8296-4f5fa045f645, site URL=projects.xxxx.xxxx.com/.../CE Test Project 2, site name=CE Test Project 2. System.Runtime.InteropServices.COMException (0x8107058A): <nativehr>0x8107058a</nativehr><nativestack></nativestack>Microsoft.SharePoint.SPException at Microsoft.SharePoint.Library.SPRequestInternalClass.ApplyWebTemplate(String bstrUrl, String bstrWebTemplateContent, Int32 fWebTemplateContentFromSubweb, Int32 fDeleteGlobalListsWithWebTemplateContent, String& bstrWebTemplate, Int32& plWebTemplateId) at Microsoft.SharePoint.Library.SPRequest.ApplyWebTemplate(String bstrUrl, String bstrWebTemplateContent, Int32 fWebTemplateContentFromSubweb, Int32 fDeleteGlobalListsWithWebTemplateContent, String& bstrWebTemplate, Int32& plWebTemplateId)Microsoft.SharePoint.SPException: Microsoft.SharePoint.SPException ---> System.Runtime.InteropServices.COMException (0x8107058A): <nativehr>0x8107058a</nativehr><nativestack></nativestack>Microsoft.SharePoint.SPException at Microsoft.SharePoint.Library.SPRequestInternalClass.ApplyWebTemplate(String bstrUrl, String bstrWebTemplateContent, Int32 fWebTemplateContentFromSubweb, Int32 fDeleteGlobalListsWithWebTemplateContent, String& bstrWebTemplate, Int32& plWebTemplateId) at Microsoft.SharePoint.Library.SPRequest.ApplyWebTemplate(String bstrUrl, String bstrWebTemplateContent, Int32 fWebTemplateContentFromSubweb, Int32 fDeleteGlobalListsWithWebTemplateContent, String& bstrWebTemplate, Int32& plWebTemplateId) --- End of inner exception stack trace --- at Microsoft.SharePoint.SPGlobal.HandleComException(COMException comEx) at Microsoft.SharePoint.Library.SPRequest.ApplyWebTemplate(String bstrUrl, String bstrWebTemplateContent, Int32 fWebTemplateContentFromSubweb, Int32 fDeleteGlobalListsWithWebTemplateContent, String& bstrWebTemplate, Int32& plWebTemplateId) at Microsoft.SharePoint.SPWeb.ApplyWebTemplate(String strWebTemplate) at Microsoft.SharePoint.SPSite.CreateWeb(String strUrl, String strTitle, String strDescription, UInt32 nLCID, String strWebTemplate, Boolean bCreateUniqueSubweb, Boolean bConvertIfThere, Guid webId, Guid rootFolderId, Boolean createSystemCatalogs) at Microsoft.SharePoint.SPSite.SPWebCollectionProvider.CreateWeb(String strWebUrl, String strTitle, String strDescription, UInt32 nLCID, String strWebTemplate, Boolean bCreateUniqueSubweb, Boolean bConvertIfThere) at Microsoft.SharePoint.SPWebCollection.Add(String strWebUrl, String strTitle, String strDescription, UInt32 nLCID, String strWebTemplate, Boolean useUniquePermissions, Boolean bConvertIfThere) at Microsoft.Office.Project.Server.BusinessLayer.Admin.CreateSPWeb(SPSite topSite, String spWebUrl, String spWebName, String spWebDescription, String spWebLogoUrl, Int32 webTemplateLCID, String webTemplateName, String& errorMessage):
WSSCreateSiteFailure (16400). Details: id='16400' name='WSSCreateSiteFailure' uid='9f5e4d7c-aede-4b1a-aeac-d0f85ca50a50' projectUID='587203a0-7115-4a62-8296-4f5fa045f645' workspaceUrl='projects.xxxx.xxxx.com/.../CE Test Project 2/CE Test Project 2' projectWorkspaceName='CE Test Project 2'.
GeneralQueueJobFailed (26000) - CreateWssSite.CreateWssSiteMessage. Details: id='26000' name='GeneralQueueJobFailed' uid='6e8841ab-e9b7-4baa-94b5-4d09d7ebdb25' JobUID='34e16dde-d11d-492f-b82b-2e7298aafeeb' ComputerName='xxxxSP10PS1' GroupType='CreateWssSite' MessageType='CreateWssSiteMessage' MessageId='1' Stage=''. For more details, check the ULS logs on machine xxxxSP10PS1 for entries with JobUID 34e16dde-d11d-492f-b82b-2e7298aafeeb.
I created project site template .
But i cannot add project web apps webparts like project details , milestone etc...
I have no problems with customized templates for EPT's. However, when I use the "Create site" in "Server settings/Project Sites" the build-in template is used. Do you know how to change this to one of my own templates?
Hi Lars, If you set your template in the Default Project Site Template drop down on the Project Site Provisioning Settings page then it should get used in place of the built in one. Let me know if this does not work for you.