SharePoint Conference 2014 and Scalable App Architecture Talk

Tomorrow I will be flying to Las Vegas, for my third SharePoint Conference there (you can see my impressions from 2009 and 2012). This time, I’m honoured to be a speaker.

imageBeezy-logo-M

By the way, I can’t believe that it has been 5 years since my first SharePoint Conference in Vegas. Time really flies.

Beezy at SPC14

My colleagues from Beezy will also be present at the conference, showcasing our best-of-the-breed enterprise social network for SharePoint. Please visit them at the booth #1140. You’ll find out what Beezy is and how it can help you embrace social computing at work.

The idea for my talk came out of Beezy development. We had to design Beezy for high scalability, as it was going to be used in companies with tens of thousands of users. I have envisioned a talk that summarizes the key tenets and practices for scalable applications, especially at the back-end (API end). It’s a topic that hasn’t really entered the mainstream programming in SharePoint, but with the app model that exposes your app to potentially millions of users, it should be gaining wider audience.

7 Tenets for Highly Scalable Apps for SharePoint 2013

My session is about highly scalable apps for SharePoint 2013 and how to architect the solutions for scalability. There are several techniques that can be used to achieve scalability, such as aggressive and distributed caching, queuing, using non-relational storage, using non-blocking async calls and so on. I will try to give a glimpse of those techniques and to enable you as a developer to use those new tools in your toolbelt.

Are you attending SPC14? Join the conversation at Yammer about my session! Ask questions and post comments to help me make the session live up to your expectations.

Ongoing Sample App Code

I have also started an ongoing scalable app demo (https://bitbucket.org/ekapic/scalable-app) that I intend to evolve to a complete example app built with the core messages of my session. Right now I have the source code that I’ll use in my demos, but I will keep adding the app code in the next months. You can find the ongoing demo app code hosted at BitBucket. Feel free to fork it as you wish.

See you all in Vegas!

SharePoint Search Alerts and the Case of Only 10 Results

A puzzling SharePoint search alert behaviour was keeping our team of three scratching our heads for days. If you speak Spanish, you can check my teammates’ blog posts about this same error: Ignasi and Miguel.

SYMPTOMS

You have a SharePoint search configured correctly in SharePoint 2010/2013. You search for a keyword and create a search alert for the results.

image

You make more than 10 changes that should trigger the alert. However, the search alert email you receive lists only 10 changes. The rest of the changes are not sent as alerts.

CAUSE

The Search Alert mechanism in SharePoint 2010/2013 is described in great detail in the following MSDN article. In a nutshell, the process is as follows:

  1. The alert is invoked once a day ("daily summary") or once a week ("weekly summary").
  2. The alert runs the query again with the user-supplied search criteria (in my example case: "Hello").
  3. If there are no new results (the results that are more recent than the last time the alert was run), the alert finishes.
  4. If there are new results, they are formatted according to the search alert email template and sent to the user.

There is one tiny bit of missing information here. The step 2, where the search query is run again, has a hidden parameter that limits the number of results that are returned from the search index. If you look inside the SharePoint code that processes the alert, you will find a RowLimit parameter supplied to the query:

image

This searchAlertNotificationQuota is a property that is ultimately established as AlertNotificationQuota property at the SearchApplicationService object in the Sharepoint server object model.

SOLUTION

Run a PowerShell script to update this property in the Search service application and set a  number of returned search results to a value of your convenience. Let’s say 75: