Monday, January 20, 2014

SharePoint Saturday 2014 Belgium – Call for speakers

The BIWUG board is proud to announce a new edition of SharePoint Saturday Belgium. This year’s SharePoint Saturday will take place on April 26th at the same location of previous years – Xylos, Sint-Lendriksborre 8, 1120 Brussels.

A great SharePoint Saturday is however only possible with a great lineup of speakers – so if you want to be a speaker at this year’s event – fill out this survey - https://www.surveymonkey.com/s/CPFP97N  . It is possible to submit multiple sessions. We will close the call for speakers on February 14th EOD. You will get a confirmation of your session on February 22th at the latest.

Monday, January 13, 2014

10 things which might surprise end users in SharePoint Server 2013

SharePoint Server 2013 has made a lot of great changes to the user interface – including the new metro style - which make it easier and more fluent to use. While most of these changes make life a lot easier for end users there are some things which might surprise/confuse users who have worked with previous versions of SharePoint – here is my top 10 list (not necessarily in order of importance). If you think there are some other things, just leave a comment.



  • Another menu which has moved is the Create subsite option – it is now visible under site contents at the bottom of the page. This might be a good thing though since SharePoint sites are created quite frequently whereas a simple extra document library might be a better option.
  • In a multilingual setup for SharePoint with language packs installed – it is quite complex to change your language settings – check out  Multilingual User Interface and Language Packs for SharePoint Server 2013
  • The log on as a different user is not visible anymore – see KB2752600 Sign in as different user menu option is missing in SharePoint Server 2013
  • In SharePoint Server 2013 you can only create a blank site using Powershell or the Object model – the option to create a blank site has been removed from the SharePoint user interface.
  • SharePoint Server 2013 use a new date format which does not use the traditional MM/DD/YYYY format but outputs the date format in a more extensive format. You can however still switch back to the standard format (See Modified column below)

  • Drag and drop functionality for SharePoint document libraries not working in Internet Explorer 8.0 and 9.0 if you don’t have Office 2013 installed – but  it works in most versions of Firefox and Google Chrome (See SharePoint Server 2013: Drag and drop contents to library ) . Consider tying a SharePoint Server 2013 together with a Windows 8 or Office 2013 roll-out.

Saturday, January 11, 2014

Automatically updating User Profile properties in SharePoint Online/Office 365 not working

This might seem a common business scenario – you are using SharePoint Online and you want to automatically import some information from a third party system into the SharePoint Online user profiles. Unfortunately you are out of luck – in most cases – at this moment there is no option available to do this. This blog post explains the different scenarios and what is possible and what is not.

Option 1 – Using the SharePoint Client Side Object Model (CSOM)

As outlined in Work with user profiles in SharePoint 2013 , you have to use the server object model to create or change user profiles because they're read-only from client APIs (except the user profile picture).

Option 2 – Using the SharePoint Server Side Object Model

Not possible for SharePoint Online – you are out of luck here.

Option 3 – Using the (deprecated) SharePoint UserProfileService.asmx web service

For those of you who have been working with SharePoint Server 2007 might remember the UserProfileService.asmx webservice which provides a user profile interface for remote clients to read and create user profiles. This web service is still available in SharePoint Online (although considered deprecated). One thing which is a little trickier though in SharePoint Online is passing the correct credentials to your webservice to authenticate.

Luckily I found this blog post – Connecting to Office 365 using Client Side Object Model and Web Services which helped quite a lot.  To authenticate when connecting to your web service, you need to create an authentication cookie and pass it directly to the web service as well as make sure that login is correctly formatted. The next code snippet shows how to do this

static void AuthenticateUser(string login, string password)
{
//Reference - http://tomaszrabinski.pl/wordpress/2013/03/18/connecting-to-office-365-using-client-side-object-model-and-web-services/
var targetSite = new Uri(siteUrl);
var securePassword = new SecureString();

foreach (char c in password)
{
securePassword.AppendChar(c);
}


var onlineCredentials = new SharePointOnlineCredentials(login, securePassword);

ups = new UserProfileServiceRef.UserProfileService();
ups.UseDefaultCredentials = false;
string authCookieValue = onlineCredentials.GetAuthenticationCookie(targetSite);
ups.CookieContainer = new CookieContainer();
ups.CookieContainer.Add(new Cookie(
"FedAuth",
authCookieValue.TrimStart("SPOIDCRL=".ToCharArray()),// Remove the prefix from the cookie's value
String.Empty, targetSite.Authority));
}



To actually update a user profile property you can use the following code snippet.

static void UpdateProfileProperty(string login, string password, Dictionary<string, string> dictProperties)
{
var claimsLogin = "i:0#.f|membership|" + login;

try
{
//Provide login and password to UPS webservice - there is no global admin user who can
//update profile properties for other users
AuthenticateUser(login, password);

//Update Email
foreach (var pair in dictProperties)
{
UserProfileServiceRef.PropertyData[] newdata = new UserProfileServiceRef.PropertyData[1];
newdata[0] = new UserProfileServiceRef.PropertyData();
newdata[0].Name = pair.Key;
newdata[0].Values = new ValueData[1];
newdata[0].Values[0] = new ValueData();
newdata[0].Values[0].Value = pair.Value;
newdata[0].IsValueChanged = true;
ups.ModifyUserPropertyByAccountName(claimsLogin, newdata);
}
}
catch (Exception ex)
{
//Do something intelligent with your error :-)
}
}



