SharePoint 2010: access with Safari in iOS 8

Because of a problem in the OOTB browser definitions in .NET 2, carried up to .NET 3.5, iPhone with iOS 8 are not correctly recognized as mobile devices in SharePoint 2010.

The problem is described in iOS 8 / Safari 8 not working with ASP.NET AJAX-Extensions, but the solution in that article is not complete, as it fixes the JavaScript issue but not the mobile capabilities.

So I have merged that solution with the iPhone capabilities in the OOTB browsers definitions, getting the content of the new file that you can download here: iOS8.browser

SharePoint 2010: customizing the view behind a XsltListViewWebPart

In SharePoint Designer 2010, trying to modify the view behind a XsltListViewWebPart can seem to be ineffective.

The problem is that even after saving the page, the web part is deserialized and it contains the view inside it; when deserializing the web part before saving, the old copy of the view is retrieved, so in the end the view saved in the page seems to be unchanged.

How can you solve this? Simply creating a view in the underlying list, making the web part to use this view, and then delete the view (because not used anymore, the view is now serialized with the web part).

FYI this issue is described in:

  • XLV Bug: View settings lost on saved XSLT List View Web Part: here there is a small error, in the end it says modifying the view works in SharePoint Designer, but it is only because the page is new. Updating the page (and not creating it) doesn't update the underlying view.
  • ListViewWebPart & SPView – two sides of the same coin: this post says a hidden view is created. In my case, trying to modify the view calling the modifyView page and tricking the ViewID query string parameter with the ID in the view in my XsltListViewWebPart didn't work.
    This is why I create a normal (not hidden) view to be associated to the web part (and for cleanness, at the end this temporary view can be deleted).

SharePoint 2013: design search between farms

The Microsoft article discussing the topic about WAN deployments for SharePoint 2013 is Global architectures for SharePoint Server 2013.

The idea is that each SharePoint farm crawls its content, and then the content index are reused by other farms.

This is described in the blog posts from Steve Peschka Setting Up an oAuth Trust Between Farms in SharePoint 2013 and Getting a Full Result Set from a Remote SharePoint Index in SharePoint 2013.

The same concept, with UI explanation, is in Search Scopes in SharePoint 2013 Using Result Sources.

SharePoint 2013: troubleshooting Popularity Trends

Popularity Trends in SharePoint 2013 replace the Analytics in SharePoint 2010. Now it is part of the search component.

Keep in mind that after you visit a page, the counter are not updated in real-time, as results come after 2 days after the midnight (so in the end you get your results on your third day).

If still you get 0 results, there is an excellent troubleshooting guide: Troubleshooting SharePoint 2013 Web Analytics.

It's worth saying that the data is saved in the SharePoint_ServiceApps_UsageAndHealth database (or equivalent name), view dbo.RequestUsage, to be selected with (NOLOCK) clause.

A script fixing event receivers on page is described in Sharepoint 2013 Analytics Reports empty.

And how get data programmatically: How to get Search Analytics Reports programmatically in SharePoint 2013.

SharePoint 2013 and SharePoint Online: deploying branding artifacts

It is possible to deploy branding artifacts, like master page, page layouts, css and so on, in SharePoint using the client side object model, without the need of a farm solution.

An old article, but still valid for content and explanation, is Self-Service Site Provisioning using Apps for SharePoint 2013.

Up-to-date solutions, containing a lot of sample and reusable code, can be found in the Office365 Developer Patterns and Practices.

SharePoint 2013: Duplicate entries in People Picker with ADFS authentication

In SharePoint 2013, there are two possible reasons why you can get duplicate results in your people picker searches.

The first one is that maybe there are multiple types of authentications enabled for the SharePoint zone, for example Claims and Active Directory.
In this case you should follow the article Configuring a Custom Claims Provider to be Used only on Select Zones in SharePoint 2010.

In the second case, maybe there are SAML claims users. The behavior is by design, because there is no function to get a list of users using SAML claims, so SharePoint just accepts whatever we type and assumes we are typing the correct value.  There are two values that it is looking for, either the email address (which is the identifier claim in this configuration) or a role claim, and this gives duplicate results.

The solution then is to create a custom claim provider. In CodePlex it's possible to find the pre-built solution LDAP/AD Claims Provider For SharePoint 2013 that is also suggested in the article or Kirk Evans reported below. I have never tried it directly, but it seems a pre-build solution that needs to be deployed and eventually configured.

A few links about the custom claim provider:

Finally, the articles below are useful if you really want to write a really custom claim provider written by yourself:

SharePoint: how retrieve the user manager in an approval workflow

In SharePoint it's quite easy to find the manager of a user, for example in an approval workflow.

Here are some links explaining how to do that: