How is the Delve Yammer feed configured?


Delve is a great way to discover content and people across Office 365. One of the best social features within Delve is the ability to take part in a Yammer conversation directly against the content.

The Delve conversations experience


As you can see each Delve card has a menu in the bottom right which provides employees with the option to ‘Talk about this in Yammer’.


The conversation panel then pops out and displays all the conversations about that content within your Yammer network.


So how do you need to configure the Yammer Embed widget to match the settings seen in Delve?

Delve makes use of the same Yammer Embed widget as you would anywhere else within Office 365, or other web pages. Using the html inspector in your favourite browser you can see the settings passed by the hosting page to the iframe widget.

Digging deeper you can see that the Delve feed iframe is configured as follows:


& feedType=open-graph
& objectProperties%5Burl%5D=https%3A%2F%2F<tenantname>’s%2520Most%2520Successful%2520Female%2520Olympian.aspx
& objectProperties%5B
& config%5B
& config%5B
& config%5B
& config%5B
& config%5B
& config%5B
& config%5BuseSso%5D=true
& bust=1471035190502″

So the settings are:

  • Feed type: open-graph
  • Private: true
  • PromptText: Talk about this on Yammer
  • DefaultToCanonical: true
  • Header: true
  • HideNetworkName: true
  • Footer: false
  • ShowOpenGraphPreview: false
  • UseSSO: true

So these settings mean that it is defaulted to using the open graph mode. This converts the content url into a rich object in Yammers social graph. Private being true means it requires either a group or people to be mentioned to show to those selections. The prompt text appears in the text box. Header being true makes it show, combined with hiding the network name makes it show ‘Yammer Conversations’. No footer is being shown, so no ‘log out option’. Interesting they choose not to show the open graph object previews. This makes a little sense as that can’t see internal Office 365 data, although you might still want this to be ‘true’ in the case where an employee posts a url that is public. Finally the default to canonical (crazy name for this) means it will seek to use your accounts ‘home’ network rather than default to whichever network you last visited. That’s quite useful as you don’t want to accidently share private corporate links to another network. Use SSO being true means it uses the SSO.

So there you have it, simple settings correct for the context of Delve. Useful to know if you want to have the same experience elsewhere.

What’s new with SharePoint? Microsoft’s Future of SharePoint event round-up


Today Microsoft hosted a Future of SharePoint event, sharing publically for the first time what the SharePoint roadmap has to offer in 2016 and beyond.

It did not disappoint. The event placed SharePoint and OneDrive’s soon-to-be-released simple user experience and rich mobile capability front and centre of Microsoft’s Office 365 offering. Another point of emphasis was the huge leap Microsoft have in empowering employees to be more productive, with significant investments having been made in the document lifecycle experience.

What does this mean for Office 365 customers? Let’s take a closer look.

Improving SharePoint Online’s user experience

There has been a proliferation of intranet-in-a-box products built on SharePoint Online over the past 5 years that aimed to make the SharePoint Online experience more intuitive to employees. Their popularity in the market did not go un-noticed by Microsoft, who have listened and responded to customer demand, with heavy investment being made in SharePoint as a “mobile and intelligent intranet,” as Adam Harmetz, Principal Group Program Manager at Microsoft, informed us today. In 2016 some fantastic new Graph powered enhancements will be introduced to deliver a personalised intranet experience to employees, including a recent activity capability and a recommended sites tool, driven by the actions of those you work with day to day. Team sites will also enjoy a series of updates, in my opinion, making them virtually feature complete from a collaboration standpoint. Favourites, KPI monitors, members, files and spotlights will make up the core team site offering before the year is out.

Microsoft have taken the bold step to reintroduce the SharePoint name into the Office 365 experience and will be swapping out the ‘Sites’ tile for a ‘SharePoint’ tile which comes through to your home experience. This modern and responsive user experience puts all the important sites and groups at your fingertips across your organisation.


Team sites have a huge overhaul and now provide a crisp and mobile ready experience. Your team can now highlight news, documents and announcement updates right on the home page experience.

Team site home 1

Within these Team sites pages gain the beautiful canvas editing experience from the Delve blogs. This will help teams share those important contextual articles about their work and outputs.


The improvements to SharePoint Online’s user experience has been supported with a new SharePoint mobile app experience which delivers an “intranet in your pocket” experience.

SharePoint app users will have on-the-go access to their sites and portals, files, search and people discovery as well as their work stored and managed in SharePoint. What’s more, the new app will also leverage office graph to highlight sites, content and people that are most relevant to the individual.

The SharePoint mobile app comes first to iOS, followed by versions for Windows and Android in the second half of 2016.


Empowering employees to be more productive

Document collaboration has long been the cornerstone use case for SharePoint Online and One Drive for Business. Microsoft are upgrading this experience so that when employees need to bring in files from OneDrive for Business or publish files between document libraries, users can click Move to or Copy to move or copy files to other locations across Office 365, without generating unnecessary versions of the same files. As such, moving a document from One Drive that you may have been working on in isolation, to a team site for wider consumption, will become a quick and easy process.

The Future of SharePoint paradigm series

I’ve been aware of the roadmap announced today for SharePoint Online for a number of months as I was lucky enough to be invited to attended the Developer Kitchen in Redmond at the start of February to play with some of the new tech talked about today. This has kept my company, AddIn365, ahead  in developing products for Office 365 that deliver value over and above what the platform has to offer and the direction of travel for services like SharePoint Online we heard about today. Today’s announcements will exert some much needed pressure on the wider Microsoft SharePoint eco-system to bring harder working value-add solutions to market.

Over the next couple of weeks I’ll be publishing articles on three key areas:


How the Microsoft mobile offering has transformed the use cases for SharePoint, OneDrive and Office 365 for organisations.

User Experience

Exploring the implications for organisations of the new UI and experiences being pushed into service.

SharePoint Framework

A personal favourite, we’ll explore the implications for design, build and tech approaches in readiness for it’s release later this year. Whispers…. TypeScript and Framework wars enter the SharePoint dev conscious (React against AngularJS)

The full Microsoft roundup

For the full details check out the Microsoft blogs:

Vision & Overview Blog

The Future of SharePoint –

SharePoint Server GA & Feature Packs

SharePoint Server 2016—your foundation for the future –

SharePoint mobile app, SharePoint home, team sites, Microsoft Flow & PowerApps integration

SharePoint—the mobile and intelligent intranet –

SharePoint Framework

The SharePoint Framework—an open and connected platform –

It’s great to see that Microsoft are being pro-active in claiming the intranet space as part of their SharePoint Online offering. This will add a lot of value to the Office 365 service for subscribing organisations and will provide one more reason to those thinking about a move to Office 365, for doing so. The new user experiences, fantastic new SharePoint app and enhancements to the document experience fill some feature gaps and benefit from being both simple and intuitive.

SUGUK Yammer Deep Dive presentation

On Thursday April 30th SUGUK held a London session where I presented a session on Yammer deep dive.


Yammer deep dive

Many organisations are considering leveraging Yammer as their Enterprise Social Network (ESN). Office 365 has already taken some steps to integrate the Yammer capabilities by replacing the SharePoint newsfeed and introducing the document conversations. The reality is that these integrations are only the tip of the iceberg with regards the integrations you can achieve with Yammer.
This demo centric session covers in detail the integration options and the steps that a developer or architect can take to bring Yammer into use for a scenario.
We’ll walkthrough:

  • Learn how the Yammer Embed can bring conversations into SharePoint article pages.
  • How to post information into your Yammer network from other systems using OpenGraph.
  • Learn how to use the REST API to discover groups, messages, topics, users and perform advanced searches against the network.
  • Take a look at the cutting edge Azure Logic App and Yammer connector


SharePoint Evolutions 2015 presentations

April 20th – 22nd 2015 saw London play host to SharePoint Evolutions conference. It was a great event organised with so many quality speakers and companies in attendance. It was a privilege to be invited to speak again. This year I had two sessions as you can see below.


Introducing App Launcher

Delivered by: Wes Hackett

Audience: Office 365, Information Worker, Developer
A new feature of Office 365 is the ‘app launcher’ and ‘my apps’ features. These new features provide a new style of navigation experience where all your apps are available from the Office 365 suite bar and the ability for a user to pin their preferred apps. This session introduces the features and the extensibility approaches to have your own apps interact with it.


Yammer development deep dive

Delivered by: Wes Hackett

Audience: Office 365, Developer
Many organisations are considering leveraging Yammer as their Enterprise Social Network (ESN). Office 365 has already taken some steps to integrate the Yammer capabilities by replacing the SharePoint newsfeed and introducing the document conversations. The reality is that these integrations are only the tip of the iceberg with regards the integrations you can achieve with Yammer.
This demo centric session covers in detail the integration options and the steps that a developer or architect can take to bring Yammer into use for a scenario.
We’ll walkthrough:

  • Learn how the Yammer Embed can bring conversations into SharePoint article pages.
  • How to post information into your Yammer network from other systems using OpenGraph.
  • Learn how to use the REST API to discover groups, messages, topics, users and perform advanced searches against the network.
  • Take a look at the cutting edge Azure Logic App and Yammer connector


If you were an attendee you can also watch the DVD of the sessions.

Document conversations does not equal hover panel post


Back in June 2014 Microsoft/Yammer announced the arrival of a new feature call ‘Document Conversations’. Available at the time of writing in some tenants (full roll out is in progress) this feature adds a fly out panel to Document Libraries in Office365. The full details of the feature can be seen on the Office Blog here:

Our Office365 tenant is setup with ‘First Release’ which provides upcoming updates about two weeks prior to their formal rollout. Over the last month we’ve seen the Document Conversations feature coming and going. Hopefully it will be fully completed at some point very soon. During this rollout I took the time to try out the feature and get a feel of how it works.

Document Conversations in action on OneDrive for Business

Browsing to my OneDrive for Business page nothing different appears on the display. As you can see below it still looks the same as when the ‘Site Folders’ rolled out earlier this year.


So to invoke the ‘Document conversation’ window you have to actually browse to the document. As you can see below a new right-hand slither has appeared with the Yammer logo and an indicator to click to expand.


Clicking the Document Conversations bar expands it into the right-hand pane, much like the Apps for Office do in Office 365 Pro. On first use or when you’ve not signed into Yammer you will be prompted to sign in. The screen grab is once sign in has been done. First thing to note here is it isn’t displaying any threads, that’s simply because I had newly created this document for the purpose of this article.


Next lets create a new ‘Yam’ from the ‘Document Conversation’ pane. At this time it allows the user to select a group to post the ‘Yam’ into, interestingly there is no way to setup a default for this. I think it would be awesome if Microsoft had provided a ‘default group’ setting on the hosting Document library settings, as i suspect the feed is using the Yammer Embed which has the ability to set a default group. That way users could configure their defaults and avoid everyone posting into the ‘all company’ group.


After posting the ‘Yam’ it can be seen in the ‘Document Conversation’ pane. Note how its being presented as an OpenGraph object and not a url.


Below is an example of a reply to the conversation thread.


This is the same conversation thread within Yammer.


Posting from SharePoint to Yammer

Before the ‘Document Conversation’ feature was designed and built one of the first Yammer integrations with SharePoint was the ‘Post’ option which appeared on the document hover panels. The screenshot below shows the ‘Post’ option on the same file we just used for the ‘Document Conversation’ demo.


Clicking ‘Post’ launches a modal window with a url in the message body so you can type a ‘Yam’. As you can see from the screenshot this is a pretty basic UI.


The screenshot below is the ‘Post’ in the yammer group.


Comparing the two approaches

So we’ve seen how both approaches seem to work. The one thing that i found puzzling was in the Yammer group i’d seen two threads about the same document. One from the ‘Document Conversation’ pane and one from the ‘Post’ modal dialog. This didn’t make sense on first glance I would have expected both to reference the same item (url) as the OpenGraph object.

Document Conversation

The ‘Document conversation’ thread has the following JSON returned from the API.


The body of the ‘Yam’ contained a url of the file path with query string ?web=1 which when launched opens the document in the Office Online app.


The OpenGraph object is detailed below. Again not the url has the ?web=1 querystring.


Post from hover panel

The ‘Post’ thread has the following JSON returned from the API. We can see nothing special in the thread itself.


The content returned by the ‘Yam’ this time shows the WOPI (Office Online) url has been used.


The view of the attachments xml confirms the information.


So doing it again

Via ‘Post’ creates a brand new post. The ‘Post’ feature adds a brand new OpenGraph object and thus starts a new thread, rather than finding the existing thread and presenting it back to the user in the popup window.



So the two methods use different urls thus become two different OpenGraph objects.

It would be great if Microsoft could bring them into alignment so that there is one solution url so all conversations appear in the same thread.

Delve YamJam summary


This week people who had their Office365 tenants setup with ‘First Release’ started to see the long anticipated Delve (formally Codename Oslo) arriving on the tenants.

Microsoft organised a YamJam for Delve in the Office365 Technical Yammer network here:

This article is a summary of the information which is correct at the time of writing.

Is Delve coming to on-prem?

A hybrid approach is more appropriate due to the complexity and processing power required to drive the OfficeGraph engine. There will be APIs to allow connection to other data sources for the signals driving the OfficeGraph.

Microsoft are planning a hybrid connector that can integrate signals and content from on-premises. They have no current timeline. This is probably going to feature for the scenarios where Lync and/or Exchange have an on-premises installation.

Privacy concerns

Some users concerns around privacy topics. The example cited was that a company Delve was showing trending documents for certain HR documents for example, psychological assistance and domestic partner coverage and maternity benefits. The question was around being able to exclude certain content from producing signals.

The documents could be excluded through the normal SharePoint permissions capabilities. Delve relies on the search index, so excluding a file or folder will exclude it from Delve as well.

Currently there is no feature to exclude documents from Delve but have them available to everyone via SharePoint/Search.

Side note about storing documents from HR in Yammer and the fact that ‘viewing’ it shows up in the activity feed in the top right. This gives people visibility on what other users are looking at, so someone looking at HR docs around maternity is kind of announcing that interest to the whole organisation. Not so good.

Delve does not show ‘who’ viewed a document ever. Trending is invoked when multiple people who have a relationship with you have accessed the doc. The author is the named entity. This is slightly confusing in the UI. At a glance the name appears to be the user who viewed the document. Careful communications would need to be done for this on rollout.

Delve only shows if someone modifies a document (this is available through SharePoint anyway). Delve doesn’t show who viewed the document, where many people have viewed the document Delve says several of your colleagues have viewed this document, but never divulges the names.

‘Trending’ does not mean a person viewed it, only that your colleagues are generating activity around it. (no information on the definition of activity).

CSOM / JSOM API availability

OfficeGraph will have an API. Current information is available here:

Could OfficeGraph be consumed in PowerBI?

In theory this should be possible as its got an API.

Restricting the rollout to specific users

Like an ESN Delve thrives on a wide and deep network of users. By restricting to s subset an organisation would fall into the ‘doomed social pilot’ trap of not enough signals to add the absolute value. Obviously this is an ESN success perspective. Organisations will have reasons for this request, regulation, change mangement and security were all cited.

Also it was noted that you can disable Delve at tenant level, it was unclear as to whether this is the Delve UI alone or included the OfficeGraph underpinnings.