Unfortunately when you try to update the user profile property from another user you will get an “Operation Failure ---] Attempted to perform an unauthorized operation” even when the user is a global administrator on your Office 365 environment.


So for the moment there is no option available for automatic updating SharePoint Online user profile properties from a third party system in a automated fashion without you having the user name and password of every single user.


References:



 


Thursday, January 09, 2014

Lessons learned about patching SharePoint Server 2013

I recently wanted to install SharePoint Server 2013 October 2013 Cumulative Update (see Understanding the title information shown in SharePoint 2013 search and how to make it work better) and I was a little surprised to see that the Cumulative Updates for SharePoint 2013 requires you to install the SharePoint Server 2013 March 2013 Public Update (KB2767999) first.

If you install this update on a single server setup or on servers running search components, follow the steps outlined in How to install updated packages on a SharePoint farm where search component and high availability search topologies are enabled because this will help you speed up installation or use the PowerShell script shown in Why SharePoint 2013 Cumulative Update takes 5 hours to install? (Thanks Thomas Vochten for the tip :-) )

Remember though that Cumulative Updates typically contain fixes to address product and security defects as well as minor design change requests and are released every other month (on even months). Cumulative Updates are not tested as extensively as Service Packs and don’t typically undergo broad external testing, so they should always be tested in a non-production environment (but the same also applies to Service Packs). For the latest available updates see Update center for Office, Office Servers and related products .

Happy patching ….

References: 

BIWUG session – Provider-hosted and autohosted SharePoint apps

 

On January 21th, BIWUG (www.biwug.be) is organizing the first session of 2014 about SharePoint provider hosted and autohosted apps apps as well as a deep dive session on SharePoint 2013 search – don’t forget to register for BIWUG2101.

Agenda:

  • 18:00 - 18:30 ... Welcome and snacks
  • 18:30 - 19:30 ... What about Provider-hosted and auto-hosted SharePoint apps  ( Speaker: Lieven Iliano )
  • 19:30 - 19:45 ... Break
  • 19:45 - 20:45 ... Apps,apps and apps  ... ( Speaker: Andy Van Steenbergen)
  • 20:45 - …      ... SharePint!

Location: RealDolmen, A. Vaucampslaan 42, 1654 Huizingen (Plan)

Hope to see you all there. For those of you who want to be  a speaker at one of the next BIWUG events, don’t hesitate to contact me on twitter or at joris.poelmans@biwug.be . We are still looking for speakers for the next sessions.

Monday, January 06, 2014

Understanding title information shown in SharePoint 2013 search results and how to make it work better

The title field which is shown in the SharePoint 2013 search results is by default mapped to the crawled properties as outlined in the table. There is however a hidden mechanism present in SharePoint 2013 which is called  title metadata extraction which overwrite the “Title” managed property with a value SharePoint extracts from parts of Word and PowerPoint documents (See SharePoint 2013 Ceres Shell – down the search rabbit hole for more details). In SharePoint 2010 you could override this behavior by changing the EnableOptimisticTitleOverride registry key but unfortunately this does not work in SharePoint Server 2013.

Crawled Property Origin Description
TermTitle SharePoint According to the documentation this is the title of an item in SharePoint but in my environment it is not filled in for any item. In my experience you can move this crawled property down in the priority for the managed property
Office:2 Office Office:2(Text) crawled property maps onto Title property which is used in the Word document itself as part of the summary information
ows_BaseName SharePoint Name of the SharePoint page
Title DocParser Title as picked up by the content processing component
MailSubject DocParser The subject of an email file as picked up by the content processing component
Mail:5 Mail Subject line of an email file
People:PreferredName People PreferredName property in the SharePoint user profile
Basic:displaytitle Basic Filename of Office document
ows_Title SharePoint Maps to SharePoint list field Title
Basic:10 Basic Mapped to Title,FileName
Basic:9 Basic Path metadata
If you install the SharePoint Server 2013 October 2013 Cumulative Update, you will notice that a new property is added called MetadataExtractorTitle. This property is filled in by the Microsoft.MetadataExtractorSubFlow.dll processing flow.



So if you want to be sure that the title of the an item is used in SharePoint search result, you can move the ows_Title crawled property before the MetadataExtractorTitle property. If one of the crawled properties is empty, the next crawled property will be used. This means that if the user does not specify a title in SharePoint, SharePoint will try to use metadata extraction for Word and PowerPoint files to give a an alternative for the title.
Unfortunately, you will need to perform an index reset first and afterwards you will need to do a full crawl to see the result of your changes.
References:

Saturday, January 04, 2014

Quick tip: debugging SharePoint 2013 search display templates

The easiest way to debug your SharePoint 2013 search display templates is to just to put in a debugger; statement in the first Javascript part of your search display template.
First you will however need to uncheck the  “Disable script debugging (Internet Explorer) option in your browser (Go to Internet Options>Advanced>Settings – Browsing category). This will allow you to break in Visual Studio and view all the necessary variables which will help you to debug your display templates.