Deploying SharePoint Globally – Slides from SharePoint Saturday

Please see below my slides from SharePoint Saturday 12/11/2011.

Thanks for all those who attended, it was a great session.

Are we over complicating SharePoint quotes – maybe!

This blog post is written on the back of lots and lots of quoting recently and the slant on this blog post is one of a consultancy firm providing clients with a quotation on the back of a requirement or set of requirements.

The requirement(s) could be something very simple or very complex but nonetheless its still a problem that needs a solution.

So I’ll pick something that should be familiar to those who work with or are familiar with SharePoint and work around explaining the title of my post in relation to this example. So we have been requested to create a web part for SharePoint. Lets just say for example the web part has a free text field where when a value is entered it looks up employee ID. This information is stored in a SQL database.

So with the above classed as a requirement there are one of 2 ways you could approach this:

1.Make lots of assumptions which the client may not understand and potentially not deliver within the timescales provided

2. Gather further information regarding the initial requirement to gain a more accurate understanding thus more closely meeting client expectations

Before discussing these options there are also additional considerations when quoting that the client may not have considered or budgeted for when the client receives the quotation. These things include (to name a few):

  • Testing
  • Project management
  • Documentation

Referring back to my two options, choosing option 1 may get you near the end result you were looking for (if you’re lucky) but on the other hand you could have wasted a lot of time and money and only be a little further forward but wiser nonetheless.

Option 2 will give you a clear idea of what can be achieved and the timescales to do so and in the process if you’ve structured the consultancy engagement in such a way of fixing the delivery agreeing scope beforehand the risk is offloaded onto the external consultancy firm. Yes I appreciate that gathering requirements in more detail will cost you a little time and the outcome maybe that what you actually expected to be delivered needs adjusting to what you can actually afford, wouldn't you want to find out beforehand?

As a bit of advice before going into an engagement make sure you have thought through what you actually want in detail thinking about not only what the requirements are but also what you would to happen on the screen or outputs to be in every eventuality you can think of (functional requirements). As an example for my specific scenario consider how you would want the web part to behave when the SQL database storing employee ID’s is unavailable – what should be displayed when the user enters a query? If you don't assumptions will be made for you and you could end up with a different output to what you expected.