When will I get it?

Currently this is being rolled out to ‘First Release’ tenants first.

What is the Delve UI item display limit?

Answer: 36 documents before adding filters by using search. Microsoft said 36 was chosen as the starting point through internal MS trail data. Their data showed that click rates dropped to zero at a certain point in the page.

Microsoft’s choice of name Delve

Mixed feelings, those who aren’t English speaking said that Delve doesn’t always have a real meaning in some languages. Others just preferred Oslo, and thought Delve didn’t really jump out. As with most questions like this, nothing really bad comes of the name. Lets just hope it doesn’t get a rebrand in 6 months 😉

How will Delve handle existing content and groups?

Being search based it can pick up everything in the tenant today.

Which plans get Delve?

Office365 E1-E4 and corresponding Gov and Academic plans.

At first release Delve gets signals from Exchange, OneDrive for Business, SharePoint Online and Yammer. Primary content surfaced from OneDrive for Business and SharePoint Online team sites.

What determines the people list?

This is the top five people you interact with.

Useful links

Delve documentation:

Delve for Office365 admins here:

OfficeGraph API documentation

Thoughts about migrating content into Yammer from forums


This article hopes to cover the considerations and possible approach for planning and migrating existing forum content into Yammer. Yammer doesn’t provide any form of ‘migration’ or ‘import’ for other system content. They take the stance that the working paradigms created by Yammer are unique to the platform and that managing the transition from old system to Yammer is where the investments should be made. The Yammer article here describes their high level thoughts on the subject, key for me was the statement:

2. Start fresh with content

Our customers’ experience has shown that technical migrations of content are not generally recommended, as information on Yammer tends to be more ephemeral in nature – not necessarily needed as material for future reference. There is better potential for users to be invested in and engaged with the new network if they are empowered to shape its structure and content themselves.

The realities of Client engagements tends to be slightly less black and white, where most want to consider some form of carry across information into Yammer where they have existing knowledge management forums established. Many of our clients have established forums woven into the day to day behaviours, the information within them can’t be wilted on the vine so to speak.

One key takeaway before diving into the more detailed thoughts….

Consider why you are migrating, unless its aligned to a business benefit realisation or business goal then the effort of the migration is mis-aligned to its value to the organisation. Also consider what your new operating model is, don’t migrate an old operating behaviour along with the content, you MUST migrate the content into the new behaviours and approaches you aim to have using Yammer integrated within your organisation.

Understanding the source forum information

Whatever the technology platform involved whether it is SharePoint forums or another forum technology the key element to a successful migration is auditing and understanding the content within the current forums. Key elements to understand are as follows:

  • Users
  • Forums metadata such as Title, description and logo image
  • Security model
  • Thread content
    • Styles of thread, such as single origin, multi-thread
    • Thread parenting, which forum the earliest multi-origin thread comes from
    • Mentioning users
    • Mentioning metadata
    • Attachments
    • Links
  • Value add activities like adding additional tagging or additional metadata content

From there you need to plan the content destinations in Yammer. Not always will there be a one forum to group mapping. In fact, now may be a sensible time to ‘refactor’ the approach to segregation of the conversations to something that is more relevant or easier to understand.


The source system is unlikely to hold user accounts in the same fashion as Yammer. Therefore a mapping exercise is needed. Yammer users are keyed off the email address (the primary key as such).

A full listing of the users who have interacted with the forum needs to be generated. Alongside this a full extract of the Yammer users information should also be requested. In order to have all users within the Yammer Network you must establish the first date your network existed and pull the data from that date. The Yammer data export will only pull data where a user was interactive for that time period. This means you need to go a long way back for the first extract to get all the required user records. Subsequent users can be pulled in more recent extracts if you need to refresh and append data.

From this point you have the source and destination user lists. The next step is to produce a mapping between them. In general a good approach is to manipulate the records in the source user list to append the email address if possible. If you can get the source users to have a unique email address then you can map them directly against the Yammer user list.

From the mapping exercise you’ll be left with users in both lists who are not matched. Ignore the non-matches in Yammer side as they’re not really going to be a problem for migration as they have never interacted with the source forum. The non matched users in the source user list is where the focus should be placed. You have the following options:

  • Map all non-matched forum users to a generic account in Yammer. Something like Company Alumni, this has the advantage that it’s simple to map, and you can tie everything to one central user. During your Yammer rollout you can then inform the user base about the Alumni user and promote this as historic facts. The disadvantage of this approach is if there is value in knowing who made every thread post. Consider a situation where the discipline for the forum is more detailed and technical, users may still require to know who made which comment in order to trace that individual even outside of the organisation.
  • Map all non-matched forum users to newly created Yammer users. The advantage of this is that the user to thread relationship is maintained. Disadvantages is that you will have to consider how users are managed. If DIRSync is being performed this may be more complex. Also these users need to be active during migration and then suspended once the threads are added.

For the purposes of forum migration it is unlikely you need to consider the values within the user profiles and migrating those, but again this is worth discussing for your scenario.


