Samstag, 15. November 2014

Delve and the Office Graph for IT-Pros & Admins

There are a couple of really good post from Richard Dizerega, Elio Struyf, Mikael Svenson  and Waldek Mastykarz. But everyone is talking about dev. stuff or end-user perspective.
In this article I will show the idea of Delve, the Graph and how it is working and what can be done from an IT-Pro / Administrator perspective.


We can enable or disable Delve and control access to the Office graph in SharePoint Online administration. To do this we had to navigate to Admin > SharePoint > Settings. Under Office graph, select one of the following options:
-          Don’t allow access to the Office graph

-          Allow access to the Office graph
Delve can also be disabled or enabled per user. To do this the user must go to Office 365 > Delve > Delve settings.
To store this setting we have a new property in User Profile Store: OfficeGraphEnabled.
The OfficeGraphEnabled property is only used when a user actively turns off Delve for themselves.
The property also results in a crawled and managed property which can be used in Search.
So the Administrator can query that property in Search to find out all people within his organization who turned off Delve.
This can be useful to get an overview about Delve usage in you organization.
We have several other properties in the User Profile service used by Delve.
·         SPS-UserType
·         SPS-HideFromAddressLists
·         SPS-RecipientTypeDetails

The SPS- properties are there to help the Office graph to determine if user in Exchange Online is a non-person entity such as a meeting room.
Users aren’t able to set these properties directly in their SharePoint Online profiles.

Working with Delve for IT-Pro´s and Admin

From IT-Pro & Administrator perspective Delve is a kind of service we have to write code to tweak it. Actually there are no out-of-the-box WebParts etc. we can use to work with Delve.
But we have a bunch of preconfigured code snippets, examples, SharePoint Apps and tools which can be very useful also for Admins and IT-Pros.

SharePoint 2013 Search Query Tool

The SharePoint 2013 Search Query Tool support with version 2.2 also GQL (Graph Query Language). For more details about GQL follow this link:

Office graph queries within your SharePoint search center

Elio Struyf did a great job with his code sample to use SharePoint search center to visualize Graph Queries.
All you need is a Script WebPart, a Search Box WebPart and a Search Result Webpart. The script is overriding the default Srch.U.fillKeywordQuery function, manipulating some parameters and doing a call to the original fillKeywordQuery function. The scripts and details can be found here:
The result looks like this:
We can use this script to fire queries against the Graph. Modifying the “Me or Actor ID” field give us an option to impersonate the query. The Graph always respects your privacy so we cannot see private object from another person. Details see here:  Privacy in Delve and Office Graph
But we can see all public objects for a given Actor ID to verify our security concept works well.
In my example I fire the query as user “Oliver Hardy”:

SharePoint Apps around Delve

In the SharePoint App store we can find a bunch of useful Apps around Delve and the Graph. Most of them are from Mavention / my MVP colleague Waldek Mastykarz. To test Delve and work with the Graph the most useful is the Office Graph Query Tester
This app showes the query which is used to get a result. This query can then be used and modified in the SharePoint 2013 Search Query Tool.

SharePoint 2013 Search API Results Webpart

I have a codeplex project for an experimental SharePoint 2013 Search API Results Webpart. This WebPart is visualizing the JSON result comming from search service as a simple list. Modifying the query in the script you can use this script to show Graph results where ever you have to.
Here I use the script in a Script WebPart to visualize the following query: ACTOR(ME)
This can be useful to show Graph results as part of you intranet landing page which is maybe not SharePoint etc.

Further information and events

·         More and further information about Delve can be found at IT-Unity:
·         IT-Unity also hosts a survey about delve: First Impressions of Office Delve
·         and there is a upcoming webinar series about Delbe at IT-Unity homepage:

Samstag, 25. Oktober 2014

Deactivate social feature MySite, Newsfeed, OneDrive, Sync, Share & Follow in SharePoint 2013

In several project I had the request to deactivate one or all of the following features. Poorly there is no consistent way to do it.

Sync button

To deactivate that feature we can use the SPList.ExcludeFromOfflineClient property. With this PowerShell Script we can set the value to 1 which deactivates the Synch function everywhere.

