Changing Master Page for SharePoint 2010 Blog Site (Workaround)

So I thought I'd share a quick find with you regarding 2010 blog sites (and may apply to other templates as well). I tried to search for a fix for this but search engines and searching for “SharePoint 2010 Blog master page” proved unsuccessful.
I created a blog site and from site settings changed the master page to a custom developed page (having to enable publishing features to be able to do this through the UI). After applying the master page change the new master page did not render on the blog site.
With credit to my colleague Inderjit Singh (Link to Linkedin) the workaround is to apply the custom master page to the system master page section. This master page setting is for all application pages and site settings pages as shown below.
image
At this point I must stress that applying the master page to the system may cause many knock-on effects and further testing of each application page will be required to satisfy using and suggesting this to a client and could cause a lot more work with regards to styling.
I strongly believe this is not by design behaviour and have raised this with MS and will as always keep you posted.
Further information about the blog template
Each page in the blog site contains a reference to default.master (known as a token) as show below:
~masterurl/default.master
Changing this reference to custom.master as shown below will render the custom master page selected in the site master page section (shown in the screen grab above):
~masterurl/custom.master
The issue of changing this on each page means that each page becomes un-ghosted potentially causing issues later on and i would strongly advise against recommendations in other blogs to edit the pages directly on the file system as this will fix the issue short term but will cause more problems in the long run.
*** Update 18/05/11 ***
After numerous diagnostic tests I was provided with a support KB that was applicable to MOSS 2007 http://support.microsoft.com/kb/936908. The KB suggests two ways to work around the issue. One of these was to simply enable the publishing feature on the site you need to modify the master page (well you have to do this anyway to be able to change the master page through the UI) and this didn't work. The other option was what I described in my original post above which was to change the system.master which I have explained the issues this could cause by doing so.
This case has now been closed with Microsoft on the basis I have been informed that the blog functionality is classed as collaboration (and not publishing) functionality.
After writing various paragraphs here on my view of the above outcome of the case I felt these were best removed!
I welcome your comments and feedback.

Managed Metadata changes not applied to list items after term change

So scenario is that you have a SharePoint 2010 managed metadata term store up and running and you need to make a change to one of the terms. Lets just say that you have spelt one of the terms wrong and need to update it on all items you have added that have selected this misspelt term.

In my example I have a list of countries in the term store and have spelt England wrong and is spelt Egnland.

Jumping a few steps ahead I have a simple list created with a managed metadata property as shown (Noticing the Tag is spelt incorrectly).

image

So once the item is committed to the list it will look as shown below.

image

Navigating back to the term store you make an update to the incorrectly spelt term.

image

After updating and saving the term navigating back to the list you assume that this change should reflect on the list item. Wrong! A timer job needs to be run to update this on list items.

The timer job in question is the Taxonomy Update Scheduler and this runs every hour. You can manually run this timer job from central admin to force an update making sure that you run the timer job associated to the web application where your list is stored.

Once the timer job ran the list automatically updated (within a matter of seconds).

image

Adding a custom User Profile Property to SharePoint 2010

This one recently caught me out when creating a custom user profile property and thought I'd share this.

To create a custom user profile property navigate to the the User Profile Service Application –> Manage User Profile Properties and click on New Property.

image

On the New Property page where you enter all the configuration of the property type right at the bottom there is a ‘Add New Mapping’ section which is where you would sync and connect this to your data connection (noting that my data connection had been removed from view below).

image

The requirement for my property was simply to be a string value with no connection to a data source and the above section confused me that I needed to add a property regardless. This is not the case and you do not have to add a property at this point for the creation to be successful.

image

Should you need to add a property mapping to a data source above shows how it looks (again my data connections have been removed).

There are many different mappings that can be configured for creating these properties however my post was simply to make you aware of what caught me out.

Reference: http://technet.microsoft.com/en-us/library/cc262327.aspx

Installing (French) language pack causes Event ID 6464 UPS issue and access to check timer jobs errors