Consider how you will be mapping in the existing forums. Do the existing forums contain threads which span wide topics? Could it be beneficial to split the existing forum into smaller segments, in which case the thread mapping to Yammer Groups needs to establish this. Also consider that the groups may not yet exist, so you might have to work out the creation and admin assignment as well. Be careful not to orphan any threads which are topics that no longer fit into the Yammer Group structure.

Also the big difference between Yammer Groups and many forum based technologies is that the Yammer Groups lack any form of hierarchy, so where a source forum may be grouping several sub sections the Yammer Groups don’t behave in this fashion. My thoughts here is that you should structure the Yammer Network to support the new working patterns you are creating. It is likely that the Yammer rollout is in support of other initiatives. So consider if the new Groups are topic/subject centric now, and how you might have to map threads into these topics. Many of the implementations we have been rolling out use a SharePoint site to aggregate the groups into a form of hierarchy or associations. This is a loose coupling though and a sensible approach, the association to hierarchy is only appropriate if the user scenario warrants it, such as a knowledge network.

Group metadata such as name, logo and description are also key for discovery by users within the Yammer Network. Consider also telling users which the primary language is for the group. Yammer has a pretty good translation mechanism using Bing Translate, but some groups naturally centre around a specific language.

Consider User membership for new Yammer Groups, do you want to add the users from the existing forums to the new Yammer Group? Sometimes this is a straight mapping one to one, sometimes if you re-jig the structure it becomes more complex. A simple algorithm is to capture all the users involved in the group threads and make sure they get added to the Group members. Again this in principal goes against what I’d normally be proposing, Users really shouldn’t be forcibly added to group it’s bad practice for good engagement and really annoys people.

Threads and Content

Threads and content form the cornerstone of the forum experience, in Yammer these map roughly to ‘Conversations’ and individual ‘Yams’. The Yammer paradigm is quite straight forward structure wise.

  • Network – The overall container for all the content
  • Groups – The segmentation of the content within the network into groupings of people who generate content
  • Conversation (aka a thread) – The conversations which are started and replied too
  • Yam (aka a message) – An individual post within the conversation thread.


Each thread message needs to be analysed for the following:

  • It’s parent message, so that it can be correctly associated into a new Yammer conversation
  • Any forum members mentioned in the content, so that the correct @mentions can be inserted into the new Yam
  • Any tagging used, so that the correct @mentions can be inserted into the new Yam (I know it sounds weird to say @ mentions again, but the user and tags are effectively the same with some meta data differences)
  • Any attachments being referenced by the message, so that the correct handling approach can be used (more about attachments in a minute)
  • Any Hrefs within the content, so that you can decide how to deal with the link (more about that in a few more lines)


Handling Hrefs can take a couple of formats:

  • Keep them as is and just ensure they map into the content specification of Yammer
  • Modify the url against a mapping rule set, creating a permanent redirection to other migrated content
  • Modify the url against a mapping service, creating a permanent redirection but to something that can manage the redirection as content moves around in supporting platforms

If you go for an external link redirection service consider how long this will be in place for. Consider the overall benefits of redirection and watch the analytics tracing to ensure that users are still getting benefits from the service.

I did consider using SharePoint query rules as a way to manage redirection. Imagine that you create key threads in Yammer, you can create the links within them to point to a SharePoint site, each site can have its own query rules for content promotion. So where you’re knowledge management community also has a SharePoint site collection you can implement a local collection of search schema search query rules. If you take this approach you can effectively ‘map’ a Href into a search based url with specific terms. Then it fires across to SharePoint and the relevant promoted results would be presented.


Dealing with attachments can take several forms:

  • Uploading the content into Yammer directly and effectively storing that content in Yammer
  • Making reference to external sources such as a web page where the content lives

Depending on your requirements may mean choosing the option most relevant almost on a message by message basis. My recommendation would be to store information outside of Yammer where it better aligns with collaboration systems such as Office365 sites, and upload directly where it makes more sense as social content. The obvious examples are a rule set which treats all Office document formats as upload to SharePoint and things such as images go into Yammer. You may also decide to treat some messages as ‘OpenGraph’ and have Yammer treat them as more like a notification than a message.

Thread sharing

Yammer allows a thread to be shared once created to another group. When sharing the thread sharer can choose to add additional text to the conversation share. Once shared the thread is effectively a new thread with its own content. So with this in mind you need to analyse the forum sharing paradigm in the current forums and decide how to map them into Yammer.

In situations where a thread appears across multiple forums. For example:

  • Original post goes into forum A, then is shared to forum B and C
  • When a user view either forum A,B or C the entire thread appears, thus capturing all the conversation once, but displaying it in multiple places

You need to consider how this maps into the Yammer sharing paradigm. I think the most sensible approach is to decide which Yammer Group the thread is most suited for, this is probably a manual decision in most cases. Once targeted for a specific group post the whole thread to that group, then share the complete thread into other groups. It might also be work retrospectively adding ‘tags’ to the thread.


Yammer has a tagging concept called ‘Topics’. Each thread can be tagged with topics to help discoverability. A user can elect to follow a specific Topic. So when migrating content analyse the content for potential topics and ensure they are tagged in the Yam with Topics. This is a value add activity and would require quite a lot of intelligence to identify topics in existing threads.


As you add new Yams to the Yammer threads you can’t influence the date stamp. So if you require date stamps to be known the only real solution is to append the information into the Yam text.