THX Sahil Malik for that script

Get-SPSite -limit all | get-SPWeb -limit all | Foreach {$_.Title = $_.Title;
$_.ExcludeFromOfflineClient=1; $_.Update()}


If we can start with a fresh system we can remove the permissions to create MySites. If already MySites are created we first must delete them. Only the MySites, not the MySite host!
Do not give the user the option to set up MySites will also remove the Newsfeed and the OneDrive link in the SharePoint top link bar.


This script disables the “Allow access request” setting under Site Settings -> Site Permissions -> Allow access request for all Sites and SubSites und the configured URL

$Webapp = Get-SPWebApplication "http://MySharePointURL"
ForEach ($site in $webapp.Sites)
{ForEach ($web in $site.AllWebs | where {$_.RequestAccessEnabled -and $_.Permissions.Inherited -eq $false})
write-host $web.Title, $web.URL updated}}

The “Share” button and also the entries in the HoverPannels and context menus are still there but the user get the message that he did not have the right to share content or sites. Another option is to set the max allow documents, sites and users to follow to 0. We can do this in Manage Profile Service -> MySites settings section -> Manage Following


This script goes through the hierarchy and disables the Following Content feature in every WebSite. You get an error message for every site where the feature is not active or missing. This can be ignored

$w = Get-SPWeb http://MySharePointURL | ForEach{ $_.URL }
Get-SPFeature -Web $w |%{ Disable-SPFeature -Identity "FollowingContent" -URL $w -Confirm:$false}

Mittwoch, 10. September 2014

First version of Delve is available

The first version of Delve formerly known as “Project Olso & Office Graph” is now available.

So what exactly is Delve? Here is what Microsoft says:

Delve (Codename Oslo) & Office Graph
Delve (Codename Oslo) is the first experience to use the power of the Office Graph. Delve is a new way to search and discover content across Office 365 based on personalized insights. Delve will be available as a Windows 8 app, on mobile devices, and integrated in the Office 365 web experience. Office Graph is an underlying technology and a suite-wide intelligence fabric that will help you discover content and make new connections. The Office Graph analyzes signals and applies machine learning. Personalized insights are built up for each user, based on their behavior, their relationships to content, topics and one another. Content and signals are captured from Exchange Online, SharePoint Online, and Yammer.

The Delve feature is located in the Office Bar at the top of the O365 site. Delve is only available for O365.

Here are some additional useful links:

Delve shows content from SharePoint team sites and OneDrive for business content. In the future, we will see more content sources to push content to the Office Graph, such as email attachments, meetings, group content, video portal content, Yammer signals/shares etc. We will also see an API for Delve in the future. The API will probably be a REST-based API supporting CRUD operations.

Delve looks like this:

Going to Query Editor in a search result webpart we can see a new Result Source:

This result source is not shown under SharePoint online administration or in the site settings menu. It’s only visible in the Query Builder. The Office Graph gets its own index. We can assume that this new result source is mapped to the new Graph Index. The new result source is not showing any results using it in a search result web part.

Is Delve only another content aggregation?

In SharePoint / SharePoint Online, we have several sites and web parts showing content based on search and social indicators:
·         My Documents
·         Recent Documents
·         Docs I'm following
·         Suggested documents to follow
·         Documents Shared with Me
·         Documents we have in common

Aggregating all this in one page shows that the content is mostly related:

So is Delve only an aggregated view of all this? No it is not! Delve is based on the Office Graph, which is a kind of machine learning to map the relationships between people, content, and activity that occurs across Office 365.
To give you an idea how this works, let’s have a look at the following example.
As part of Google, we have an Analytics engine called Google Trends.
I use this engine to get the following report.
  • Search term 1: Hangover
  • Search term 2: Vodka
  • Entity: Time

That means: Item1=Hangover Item2=Vodka

Item to Item recommendation shows a correlation between this to search terms / items at the end of December every year – at New Year's Eve ;-)

