That Profile Property Is Taxonomy’ing My Patience

When you edit a profile in SharePoint 2010, you may be presented with the following error message :

There was a problem retrieving data for this field. Updating values in this field is disabled temporarily. You can still update values in other fields.

image

This only shows up on profile properties that are taxonomy fields, or rather fields that are mapped to termsets in the Managed Metadata service.  A few blogs have posted some resolutions, and you should definitely try those first.  Especially if you configured everything via Central Admin.  Like Russ Maxwell and Bryan Porter’s blog posts.  However, if you provisioned the various service applications via PowerShell, there is another possible problem…the DefaultKeywordsTermStore property.

When the edit user profile page loads, there are a few things that happen for the taxonomy fields:

  1. Loading of the TaxonomySession that is associated with the same proxy group as the User Profile Service App
  2. Retrieve the DefaultKeywordsTermStore for the TaxonomySession

If the DefaultKeywordsTermStore property returns null, the above error is thrown.  The interesting thing about the DefaultKeywordsTermStore property is that the property returns null in two different cases:

  1. All of the Managed Metadata service applications have DefaultKeywordsTermStore set to false
  2. There are multiple Managed Metadata service applications that have DefaultKeywordsTermStore set to true

When you use Central Admin to create the Managed Metadata service applications, we seem to set this property to true on the first instance, while setting the property to false on the 2nd, 3rd, etc instances of the service application.  When you configure the service application via PowerShell, you have to pass in a switch to set the property to true.  If you forget to set the property, or set the property to true on more than one Managed Metadata service app, you will hit this problem.

To check if you are hitting this particular scenario, check out the blogs I mentioned previously first.  If that doesn’t fix you up, you can run the following script.  This script will dump out all the Managed Metadata Service Application Proxy objects, then dump out the Properties collection.  This will allow you to check the DefaultKeywordsTermStore property.

Get-SPServiceApplicationProxy | where {$_.TypeName -match "metadata"} | Get-SPMetadataServiceApplicationProxy | %{$_.Properties} | FT –autosize

If you have multiple proxies with the property set to true, you can set all of the proxies to false, then set a specific one to true:

#Set all the Managed Metadata Proxies IsDefaultKeywordTaxonomy to false
Get-SPServiceApplicationProxy | where {$_.TypeName -match "metadata"} | Get-SPMetadataServiceApplicationProxy | %{$_.Properties["IsDefaultKeywordTaxonomy"] = "False"} | FT –autosize

#Get the proxy with a DisplayName of “Managed Metadata” and set the property to true…
#Change the DisplayName to what shows up on the Manage Service Applications Page.
Get-SPServiceApplicationProxy | where {$_.DisplayName -eq "Managed Metadata"} | Set-SPMetadataServiceApplicationProxy –DefaultKeywordTaxonomy