Always a thorny issue, the conflicting paradigms of information security and engagement and openness working like a network.

There is definitely no right answer about how to handle security, so these thoughts are where I’d propose you started.

Yammer’s paradigm really needs Yammer Groups to remain publically visible and readable to reap the benefits from working like a network. So you need to plan how to ensure information which might have been secure remains so. Often the existing forums are restricted security wise by ‘membership’ as a way to keep a tight control of who can edit, often driven by reporting and funding concerns about membership numbers rather than true data sensitivity. For this scenario in most cases adopting the public group paradigm is fine.

Where you need a private group, say for example the Board, then using a Private group is perfectly acceptable.

You will need to audit the information in every thread for its compliance if you want to be 100% sure that you’ve not shown restricted information from the existing forums in the new Yammer Groups.

User engagement and roll out

Although not strictly migration in the technical sense don’t under estimate how you need to deal with users moving them from the old world into the new. Thinking about how to help users find threads that have moved.

One possible solution to this is to add a new reply in the existing forums which contains information about the thread location within Yammer. This helps anyone who has the old thread bookmarked come away with a smile as they can navigate to the Yammer conversation and continue the discussions. It also allows for a time of dual running where some but not all threads have made it into Yammer.

Another aspect to consider is publishing the whole process for the end user to read. Sounds little bonkers at first, why should users care or be told about the internals of an IT project. Well if you think about what Yammer has as a central pillar… it’s openness. So help users get into the correct mind set.

Yammer Technical

App Registration

The processing app must be registered within Yammer. Instructions for the App Registration process can be found in the Yammer Developer Center:

Once the migration processing app is registered the Client Id and Client secret can be used by the app to make calls into the Yammer Network.


The processing app must authenticate to Yammer in order to make calls the API. Information about the authentication process and options can be found in the Yammer Developer Center:

OAuth Impersonation

To interact with the Yammer API on behalf of another user you will need to use a Verified Admin account for the processing app and have it call the relevant REST API endpoint to collect the user token for the user in question. Information about impersonation can be found in the Yammer Developer Center:


The Yammer API allows you to retrieve, create, update and suspend (soft delete) users. Information about the exact API call format can be found here:

Rate limits

The migration processing app must have logic to throttle the calls made to Yammer as to not exceed these thresholds. It should also monitor the responses and act accordingly to retry and ensure data integrity in the event of API calls being blocked. Information about the Yammer REST API rate limits can be found on the Yammer Developer Center:

The content at the time of writing is as follows:

API calls are subject to rate limiting. Exceeding any rate limits will result in all endpoints returning a status code of 429 (Too Many Requests). Rate limits are per user per app. There are four rate limits:

Autocomplete: 10 requests in 10 seconds.

Messages: 10 requests in 30 seconds.

Notifications: 10 requests in 30 seconds.

All Other Resources: 10 requests in 10 seconds.

These limits are independent e.g. in the same 30 seconds period, you could make 10 message calls and 10 notification calls


Also useful during the process is the availability of an Enterprise Yammer network, mainly so you can get the admin functions like data export and impersonation working. The question over having a discreet ‘dev’ network came up, my personal thoughts are as follows. If you’re not ‘live’ with Yammer while doing the migration work then why not simplify the moving parts by keeping just the main Network. At the end of the day you can always try things in a private group first to write your processing code, then open it up once the code is tested. Worst case you add messages you need to delete later. This keeps costs down. If however you’re already using Yammer, then best to go for multiple Networks. Again it’s your choice, but Yammer is a service that you can’t actually customise, so your options are safer in my opinion.

NB: This information is my pre-execution thinking and hopefully after the work is complete I’ll come back and make any amendments to the information.

Example Yammer analytics reporting

So over a couple of Yammer rollouts now this is a collection of the reporting that has been requested.

This is a possible collection of analytic reports for Yammer:

Group user membership activity

  1. As a group owner I would like to view the breakdown of new joiners to the group.
    • So that I can make sure they are introduced and helped to get started by community managers in my group.
  2. As a group owner I would like to view the breakdown of leavers from the group.
    • So that I can understand who is no longer part of the group and contact them to discuss why.
  3. As a group owner I would like to compare a list of users who are tagging with specified ‘topics’ against whether they are members of the group. (this one is to help me find new members based on understanding who is using tags this group uses but is not currently a member of the group).
    • So I can invite non-members to the group as they are tagging with topics central to the group.
  4. As a group owner I would like to identify users who are making positive/negative contributions.
    • So that I can drive engagement by understanding how to focus the community management to drive positive contributions.