There is a correlation between these search terms and the date New Year’s Eve. In Delve it would be two people who are working both on the same document and because of this correlation, the system (Delve) is showing that document in the context of “trends around me.” The backend logig, algorithems and ranking models of Delve respect those correlations based on so called “signals” A signal for example is generated whene a user clicks on a document etc.  SharePoint Analytics works in a similar way. In SharePoint Analytics we talk about “events” which is the same like a “signal” in Delve / Office Graph. Both techniques are collecting, aggregation and analyzing what user are doing and is generating correlations  between content and content and users. Both solution Delve / Office Graph and SharePoint Analytics doing similar analytics but Delve is going a step forward and will soon also integrate Yammer and other components from O365.
To complete this, let’s have a look at how the SharePoint features like Items “Related to Current User” or “Suggested documents to follow” works.
“Items related to current user” is based on a result source. This result source can be used in a content search web part:

“Suggested documents to follow” is based on the managed property “recomendetfor”


So the following features are based on SharePoint Search and SharePoint Analytics. They are part of SharePoint on-prem and can be used without Office Graph and Delve.
  • My Documents
  • Recent Documents
  • Docs I'm following
  • Documents Shared with Me
  • Documents we have in common
  • Suggested documents to follow (with social impact)
  • Items related to current user (based on a system result source)
Delve is based on search driven solution and the Office Graph, but this is not SharePoint Search or SharePoint Analytics. Delve has its own index and its own backend system as part of Office 365. Delve is not available as part of SharePoint search-driven solutions or WebParts. Also the Office Graph can not used as a result source in SharePoint Search Querys or Search WebParts. It’s a separate and independent solution.
  • Delve

When you add Delve on top of the traditional search results, this all can be a little bit confusing for end users and decision makers; a company needs a strategy for all of this. I think that Delve is the future of all these ideas and techniques. Delve will get an addition push with the upcoming Phone and Windows Apps, which allows us to get access to all this using mobile devices and without using the web interface of Office 365.
Again, you need more description here. How is this related to the bullet list above?
Belonging to comment NB5: Delve is new and not based on SharePoint Search or SharePoint Analytics feature. Delve had its own index and its own backend system the Office Graph. All this is not available in std. Search Driven Solutions build with  regular SharePoint Features like in the “Search Based” bullet list.

Donnerstag, 21. August 2014

Unable to reactivate Yammer user in external network

A user with login was first only using a external Yammer network. Let’s call it network. Than the company of the user created an own Yammer enterprise network. Let’s call it The, The user is now also joing the Yammer network of its company. The Yammer network with the DNS suffix became now automatically the primary network for the user because of the domain suffix for his login and of the Yammer network are the same.
The user now was disabled in the external network and could not be reactivated.
Solution: unchecked the option: “Require admin approval for members to join other companies' external networks.”
Only available in Yammer enterprise networks

The user could join the external network in the past because of he did that before the his now primary network with this policy enabled was created.

Montag, 14. Juli 2014

Chapter 2 - SharePoint 2013 Analytics Feature

Using the SharePoint 2013 analytics feature

Found chapter two of my tutorial about using the SharePoint 2013 analytics feature on itunity:

Using the SharePoint 2013 analytics feature

Visit us under                          Follow us on Twitter @itunity01 

Samstag, 21. Juni 2014

Project Oslo and the Office Graph – first indications

At this year SPC in Las Vegas, Microsoft introduced codename Oslo and the Office Graph. If you want to see how the product should look watch this YouTube video:

Microsoft is working on the product. The TAB program is about to start and Oslo is now appearing with status "started" on Yammer release Schedule:
In my Office 365 Tenant belonging to my MSDN Subscription I also found the first indications. I have a look in several other Tenants and can actually not found anything of this. Not sure it´s because of this Tenant is part of an MSDN Subscription.

New result source

Interesting artefact is the new result source: “Local SharePoint Graph”
This result source is not shown under SharePoint online administration or in the site settings menu. It’s actually only visible in the Query Builder. Latest news from Microsoft says that the Office Graph gets its own index. We can assume that this new result source is mapped to the new Graph Index. Actually the new result source shows the same results like the “Local SharePoint Results” source.