The conclusion here is that the more information you can provide and the more understanding (where possible and appreciate this isn't always possible) of the problem this may narrow down the time required to deliver the solution, after all in the current climate we all want to be careful with how spend budgets. As regards the tax that go on top of delivering the functionality (project management, testing etc.) as consultants we do this everyday so we know what's involved, cutting corners on this just means you are going against the experts who you have asked for advice from and in the process adding lots of risk to delivering a successful outcome.

Shrinking SQL 2008 Databases for SharePoint

So I have to confess I take no credit for this post and there are plenty of blogs out there that explain how to shrink SQL DB’s however searching for Shrinking SQL databases for SharePoint shows little matches so I thought I’d make easier for SharePoint folk to be able to find this quick an easy reference as normally you’d be looking for this solution when you’re environments fell over and need a quick fix.

Before proceeding I just want to warn you that this should not be carried out on production environments without consulting your SQL DBA team. This blog entry for those who are in trouble and need a quick fix for development environments where backups and DR are not necessarily crucial so transaction logs do not need to be considered to restore to a point in time. It’s also worth mentioning that any SQL maintenance that you carry out should be done so in accordance with the guidelines outlined in the KB link http://support.microsoft.com/kb/841057/en-us.

So to the command. From SQL management studio run the command as shown below changing the database name to the one you need to shrink, in the example below as you can see mine is DEV_ConfigDB.

USE DEV_ConfigDB

GO

ALTER DATABASE DEV_ConfigDB SET RECOVERY SIMPLE

DBCC SHRINKFILE(DEV_ConfigDB_log, 1)

You should now find your log file has shrunk as well as the size of the actual database.

Finally its also worth mentioning that SQL Database Maintenance for SharePoint 2010 whitepaper. This is an in-depth paper written / contributed by members of the SharePoint product team that should satisfy a SQL DBA’s questions on how to run maintenance plans for SharePoint SQL databases.

I hope this is of some use to you.

Will SharePoint work for us?

Of late I’ve been out and about visiting new clients who are either looking at SharePoint for the business or have installed SharePoint and don’t know what to do next. I recall a well known saying in the SharePoint community that was once said to me:

“The answers SharePoint, what's the question?”

This is sums up a lot of my engagement’s I’ve been involved in recently and there is a valid reason for it in as much that SharePoint is part of a lot of clients Microsoft Enterprise Agreement (an EA) so its been paid for so the view is lets use it. This is a like walking into a forecourt full of cars with a blindfold on and randomly pointing at a car that you want to buy only to realise its only got 2 seats when you needed 4 or its a manual gearbox and you can only drive automatics. I think you kind of get the picture of what I’m trying to say here is that if you go in blind you can’t expect to get the results you were looking for.

This is where the problem comes in because SharePoint as a product is a complex platform and understandably clients who have had little exposure to to date struggle to understand how to use it effectively and how to sell it.

SharePoint isn't another Exchange deployment where once its configured it just sends mail (and very well it does too), not to devalue the importance to Exchange implementations but if you’re implementing Exchange you’re requirement is pretty clear right? Email? That's not to say SharePoint doesn't need the same support from IT but its involvement from the business which will make it a success.

So with little knowledge of SharePoint's capabilities its wrongly being pitched as a solution when no evaluation has been carried out on the product to see if it meets specific requirements. SharePoint unfortunately comes in for some unnecessary criticism because its only after SharePoint has been decided as the solution they find out it only meet 60 – 80% of the requirements and at this point time, money and resource has been invested meaning the client either begrudgingly carries on with SharePoint having to request additional budget or bail out.

I also see that SharePoint is still being pitched as a point solution e.g. its an intranet and that's all and not a strategic platform with direction, which brings me onto my next point.

My advice at this stage is you need a strategy, a plan, a vision of where you are going and think bigger picture. Thinking short term will more than likely end in failure as you make the wrong choices it becomes harder and harder to unpick.

So some takeaways from reading this and advice I can give is to not expect internal staff to all of sudden become SharePoint experts, it takes time. In the short-term if things need to be done quickly look at external consultancy options or recruit experienced proven SharePoint people (this takes time I know!). Longer term look at internal staff strengths and identify who’s good at such things as development, leading, administration (especially those keen to learn new things), analysis, project management and then align these skills to how they fit with the roles that are needed to maintain and grow a successful SharePoint implementation.

So the key is what's the strategy? Then once there is a strategy defined evaluate the products capabilities and review where it meets the requirements and where it doesn't. If it doesn't do something well in one area look at the strategy of the business and review other areas and see if it has strengths there and look at its overall performance and make an overall decision.

To conclude with those I have engaged with over the last few weeks / months / years I am in no way criticising their approach, its tough to get it right and that's why investing in planning upfront is the best place to start to avoid wasted money, time and effort whilst expectation has not been met.

As always I welcome your views…

User Profile Information not correct in Site Collection My Settings (userdisp.aspx page)

I came across a strange one the other day. A client called me to say when a user adds an alert it shows an email address that the user had a while ago and does not reflect an update in Exchange / AD. So the easy target was the user profile service however it proved not to be this (for once!).

So doing some digging I found some really strange behaviour. I tested the user in questions alerts and sure enough it was showing the old email address even though all the information for that user was definitely correct.

After further testing I experienced different profile information in different site collections (some correct and up to date and the others not).

So to picture the page I am referring to, here’s a screenshot below (_layouts/userdisp.aspx)

image

This is the page you would normally see in WSS or SharePoint Foundation and you can still access this page from SharePoint Standard or Enterprise selecting My Settings from the drop down.

image

Back to the issue.in hand so noticing different behaviour between site collections, I came across a Microsoft KB article KB2012619 which suggested that if a user is only a reader of the site collection they wont be able to update the information. I thought this was strange however I tested this and strangely it worked. Long story short I then tested again and it didn't so results were mixed. I then discovered the actual timer job which updates each site collection with the user profile information from the service application which is called ‘User Profile Service Application - User Profile to SharePoint Full Synchronization’:

image

This Timer Job was running fine however the specific site collections were not updating.

From articles relating to MOSS 2007 there was suggestions that if the database was not correctly attached to the farm the SSP would report issues. As the farm I was working on was upgraded I had suspicions that maybe not all was well with content database so decided to create a new content database and migrate all the site collections into this database using PowerShell to do so (See http://technet.microsoft.com/en-us/library/cc825328.aspx#Section3).

After moving the site collections to the new content database then re-running the ‘User Profile Service Application - User Profile to SharePoint Full Synchronization’ Timer Job this successfully updated all site collections with the correct information. I tested this further by adding additional profile information in AD then running a full profile synch and finally the Timer Job to update the SharePoint Sites and the new information successfully propagated to each site collection.

So to conclude the user who’s alert page was showing an old email address was now corrected so his was able to receive alerts.

The dangers of going live without thorough investment in testing

This post is a little more generic than my normal product focus on SharePoint technologies, reason being it applies to all IT solutions projects delivering a solution.

As you may have read in the news over the last couple of weeks a couple of high profile problems hit the headlines. These were the failure of Tesco’s banking platform migration (http://www.bbc.co.uk/news/business-13888891) and The Olympics ticketing system for London 2012 (http://www.guardian.co.uk/sport/2011/jun/24/olympic-tickets-sale-second-round).

Both scenarios indicate that sufficient testing of their respective systems was clearly not carried out to avoid these unfortunate outcomes. With the advancement in virtualisation technologies there should be no reason why replicated scenarios can’t be simulated to forecast and avoid this happening.

One of the main reasons why testing is reduced is due to the financial overhead of such intense testing. This includes provisioning hardware, additional software licenses, resources to commission the system, testing the systems and the list goes on and effectively this is a project in itself.

What the system glitches didn't highlight and especially in the case the Olympics' ticket application system was that they simply didn't cater for the volume of applicants. This begs the question, why didn't they? Surely they were expecting this many applicants to apply?

This brings me on to the next point which is systems should be tested for every eventuality ‘What if’ and the outcome / behaviour of such a scenario.

Personally for the Olympic application (of which first time round I was unsuccessful) I was frustrated by how the results were displayed when searching for an event to attend. The results displayed all events even if they had been sold! All this did was make it harder for me to find events with availability and in the end I gave up. What I believe should have happened was as an event was sold out it was removed from the results to allow for easy navigation of availability. This was a case of the ‘what if’ scenario and how easy it should be for potential applicants to apply for tickets especially as second time round it was first come first serve so people would have been panicking trying to find availability as it rapidly disappeared.

So when discussing the financial cost of testing migrations / go-live scenario’s were the relevant risks pointed out of not thoroughly testing? Was the risk absorbed and understood?

IT may have been the one’s who were having the finger pointed at them however if they have highlighted the risks and issues of not thoroughly testing then is it IT’s fault? I certainly don’t think so and it easy to blame IT for this.

User Profile Synchronization Service failed to start due to Kerberos issue

If you’ve reached this page and its the first one you’ve read about setting up the SharePoint user profile synchronization service I would highly recommend making sure you have read in detail this article http://technet.microsoft.com/en-us/library/ee721049.aspx.

If you have read this and are still having issues read on..

So the issue I was having was that after upgrading a MOSS 2007 server to SharePoint 2010 (in place) the User Profile Synchronization service would attempt to start then after 5 minutes or so return to ‘stopped’. At this point I want to make clear that no part of my farm is setup for Kerberos authentication.

Looking into the server logs I found the following logs that looked suspicious:

Security ID:                DOMAIN\farmaccount
Account Name:                farmaccount
Account Domain:                DOMAIN
Logon ID:                0x58732
Logon Type:                        3
Account For Which Logon Failed:
Security ID:                NULL SID
Account Name:               
Account Domain:               
Failure Information:
Failure Reason:                An Error occured during Logon.
Status:                        0xc000005e
Sub Status:                0x0
Process Information:
Caller Process ID:        0xed8
Caller Process Name:        C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN\OWSTIMER.EXE
Network Information:
Workstation Name:        SHAREPOINTSERVER
Source Network Address:        -
Source Port:                -
Detailed Authentication Information:
Logon Process:                C
Authentication Package:        Kerberos
Transited Services:        -
Package Name (NTLM only):        -
Key Length:                0

I also found an entry in the SharePoint Logs:

06/23/2011 10:43:23.73     OWSTIMER.EXE (0x1E2C)    0x1FE8    SharePoint Portal Server     User Profiles   9q15    High    UserProfileApplication.SynchronizeMIIS: Failed to configure ILM, will attempt during next rerun. Exception: System.Security.SecurityException: There are currently no logon servers available to service the logon request.       at System.Security.Principal.WindowsIdentity.KerbS4ULogon(String upn)     at System.Security.Principal.WindowsIdentity..ctor(String sUserPrincipalName, String type)     at System.Security.Principal.WindowsIdentity..ctor(String sUserPrincipalName)     at Microsoft.IdentityManagement.SetupUtils.IlmWSSetup.GetDomainAccountSIDHexString(String domainName, String accountName)     at Microsoft.IdentityManagement.SetupUtils.IlmWSSetup.GrantSQLRightsToServiceAccount()     at Microsoft.IdentityManagement.SetupUtils.IlmWSSetup.IlmBuildDatabase()     at Microsoft.Office.Server.Us...   

From researching this I managed to find this blog which suggested the issue is related to Kerberos.

Now this seems strange as my farm is not running Kerberos and nor are the Web Applications so I could have quite easily discarded the blog however stranger things have happened so I followed the blog mentioned and added a Kerberos SPN for the farm account to AD.

Sure enough this fixed the issue and the User Profile Synchronisation Service started and has since worked perfectly.

One thing that to note is that if you remove the SPN after starting the service and it for some reason returns to the stopped state you will need to re-enter the SPN to start the service.

Credit to my colleague James Brennan for assisting in resolving this issue.

SharePoint databases report ‘Database is in compatibility range and upgrade is recommended’ after upgrade

Following on from previous blog and day 2 of upgrade found some of the databases were reporting the following error:

Database is in compatibility range and upgrade is recommended

This was appearing on non content databases (as in SharePoint system databases).

This seemed strange as I mentioned in my previous blog that the upgrade had been successful so was a little perplexed to find this issue.

After a little research there didn't seem to be anything that looked to answer my problem.

Although this blog was referring to Windows 7 it was interesting in helping my trail of thought and also made me aware that you can only upgrade content databases and not just standard SharePoint system databases using PowerShell http://blogs.technet.com/b/blairb/archive/2010/07/16/patching-sharepoint-2010-on-windows-7.aspx.

Another article relating to this was found here where no solution had actually been found (at the time of blogging) http://social.technet.microsoft.com/Forums/en-IE/sharepoint2010setup/thread/7d3ee7cf-56f8-46fe-b2c9-b8662e88825a

So concluding that I could only upgrade content databases the above did not help in resolving the issue.

The two databases in question were:

Database – Type

WSS_Search - SPSearchDatabase

WSS_UsageApplication - SPUsageDatabase

I finally managed to resolve the problem by running a b2b upgrade command:

PSConfig.exe -cmd upgrade -inplace b2b -force -cmd applicationcontent -install -cmd installfeatures

Credit to this blog (http://blog.techgalaxy.net/archives/2585) for pointing out the b2b command as I was having issues running this prior to finding this.

People Picker Searchcustomquery vs. Searchcustomfilter property

So I wanted to share an issue I recently had with the people picker which I have to admit was due to user error on my part but you may fall into the same trap!

So the trap I fell into was that I assumed the SharePoint staadm peoplepicker only had one configuration option for querying AD and this is where I went wrong!

So if you follow this TechNet guide for the people picker this is why I believe it isn't as clear as I thought! http://technet.microsoft.com/en-us/library/cc263318(v=office.12).aspx (appreciating this is for MOSS it was suggested this was still applicable to SharePoint 2010).

If you notice from the previous URL it suggests that there is only stsadm -o setproperty -pn peoplepicker-searchadcustomquery available for AD queries so I pursued this route to find very strange results appearing when searching for users. For example lets say I told my parameter only to return users where they have a phone number this command above returned anyone who had a phone number regardless of what you entered in the search term.

So after lots of head scratching I realised after taking a step back that rather than look at the parameters appended to the command I needed to look at the makeup of the command. On closer inspection I realised that there are 2 types of AD commands applicable to the people picker -pn peoplepicker-searchadcustomquery and -pn peoplepicker-searchadcustomfilter (The latter being the actual command I needed) from reading this further TechNet article which actually does the opposite to the previous article and does not mention the query command http://technet.microsoft.com/en-us/library/gg602075.aspx#section8.

Hopefully you can see how easily it was to be confused. So I after the light bulb moment I quickly changed the command and after hours of failure doubting the structure of the LDAP query I realised it was a simple mistake everything worked like a dream.

So to conclude on the commands:

Stsadm -o setproperty -pn peoplepicker-searchadcustomquery – THIS WILL SHOW RESULTS BASED UPON THE QUERY YOU PLACE HERE REGARDLESS OF THE VALUE ENTERED INTO THE PEOPLEPICKER

Stsadm -o setproperty -pn peoplepicker-searchadcustomfilter – THIS WILL SHOW RESULTS BASED UPON FILTERING A VALUE APPLICABLE.

I’m not entirely sure why you would use the customquery option so this is why I didnt wven give it a second thought this existed. If anyone has any scenario’s where this could be used I’d be interested to hear from you.

Further reading:

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

Thanks to Tristan Watkins and Glyn Clough for their input and ideas on Twitter.

In place upgrade from MOSS 2007 to SharePoint 2010 fails

Its been too long! I just realised I haven’t blogged for over 3 months – must try harder!

So today I was working on a client site on an in place upgrade from MOSS 2007 Standard to SharePoint 2010 Standard. Firstly I must say I’m not a fan of any in place upgrade whether this is SharePoint or another experience with Microsoft however due to time constraints and hardware availability this was the best way forward.

Background to the upgrade process

Following the TechNet article on in place upgrade to SharePoint 2010 http://technet.microsoft.com/en-us/library/cc263212(v=office.14).aspx. MOSS 2007 was installed with service pack 2 (Build number 12.0.0.6421) and the pre-upgrade checker run reporting no errors (at this stage it is worth noting that the October 2009 CU updates the pre-upgrade checker however due to timescales this CU update was not installed).

SharePoint 2010 media was slipstreamed with August 2010 CU that would take the new SharePoint build to 14.0.5123.5000.

The Upgrade

The upgrade failed with 3 errors 2 of which were due to features and these were deactivated and solutions retracted for the purposes of removing errors in the short term however 1 error remained from running the command:

psconfig -cmd upgrade -inplace v2v –passphrase <passphrase> -wait

From the logs generated the errors in the log (the log file is typically named Upgrade-Date-Time-error.log) were as follows:

[PSCONFIG] [SPUpgradeSession] [INFO] [6/22/2011 1:45:30 PM]: No context object
[PSCONFIG] [SPUpgradeSession] [ERROR] [6/22/2011 1:45:30 PM]: This upgrade session has been stopped. Possible causes include the process being terminated abruptly or the OS has rebooted. Please restart the upgrade again.

As you can see from the error it wasn't very helpful as this did not apply as I tried to complete the upgrade several times. Further errors were also present when running the command from the prompt:

Failed to upgrade SharePoint Products.

An exception of type Microsoft.SharePoint.Administration.SPUpdatedConcurrencyException was thrown. Additional exception information: An update conflict has occurred, and you must re-try this action. The object SPUpgradeSession Name=xxxxxxxxxxxxxxxxxxx was updated by domain\user, in the PSCONFIG (10056) process, on machine SERVER. View the tracing log for more information about the conflict.

Microsoft.SharePoint.Administration.SPUpdatedConcurrencyException: An update conflict has occurred, and you must re-try this action. The object SPUpgradeSession Name=xxxxxxxxxxxxxxxxxxx was updated by domain\user, in the PSCONFIG (10056) process, on machine SERVER. View the tracing log for more information about the conflict.

From researching other blogs I found a Microsoft article http://support.microsoft.com/kb/939308 suggesting that when upgrading you may need to clear the cache on the WFE servers. This also suggests it is for MOSS 2007 and not SharePoint 2010 and at this stage the server was upgraded with SharePoint 2010 binaries although this blog by Stefan GoĂźner that suggested it may be applicable to SharePoint 2010 http://blogs.technet.com/b/stefan_gossner/archive/2011/03/04/delayed-february-2011-cu-for-sharepoint-2010-is-now-available.aspx (see Stefan’s comments).

I tried this procedure several times with no luck!

I found a further article here http://social.technet.microsoft.com/Forums/en-US/sharepoint2010setup/thread/8406c0f6-5de9-4079-bf37-8640a60d1a19/ and detached all content databases from the farm and this did not work.

Basically time and time again receiving the breakdown at the bottom of each attempt:

Total number of configuration settings run: 3

Total number of successful configuration settings: 2

Total number of unsuccessful configuration settings: 1

Successfully stopped the configuration of SharePoint Products.

So at this point I was starting to run out of ideas and short of reinstalling which I really didn't want to do.

Solution

I finally managed to resolve my issue by taking a brave step of upgrading the farm (see my previous note that I was very short of ideas and time at this) to a later cumulative update (Should this have failed I had a complete backup prior to the upgrade to fall back on). Not being a fan of installing the latest CU just for the sake of it being the latest I chose February 2011 CU (Build number 14.0.5136.5002) and after implementing this CU I was successful in upgrading with a concluding statement along the lines of 4 out of 4 tasks completed successfully.

As always I hope this helps if you end up reading this, please do leave me a comment on your experiences.

I’m speaking at European SharePoint Best Practices Conference 2011

imageI’m delighted to announce I'm speaking at the up and coming European SharePoint Best Practice Conference 2011 on Wednesday 13th April 2011 at 11:30 http://www.sharepointbestpractices.co.uk/Abstracts_COM.html#COM614:

This session will talk about sharing thoughts about how to prepare for SharePoint 2010 whether this be an upgrade or a greenfield implementation and things to consider to make the implementation as successful as possible. I will touch on planning the upgrade / implementation and how best to do it, who to involve, discuss challenges and how to overcome them

Due to work commitments I’m only going to be at the conference on the Wednesday, however I look forward to meeting some of the friends I've connected with on Twitter face to face so come and say hello and hope you can join me in my session.

Hide / Remove Web Parts in SharePoint 2010

I came across a requirement where a client was looking to hide web parts for use in SharePoint. Before reading any further I’ve only carried out some light testing on this to see if its suitable but seems a viable solution and happy to get feedback on this.

The ideal solution would be to have a similar user interface to that that hides site templates and page layouts however this isn't available for web parts.

So the solution is really simple, for those web parts you don't want to display you can do one of two things:

1. Delete the web part from the gallery

2.Sever security permissions for that web part for those you don't want to use the web part.

I prefer the option 2 as this allows to easily reinstate the web part should things change in the future.

So exploring option 2 navigate to site settings at the root of the site collection and select web parts from galleries.

image

Click edit next to the web part you wish to hide.

Web parts gallery – sever inheritance add users who you may want to add these web parts.

image

As shown above click ‘manage permissions’. From here as you would with any item in SharePoint edit the permissions to allow only those who you wish to use this web part.

image

Simply stop inheriting from the parent and remove these users who you don't wish to have access. For the purposes of my quick test I removed all users so you will have to do some more testing as to allowing specific users.

For a quick test I removed the advancedsearchbox web part and logged in as standard site admin (not site collection admin) and the web part was removed from the list available as shown below when editing a page.

image

To add the web part back into the list simply reapply inheritance to the specific web part.

image

Your web part should then reappear in the list below.

image

Please note no IISRESET is required to do this.

SharePoint User Group (SUGUK) Slides – Preparing for SharePoint 2010 & Real world experiences

I’ve added my slides below from the SharePoint User Group meeting I presented at on 9th March 2011.

My presentation was on Preparing for SharePoint 2010 and Real world experiences. I wanted to share some of the challenges and issues I face when consulting so to help others where possible avoid these or at the very least be aware of them so there’s no hidden surprises.

This was my first time presenting to the user group and I have to say I really enjoyed it. It was really pleasing to hear it was encouraging others who haven't yet presented to start thinking about it.

Those who are interested in speaking but not quite sure what to present on I thought I'd share a few of personal interest to me:

  • Access Services
  • Claims
  • Forefront
  • PowerShell
  • Performance Point / BI
  • Accessibility

Feel free to leave a comment with your thoughts on what you’d like to see at the next event and I’ll happily feed them back.

Thank you to everyone who attended including Steve Eyton-Jones for organising and a special thank you to Penny Coventry who not only provided 2 of her books (Microsoft SharePoint Designer 2010 Step by Step) to give away at the event but also offered to cover for me as I was in danger of not making it. See you at the next one!

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.