Group activity

  1. As a group owner I would like to view the breakdown of current participation within the group members based on their contribution activity levels. Users can either be ‘lurking’, ‘active’ or ‘very active’.
    • So that I can encourage increased positive participation.
  2. As a group owner I would like to know how much activity new joiners are generating in the group.
    • So that I can help new users become involved within the group and increase my groups positive contributions.
  3. As a group owner I would like to know how many new threads were created in the group.
    • So that I can ensure that the group is engaged in new conversations.
  4. As a group owner I would like to know how many threads have been revived which were dormant in the group.
    • So that I can understand if existing content is generating new activity and why that activity may have occurred.
  5. As a group owner I would like to know a ranking of threads based on length of conversations (number of subsequent Yams).
    • So that I can see which conversations generated the most discussion.
  6. As a group owner I would like to know a ranking of threads based on number of user participants.
    • So that I can see the conversations which engaged the largest numbers of users, this will allow me to understand why the conversation was popular and tailor any future community management activity.
  7. As a group owner I would like to know a ranking of threads based on ‘likes’.
    • So I can see which conversations were liked, so that I can understand if any follow ups could be useful based on the conversation topics.
  8. As a group owner I would like to know a ranking of threads based on ‘topics’.
    • So I can see how the folksonomy within the group is forming and help guide it.
  9. As a group owner I would like to know a ranking of threads based on ‘shares’.
    • So I can see which threads are being shared and where they are shared to help build new relationships with other groups.
  10. As a group owner I would like to know a ranking of threads with ‘praise’.
    • So I can see which users have been praised within the group and that praise liked the most, thus support for the praise.
  11. As a group owner I would like to know a ranking of which threads were most responsive (the time between Yams being shortest).
    • So that I can see which were ‘hot’ conversations and determine why that might have been, was it topic, peoples availability.
  12. As a group owner I would like to list any threads with zero replies.
    • So that I can help the author of the yam get an answer or help them find someone who could help.
  13. As a group owner I would like to view the distinct users yamming in the group.
    • So that I can see who my active users are in the group.
  14. As a group owner I would like to view all the polls performed in the group.
    • So that I can see what people are polling about and help shape future group engagement.
  15. As a group owner I would like to view all the praise in the group.
    • So that I can see who has been making good contributions.
  16. As a group owner I would like to know how much activity has been done around the group notes.
    • So that I can understand how much content is being generated and maintained within the group.
  17. As a group owner I would like to know about the file activity within the group, such as type/size.
    • So that I can understand how much file based content is being stored within the group and what types of content it is.
  18. As a group owner I would like to understand any content which has been deleted from the group.
    • So that I can understand why it was deleted.
  19. As a group owner I would like to understand the level of positive versus negative yams within the group.
    • So that I can understand the split of positive and negative sentiment.
  20. As a group owner I would like to understand the top users contributing to the group.
    • So that I can champion them as influencers within the group.
  21. As a group owner I would like to understand the average thread number within the group.
    • So that I can improve engagement.


  1. As a group owner I would like to map the locations of my group members.
    • So that I can understand the location spread of group members to help me target information.
  2. As a group owner I would like to view a breakdown of my group membership by job role.
    • So that I can understand the role areas my group covers to help me target information.
  3. As a group owner I would like to view a breakdown of my group membership by job grade.
    • So that I can understand the grades for the group members to help target information.
  4. As a group owner I would like to view a breakdown of my group membership by length of service.
    • So that I can understand how to engage with people in the group.
  5. As a group owner I would like to view a breakdown of my group membership by organisation element such as division.
    • So that I can understand which areas of the business are coming together.
  6. As a group owner I would like to view a breakdown of my group membership by primary language.
    • So that I can tailor the language guidance for the group.
  7. As a group owner I would like to view a breakdown of my group membership by region.
    • So that I can understand which regions are coming together within the group.
  8. As a group owner I would like to view a breakdown of my group membership by office location.
    • So that I can tailor activity to drive engagement for a specific office location.

Overall Network activity

  1. As a network leader I would like to understand the level of positive versus negative comments across the network tracked over a period of time.
    • So that I can understand the sentiment of the network usage to help foster a positive environment.
  2. As a network leader I would like to understand the total number of users within the network.
    • So that I can understand how much of the business is a member of the network.
  3. As a network leader I would like to have a list of user who are not directly part of the business within the network.
    • So that I can ensure compliance and security considerations are being managed correctly.
  4. As a network leader I would like to understand the total number of yams across the network tracked over a period of time.
    • So that I can ensure the business is utilising the network.
  5. As a network leader I would like to understand the topics being used across the network.
    • So that I can understand which subjects my organisation are discussing.
  6. As a network leader I would like to understand the number of yams which do not have a reply across the network.
    • So that I can chase up the community leaders for those groups to help get a response.
  7. As a network leader I would like to identify top influencers and champions across the network.
    • So that I can understand who the champions are and why they are influencers.
  8. As a network leader I would like to identify my most active groups and those under threat of becoming dormant.
    • So that I can promote them within the organisation.
  9. As a network leader I would like to view an activity trend over time across the network.
    • To ensure I understand what has been active and to ensure the network engagement is growing within the organisation.
  10. As a network leader I would like a list of top users by contributions across the network.
    • So that I can promote these individuals to the network as champions.
  11. As a network leader I would like a list of top groups by contributions across the network.
    • So that I can understand the most engaged groups.
  12. As a network leader I would like a list of users mentioned the most across the network.
    • So that I can understand who is being brought into conversations across the network.
  13. As a network leader I would like a list of the users with the most followers across the network.
    • So that I can understand where the spheres of influence are within the network.
  14. As a network leader I would like a list of the network admins.
    • So that I can ensure the right people are performing the role.
  15. As a network leader I would like a list of group admins across the network.
    • So that I can ensure the right people are performing the community manager roles within groups.
  16. As a network leader I would like to know a ranking of users by group admin.
    • So that I can see which users are managing the most groups in order to make sure they are provided the support to provide the right engagement.