Stay tuned about upcoming news about Project Oslo & the Office Graph….

Sonntag, 27. April 2014

Chapter 1 - SharePoint 2013 Analytics Feature

First chapter of my tutorial about SharePoint 2013 Analytics Feature is only on itUnity:
Visit us under                          Follow us on Twitter @itunity01 

Mittwoch, 23. April 2014

Welcome to IT Unity

Welcome to IT Unity!

I am thrilled to share with you the launch of IT Unity , the incredible new site that empowers individuals and organizations to solve business problems with technology. IT Unity is a community of trusted experts, users, business decision makers, IT professionals, developers, and industry solution providers--everyone who works with Microsoft SharePoint and Office 365 (with more technologies to come!)
I invite you to register on and to participate in our Launch Contest. You'll find a site where we can all come together to
  • CONNECT with world-renowned subject matter experts and peers in community-driven forums. Take advantage of experts' regular office hours and ask the questions. Gain invaluable insight through lively discussion of issues that community members are facing.
  • SHARE how you've solved a problem, created a service or product, or developed expertise. IT Unity's global audience and network of industry relationships will enhance your visibility and the impact you can make on the broader community.
  • DISCOVER how SharePoint, Office 365, and other technologies can drive innovation and business value. Find best practices, guidance, lessons learned and other solutions from experts and organizations that have tackled the challenges you face.
  • DEVELOP your knowledge, your skills, your reputation, and your professional network.
IT Unity revolutionizes the way technical content is created, customized, and consumed, and the way individuals and organizations connect with the guidance, expertise, and solutions they need to achieve their business objectives. 
Today, as we launch, you'll find in-depth content from trusted technical and thought leaders, product and service providers, and exciting new voices in the tech community. You'll discover a new resource for asking questions, and getting answers from experts and peers. You'll can create and join professional networks and communities of practice. And you'll learn about how our contributors have solved real-world problems, by using out-of-box technologies, customizations and extensions, and third-party tools.
We've got big plans for IT Unity. We couldn't be more excited to share this news with you.  Thank you for becoming a part of this CommUNITY!

Visit us under                          Follow us on Twitter @itunity01 

Montag, 17. März 2014

Rename public facing website O365 greyed out

Drying to rename public facing website in O365 SharePoint Online is greyed out because of there is no more storage available.

Making storage available activates “Rename Website” button:

Sonntag, 9. März 2014

Future of DocPush feature in SharePoint 2013

One of the most missing features in SharePoint Search is the option to push content direct to the index. In FAST ESP we have that functionality. Within FAST for SharePoint 2010 there was a tool called docpush.exe. Using this tool you can push content to the index. But this tool was not designed for productive use. There were several problems around this. For example if you push a document direct to the index using this tool and the crawler catches it also you have duplicates. During SPC14 the information came up that a push functionality for SharePoint 2013 search was already on the roadmap for SP1. Because of some unsolved problems it did not come with SP1. But this means it’s no longer a question if this function is coming – it’s only the question when it comes.

The function is no longer realized in a separate tool like the docpush.exe in FAST for SharePoint 2010. The function would be integrated as part of the SharePoint 2013 Search REST API. So there is a good changes that it also comes for SharePoint online. Locking forward what that all could mean for missing option to create own content sources for SharePoint Online. Stay patient. News are coming up soon.

Freitag, 28. Februar 2014

Problems fixed by CU´s in SharePoint 2013 Search since release