I’ve just installed the French language pack to carry out some testing for page variations (http://technet.microsoft.com/en-us/library/cc262404.aspx).

I followed the process of installing the language pack and then running the wizard (PSConfig) and all seem to run well apart from I was guessing it ran well as frustratingly the wizard is all in French and my French is a little rusty to say the least.

My next step was to setup a variation within SharePoint and all went well, apart from the fact that the timer job for variations runs between midnight and 3 am so I went to manually run the timer job and was presented with the friendly error message ‘Operation is not valid due to the current state of the object

Capture 

Ok so next step was to do the usual, IISRESET then reboot then re-run PSConfig. Still no joy, so next step was to check the logs and event viewer which showed the error and was referring to the User Profile Application Language Synchronization Job.

Capture2

Referring back to my earlier comment about my French translation it seems that it did not complete the install properly thanks to @givenscj for his suggestion that the language may have failed (I have to say it is strange that just because I’m installing a French language pack it is assumed I as the admin know French which clearly I don't! So this didn't help the matter!).

I reinstalled the language pack to no avail and still had the same issues UPS error and couldn't check my timer job.

Again ran IISRESET and still no luck. So as I was working on a test environment I was feeling ruthless and deleted the User Profile Service and again no joy.

Brian Lalancette suggested forcing a PSConfig with the command:

PSConfig.exe -cmd upgrade -inplace v2v -passphrase <FarmPassphrase> -force -wait

This popped up a VS2010 debug window.

image

Not being a developer this wasn’t of great use to me so the last option I had left was to update the farm to December 2010 cumulative update (http://support.microsoft.com/kb/2459257).

I attempted to revert back to my original install but to no avail. My next step was to check the ULS logs and found the following entry:

System.InvalidOperationException: Operation is not valid due to the current state of the object.  
at Microsoft.Office.Server.Administration.UserProfileApplicationJob.get_UserProfileApplication()   
at Microsoft.Office.Server.Administration.UserProfileApplicationJob.get_DisplayName()   
at Microsoft.SharePoint.ApplicationPages.JobDefinitionsDataSourceView.AddRow(SPJobDefinition jd, DataTable table, DataSourceSelectArguments selectArguments)   
at Microsoft.SharePoint.ApplicationPages.JobDefinitionsDataSourceView.AddService(SPService service, DataTable table, DataSourceSelectArguments selectArguments)   
at Microsoft.SharePoint.ApplicationPages.JobDefinitionsDataSourceView.AddFarm(SPFarm farm, DataTable table, DataSourceSelectArguments selectArguments)   
at Microsoft.SharePoint.WebControls.TimerJobDataSourceView.FillDataTable(DataTable table, DataSourceSelectArguments selectArguments)   
at Microsoft.SharePoint.WebControls.DataTableDataSourceView.Select(DataSourceSelectArguments selectArguments)   
at Microsoft.SharePoint.WebControls.AdministrationDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments)   
at System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback)   
at System.Web.UI.WebControls.DataBoundControl.PerformSelect()   
at System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound()   
at System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls()   
at System.Web.UI.Control.EnsureChildControls()   
at System.Web.UI.Control.PreRenderRecursiveInternal()   
at System.Web.UI.Control.PreRenderRecursiveInternal()   
at System.Web.UI.Control.PreRenderRecursiveInternal()   
at System.Web.UI.Control.PreRenderRecursiveInternal()   
at System.Web.UI.Control.PreRenderRecursiveInternal()   
at System.Web.UI.Control.PreRenderRecursiveInternal()   
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

I found the TechNet forum below where someone else has experienced this issue but with no luck resolving this: http://social.technet.microsoft.com/Forums/en-US/sharepoint2010setup/thread/45cd502a-580d-49ab-85bb-e5ab10294474.

If anyone has any ideas or has resolved this issue feel free to post a comment.

Cannot use SharePoint feature to deploy content types using content type hub functionality when using XML elements

*** Update 11/05/11 ***
Over the last few weeks I have been contacted regarding this post and had contradicting reports that you are in fact able to create a feature to deploy content types to a content hub without the need for the feature to be enabled on each subscribing site collection.
My original issue experienced was also replicated by others once I’d posted this issue so this seems a strange one as since both of us are unable to recreate the issue.
Upon retesting the issue I can confirm that you are able to deploy a feature to a content type hub without the need to enable the feature on subscribing site collections.
Thanks to Chakkaradeep Chandran for following up on this and feeding back his findings.
*** Original Post ***
I’ve recently stumbled across a restriction of using the content type hub in SharePoint 2010 and I am a little surprised by its behaviour. From a quick search around there was very little discussing this so thought I’d post a blog on my findings.
So the plan was to leverage the new content type publishing feature in SharePoint 2010 alongside programmatically deploying site columns and content types using a feature to simplify deployments. Admins and developers of MOSS 2007 will recall that to deploy content types to multiple site collections easily required a feature creating with the necessary customisations. A downside to this was that every time you needed to update the content type you had to redeploy the feature with the updates.
An assumption on my part with the new SharePoint 2010 hub was that when you create a feature to deploy content types all you needed to do was to enable that feature on the content type hub and publish this out to subscribing site collections. Unfortunately it doesn't seem to work this way as subscribing site collections do not receive the published content types and looking at the error log on the receiving site collection states that it it requires the custom content type feature to be enabled which defeats the object as we will be back to the MOSS 2007 scenario mentioned above.
So some thoughts around options available to use to deploy content types to the content hub for successful publishing:
  • Raise it with Microsoft
  • Create a PowerShell script that can receive a maintainable XML input file to update the content types on the hub.
  • Not sure if this is possible but if the feature could be enabled on the subscribing site collection and have a dependency on the ‘Content Type Hub’ feature before deploying the content types.
Thanks to Chris O’Brien for confirming this for me on Twitter. As always I welcome your comments / feedback / findings on this.
*** Update 30/11/2010 ***
After posting my blog entry a great SharePoint community member Nick Hadlee posted a comment with his initial thoughts / frustrations and kindly shared further finding’s based on a quick test he carried out.
So to explain further the way the feature I described above was deployed was using an XML file which requires no code.
Nick pointed out that if you created a code based deployment of the content types using a feature receiver this works. This is effectively the same as using the UI to enter content types / columns.
So to conclude there is a workaround to deploy content types using a feature however this requires coding rather than the XML format.
I did have a thought around enabling the feature on all site collections and then seeing if any updates from the Hub were published however I’m sure this will get messy in the long run as updates and changes are applied.
Credit to Nick Hadlee for his input and also my client who I’m currently working with who has helped in investigating this.
*** Update 10/01/2011 ***
Nick Hadlee has thankfully posted his workaround which can be found here. Again thanks Nick for following this up and hope its useful.