I’d welcome any additional requests or comments on those listed above. I’ve listed them with numbers to help with any commenting.

Data model for the Yammer export files

With the Enterprise version of Yammer as an admin you can export your network from a selected date up to current. The files that are exported contain the information within your network. This post is a quick run through the data model from the files. Where I can see examples of the data types in the csv I have detailed them.

Files that come from the export page:


  • Id > number
  • Name > text
  • Email > email
  • Verified > TRUE/FALSE


  • Id > number
  • File_id > number
  • Name > text
  • Description > text
  • Uploader_id > number
  • Uploader_type > enum (User/
  • Group_id > number
  • Group_name > text
  • Reverted_to_id > ?? Assume number
  • Deleted_by_user_id > ?? Assume number
  • In_private_group > TRUE/FALSE
  • In_private_conversation > TRUE/FALSE
  • File_api_url > URI
  • Download_url > URI
  • Path > file path
  • Uploaded_at > date
  • Deleted_at > date


  • Id > number
  • Name > text
  • Description > text
  • Private > TRUE/FALSE
  • Moderated > TRUE/FALSE
  • Api_url > URI
  • Created_by_id > number
  • Created_by_type > enum (USER/)
  • Created_at > date
  • Updated_at > date
  • Deleted > TRUE/FALSE


  • Id > number
  • Replied_to_id > number
  • Thread_id > number
  • Conversation_id > ?? Assume number
  • Group_id > number
  • Group_name > text
  • Participants > text
  • In_private_group > TRUE/FALSE
  • In_private_conversation > TRUE/FALSE
  • Sender_id > number
  • Sender_type > enum (USER/)
  • Sender_name > text
  • Sender_email > email
  • Body > text
  • Api_url > URI
  • Attachments > text (opengraphobject:)
  • Deleted_by_id > number
  • Deleted_by_type > enum
  • Created_at > date
  • Deleted_at > date


  • Id > number
  • Page_id > number
  • Creator_user_id > number
  • Published_by_user_id > number
  • Collaborator_user_ids > number (something weird with this column)
  • Name > text
  • Group_id > number
  • Group_name > text
  • Reverted_to_id > number
  • Deleted_by_id > number
  • Deleted_by_type > Enum
  • In_private_group > TRUE/FALSE
  • Page_api_url > URI
  • Download_url > URI
  • Path > file path
  • Published_at > date
  • Deleted_at > date


  • Id > number
  • Name > text
  • Created_by > number
  • Created_at > date
  • Api_url >URI


  • Id > number
  • Name > text
  • Email > email
  • Job_title > text
  • Location > text
  • Department > text
  • Api_url > URI
  • Deleted_by_id > number
  • Deleted_by_type > enum
  • Joined_at > ?? Assume date
  • Deleted_at > date
  • Suspended_by_id > number
  • Suspended_by_type > enum (USER)
  • Suspended_at > date
  • Guid > guid
  • State > enum (soft_delete/active

Yammer SharePoint App Installation Error


Yammer and Microsoft released a new SharePoint app available in the Office Store here: Yammer App details

This is a great first step towards better Yammer and SharePoint integration Smile

However on installing it on some sites I encountered an error:


If this was an on-prem installation I’m sure the ULS would be giving some huge clues as to what is up, but I was lucky enough to be using Office365 (I love the fact bugs are Microsoft’s problem to diagnose Smile). So the only way forward was to raise Service Request. So after some problem investigation with the Support guy we got to the answer.

The key reason this App fails to install is the supported locales from Microsoft. As you can see from the screenshot below, only US English is a supported locale.


Ok so nothing massively unusual there? Nope in SP2010 this is the only English available, but with SP2013 Microsoft finally worked out the UK uses ‘proper’ English with all it’s quirky spellings for things like ‘colour’. So with this in mind all of our tenant site collections are set to UK English as the locale, as you can see in the screenshot below.


So when you add the app you think everything would be fine…. oh how wrong you’d be… So the add new app pops the ‘trust’ dialog. My first comment here is that it also includes the language options, so not really only about ‘trust’ is it.


Second bad user experience here is that the languages selection is hidden by default. So being a typical user I didn’t read the information and clicked ‘trust it’. And that’s when the install error happens.

So what should you be doing?


So the killer ‘feature’ is that the ‘Trust it’ dialog is picking up the current sites default locale (in this case English UK) and installing the app with that locale. Now if you remember the Yammer App only supports English US locale, so you need to select this locale from the dropdown.


So now the app is installing with its supported English US locale into our English UK sites. So our users get the language they want in most of SharePoint and Yammer works in it’s supported language.



I think this is pretty bad that it defaults to install in a locale it doesn’t support and provides no feedback to the user. So this experience is littered with badly designed UX and errors which would be very easy to avoid, and thus wasting the time of both the user and MS Support. Sad smile Lets hope someone fixes this in some later releases.

Further fixes and information can be found here:

I hope this saves someone the hassle of raising a ticket for something so simple.