March 2013 update
Server: KB 2767999
Foundation: KB 2768000
    • When you perform a search on a SharePoint Server 2013-based server, you experience performance problems on the server.
    • The output cache feature does not work on a page on a SharePoint Server 2013 site. This issue occurs when the page contains a Content By Search (CBS) web part.
    • Assume that you use the Cross-Site Publishing feature to create a site on a SharePoint Server 2013-based server. When you perform a search on the site, the search results is greater than the expected number.
    • Assume that you access a SharePoint site that is not in your trusted sites list. When you try to search an item on the site, you receive the following error message:
      • “The display template had an error. You can correct it by fixing the template or by changing the display template used in either the Web Part properties or Result Types.”
    • When you try to perform a search crawl on a list that contains many columns in SharePoint Server 2013, you receive the following error message:
      • “The filename or extension is too long”
    • Assume that you filter data in an Access form on a non-English version of a SharePoint Server 2013 server. In this situation, Full-Text Search in SQL Server does not work correctly. More specifically, the filtering operations are slow or return incomplete results.
    • When you perform a search in a SharePoint Server 2013 search center in backward compatibility mode, the out of box (OOB) site refiner returns incorrect results.
April 2013 update
Server: KB 2726992
Foundation: KB 2751999
  • Assume that you install multiple Search Service applications in SharePoint Server 2013. When you use a Search Service application to crawl a site, managed properties are not displayed in the Search Service application. Instead, the managed properties are unexpectedly displayed in another Search Service application. 
June 2013 update
Server: KB 2817414
Foundation: KB 2817346
  • When you pass query parameters to query rules from Search Web Part on a SharePoint Server 2013 site, the search results are not updated. 

August 2013 update

Server: KB 2817616
Foundation: KB 2817517
  • When you remove a SharePoint Server 2013 server from a SharePoint Server 2013 farm, the search admin component on another SharePoint Server 2013 server crashes continuously.

October 2013 update

Server: KB 2825647
Foundation: KB 2825674
  • This update improves the stability of search components in large server farms.
  • The language selection drop-down list on the search page does not extended fully.
December 2013 update
Server: KB 2850024
Foundation: KB 2849961
  • When you add a friendly URL or a URL to a non-published item under Search Center Navigation on a SharePoint Server 2013 site, you receive the following error message:
    • Sorry, something went wrong
    • An unexpected error has occurred. 
Service Pack 1
Server: KB 2817429
Foundation: KB 2817439
  • Search schema compression is now enabled by default to allow larger search schemas.
  • Highlighting for FQL queries is now enabled for FQL as well as KQL.

Donnerstag, 27. Februar 2014

Query SharePoint Search Analytics using PowerShell

Analytics have been completely revised in SharePoint 2013. Some of the core tech in the previous FAST release has been fused together with SharePoint enterprise search to create a new and powerful analytics engine.
The Analytics Engine is based on two main parts. We have Search Analytics and we have Usage Analytics features. Both parts have own reports which can be found under Site setting and as part of the Search Service Application in Central Admin.
Usage Analytics out-of-the-box report:
Search Analytics out-of-the-box report:

By using PowerShell we can query both Analytics parts and get custom reports.

Usage Analytics:

First of all we have to set the Search Service Application:
 $searchApp = Get-SPEnterpriseSearchServiceApplication

Next step is setting up a site scope for the report:

Now we can execute the request:
$result = $searchApp.GetRollupAnalyticsItemData(1,[System.Guid]::Empty,$Site.ID,[System.Guid]::Empty)

If the report should not have a site focus we had to replace the$Site.ID” part with “[System.Guid]::Empty”.

To focus the report data to a specific day or month we can use the GetHitCountForDay and the GetHitCountForMonth method.
First we had set up the data to which we want to focus:
$FilterDate = Get-Date "2014-01-20"

Then we can use the $FilterDate variable together with both methods:

Search Reports:

Search Analytics cmdlets follows a different syntax. To get data from that engine we also had to setup the 

Search Service Application:
$searchApp = Get-SPEnterpriseSearchServiceApplication

Also in this case we can focus to a specific site using a variable:

The difference now is that we had to set up a date time value for the report. Leaving it blank is no option here:
That command gets the report data for the actual month: [System.DateTime]::Now

The next parameter which is set to falseis the switch for getting data for the month = false or the day = true.
If we want the data for another month than the we have to set up a date variable and use it instead of [System.DateTime]::Now :
$FilterDate = Get-Date "2014-01-20"

Getting farm wide data we also had to replace the $site.ID variable with[System.Guid]::Empty”:
The first parameter with the value “1” is setting the Event Type. Event Type 1 = views. The next parameter is the TenantID, followed by SiteID, date value, month / day switch and the max result value (100 means show me the top 100 search terms).

Samstag, 22. Februar 2014

Create and use own usage event type in SharePoint 2013

The original technet article says the following about usage event types in SharePoint 2013

“Usage events enable you to track how users interact with items on your site. Items can be documents, sites, or catalog items. When a user interacts with an item on your site, SharePoint Server 2013 generates a usage event for this action. For example, if you want to monitor how often a catalog item is viewed from a mobile phone, you can track this activity. This article describes how to create custom usage event types, and how to add code to record custom usage events so that they can be processed by the analytics processing component. You can use the data that is generated by usage events to show recommendations or popular items on your site. This article also explains how to influence how recommendations are shown by changing the level of importance for a specific usage event type.”

So far, so good. Now let’s see how this can be done because of some code snippets in the original article won’t work very well.
In the following example we will create a custom event called “UseFulPage” and add a button to SharePoint to fire that event.

Step 1: create a custom usage event type

#Connect to SSA
$SSP = Get-SPEnterpriseSearchServiceApplicationProxy
#create Event:
#modify the $EventName varibale to your value
$EventGuid = [Guid]::NewGuid()
$EventName = "UseFulPage"
$tenantConfig = $SSP.GetAnalyticsTenantConfiguration([Guid]::Empty)
$newEventType = $tenantConfig.RegisterEventType($EventGuid, $EventName, "")
#manipulate the weight of you event by setting RecommendationWeight & RelevanceWeight
$customEvent = $tenantConfig.EventTypeDefinitions | where-object { $_.EventName -eq $EventName }
$customEvent.RecommendationWeight = 10
$customEvent.RelevanceWeight = 10
#check if the event is created
$tenantConfig.EventTypeDefinitions | select eventTypeId,EventName | ft
The result should be something like that:
The new custom event had several properties and also 2 managed properties (UsageEvent1LifeTime & UsageEvent1Recent) which can directly be used in Search or Search Driven WebParts after the next analytics processing run.
Step 2:  add code to record the custom usage event
In the following script we need the GUID of the event. To get the GUID use this script:

$SSP = Get-SPEnterpriseSearchServiceApplicationProxy
$tenantConfig = $SSP.GetAnalyticsTenantConfiguration([Guid]::Empty)
$tenantConfig.EventTypeDefinitions | select AppEventTypeId,eventTypeId,EventName | ft

To add the event to a SharePoint site I use a JavaScript snippet (thx Markus Alt).
  1. Replace %EventGUID% with the GUID of your custom event.
  2. Replace %URL% with the URL of the site where you place the event. For example:
  3. Use a ScriptEditor WebPart to host the script in your SharePoint site.
<script language="javascript">
function ToEventStore(url)
    alert("Useful Page Event recorded");
        var spClientContext = SP.ClientContext.get_current();
        var eventGuid = new SP.Guid("%EventGUID%");
        SP.Analytics.AnalyticsUsageEntry.logAnalyticsAppEvent(spClientContext, eventGuid, url);
        spClientContext.executeQueryAsync(null, Function.createDelegate(this, function(sender, e){ alert("Failed to log event for item: " + document.URL + " due to: " + e.get_message()) }));
    }, "SP.js");

<button onclick="ToEventStore('http://%URL%')">Useful Page</button>

Step 3: work with the event
Clicking the button brings up a message box which tells you that your click is recorded. That means that the event is send to analytics engine and is processed during the next run. So you have to wait until the next day to see the result. By the way: Analytics data is process only once a day. You can configure the schedule using the Set-AnalysisConfiguration cmdlet. Other important point is that only data from last day is processes, not from the actual day. Bella Engen descried in that post how to manually kick the Analytics so there is no waiting until next day to see the data:

Kicking the event of cause has an impact to the ranking of that site. Another option to bring the result out is to use the managed property “UsageEvent1Recent” in a Search WebPart as a sort option. Doin this you can build an overview based on search showing the most “Useful Pages” in you SharePoint: