<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Ask Yammer</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/askyammer/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/askyammer/feed.xml</link>
    <description>Thoughts from the Yammer Support Escalation Team</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:30:01 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Yammer API Primer</title>
      <link>https://docs.microsoft.com/archive/blogs/askyammer/yammer-api-primer</link>
      <pubDate>Tue, 05 Sep 2017 15:08:50 GMT</pubDate>
      <dc:creator><![CDATA[ablaine]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/askyammer/?p=455</guid>
      <description><![CDATA[While most day to day tasks can be accomplished in the Yammer web app, utilizing our APIs can open...]]></description>
      <content:encoded><![CDATA[While most day to day tasks can be accomplished in the Yammer web app, utilizing our APIs can open up administrative and automation options previously very time consuming.  If you’ve never worked with an API before, this can seem like a daunting task.  With this article, I hope to demystify APIs and illustrate how anyone can utilize them to perform tasks like obtaining, posting, and deleting messages.
<h3>Parts of an API call</h3>
There are 3 main parts of an API call:
<ol>
 	<li>The endpoint URL. A list of our supported API endpoints, their URLs and the input they take can be found at <a href="https://developer.yammer.com/docs/rest-api-rate-limits">https://developer.yammer.com/docs/rest-api-rate-limits</a>.</li>
 	<li>The authorization headers – This is akin to logging into the API. It tells the API who is making the call and that you’re authorized to make those calls.</li>
 	<li>Any data passed to that API endpoint – For example a user id or a page number. Each endpoint’s documentation will describe the data it can consume when generating its output.</li>
</ol>
<h3>Authorizing an API call</h3>
Every API call must be authorized before it will return data. To authorize an API call, an authorization header with the OAuth token is sent stating who is making the call.  To obtain this OAuth token, first register an app in Yammer, detailed at <a href="https://developer.yammer.com/docs/app-registration">https://developer.yammer.com/docs/app-registration</a>.  If you are unsure what to put as the Website and Redirect URI, just put an https:// address to your company’s website for the time being.  Once the app is registered, click “Generate a developer token for this application” and save this OAuth token.  It will be used it to authorize your API calls and won’t expire until <a href="https://blogs.technet.microsoft.com/askyammer/2016/11/01/when-does-a-user-getting-logged-out-of-yammer/">something is explicitly done to revoke it</a>.

&nbsp;

[caption id="attachment_465" align="alignnone" width="485"]<a href="https://msdnshared.blob.core.windows.net/media/2017/09/110.png"><img src="https://msdnshared.blob.core.windows.net/media/2017/09/110.png" alt="App Registration" width="485" height="510" class="wp-image-465" /></a> App Registration[/caption]

&nbsp;

[caption id="attachment_475" align="alignnone" width="457"]<a href="https://msdnshared.blob.core.windows.net/media/2017/09/23.png"><img src="https://msdnshared.blob.core.windows.net/media/2017/09/23.png" alt="" width="457" height="283" class="wp-image-475" /></a> Obtaining an OAuth token[/caption]

Once you have obtained this OAuth token, you need to pass it to the API in a header.  This header looks like “Authorization: Bearer OAUTH_TOKEN” in plain text, but an example of passing this in PowerShell can be found below.
<h3>Using PowerShell to call Yammer APIs</h3>
To make API calls in PowerShell, the Invoke-RestMethod cmdlet documented at <a href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-restmethod?view=powershell-5.1">https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-restmethod?view=powershell-5.1</a> will be used.  Here is a sample script that calls the <a href="https://developer.yammer.com/docs/messagesjson">messages.json endpoint</a> and dumps its response: its response:
<pre>$uri = "https://www.yammer.com/api/v1/messages.json"
$token = "YOUR_OAUTH_TOKEN_HERE"
$headers = @{ "Authorization" = "Bearer " + $token }
$response = Invoke-RestMethod -Method Get -Uri $uri -Header $headers
Write-Output $response</pre>
<h3>Passing data to an API endpoint</h3>
There are 3 main ways to pass data to an API endpoint.
<ol>
 	<li>In the endpoint, itself. For example, to get info on a user by their user_id (documented at <a href="https://developer.yammer.com/docs/usersidjson">https://developer.yammer.com/docs/usersidjson</a>), you call the endpoint <a href="https://www.yammer.com/api/v1/users/186029475.json">https://www.yammer.com/api/v1/users/186029475.json</a> where 186029475 is the user_id</li>
 	<li>In query string variables, like page numbers. From <a href="https://developer.yammer.com/docs/usersin_groupidjson">https://developer.yammer.com/docs/usersin_groupidjson</a>, this might look like <a href="https://www.yammer.com/api/v1/users/in_group/5678.json?page=2">https://www.yammer.com/api/v1/users/in_group/5678.json?page=2</a> where the ? separates the endpoint URL from its query string variables.  To pass multiple variables, you separate them with an &amp; like <a href="https://www.yammer.com/api/v1/users/in_group/5678.json?page=2&amp;reverse=TRUE">https://www.yammer.com/api/v1/users/in_group/5678.json?page=2&amp;reverse=TRUE</a></li>
 	<li>In the body of the message, specifically when using the POST method</li>
</ol>
For 1 and 2 above, you change nothing about your API calls except the actual URL you pass. 3 is a little more complicated and I’ll illustrate its use with an example.  In this example, you will be posting a message to a specific group.  You’ll need a group_id to do this and you can locate one by navigating to a group in Yammer and look for the “feedId=####” in the URL and the #### is your group_id.
<h3>POST in PowerShell</h3>
To POST data to an API, information like the body of the message and the group to post into must be sent to the API.  In this example, a format called json (JavaScript Object Notation) is used to pass this data.  First, the content-type header stating the data is being sent as json is added.  Next, a $jsonbody variable is created to hold the json data.  The -Method Post is used instead of Get and add the -Body $jsonbody is added to the Invoke-RestMethod call.
<pre>$uri = "https://www.yammer.com/api/v1/messages.json"
$token = "YOUR_OAUTH_TOKEN"

$headers = @{
"Authorization" = "Bearer " + $token
"content-type" = "application/json"
}

$jsonbody = '{
"body": "Hello World!",
"group_id": 8510571
}'

$response = Invoke-RestMethod -Method Post -Uri $uri -Header $headers -Body $jsonbody

</pre>
You could also pass the body data as unencoded text in which case you would change the content-type and body.  This would look like:
<pre>$uri = "https://www.yammer.com/api/v1/messages.json"
$token = "YOUR_OAUTH_TOKEN"

$headers = @{
"Authorization" = "Bearer " + $token
"content-type" = " application/x-www-form-urlencoded"
}

$formbody = “body=Hello+World!&amp;group_id=8510871”
$response = Invoke-RestMethod -Method Post -Uri $uri -Header $headers -Body $formbody</pre>
<h3>Deleting in PowerShell</h3>
Just like creating and reading resources via our API, messages can be deleted by users authorized to do so.  Users are authorized to delete their own messages, group admins are authorized to delete messages in groups where they’re an admin, and verified admins can delete any posts they can see (<strong>Note</strong>: For Verified Admins to delete messages in private groups / messages to which they don’t belong, they must first <a href="https://servicestk.microsoft.com/#/labor/entryhttps://support.office.com/en-us/article/Monitor-private-content-in-Yammer-verified-admins-b5271fe7-62aa-4dc4-a1d7-b2b0bd23edae">enable Private Content Mode</a>).  In this example you will be deleting a message with a specific ID (1234) as documented at <a href="https://developer.yammer.com/docs/messagesid">https://developer.yammer.com/docs/messagesid</a>.  You’ll need the specific message ID to be deleted which is most often found in a Data Export.  The biggest change you’ll notice is the -Method changes to “Delete”.
<pre>$uri = "https://www.yammer.com/api/v1/messages/1234"
$token = "YOUR_OAUTH_TOKEN"
$headers = @{ "Authorization" = "Bearer " + $token }
$response = Invoke-RestMethod -Method Delete -Uri $uri -Header $headers</pre>
<h3>Troubleshooting</h3>
When API calls don’t give the expected results, the two best troubleshooting resources available are Fiddler and the Yammer Developer Center.  If you haven’t installed Fiddler already, you can obtain it from <a href="https://telerik.com/download/fiddler">https://telerik.com/download/fiddler</a><span>.</span>  To start, open Fiddler and hit F12 (or click “Capturing” in the bottom left of the window) to make it stop capturing traffic in the left pane.  Duplicate the failing API call in the Fiddler Composer and execute it:

[caption id="attachment_476" align="alignnone" width="1061"]<a href="https://msdnshared.blob.core.windows.net/media/2017/09/33.png"><img src="https://msdnshared.blob.core.windows.net/media/2017/09/33.png" alt="Get Example" width="1061" height="520" class="wp-image-476 size-full" /></a> Get Example[/caption]

&nbsp;

[caption id="attachment_485" align="alignnone" width="604"]<a href="https://msdnshared.blob.core.windows.net/media/2017/09/43.png"><img src="https://msdnshared.blob.core.windows.net/media/2017/09/43.png" alt="Post Example" width="604" height="615" class="wp-image-485 size-full" /></a> Post Example[/caption]

Double click the line that is generated in the left pane (the API call’s “session” in Fiddler) and the inspectors will show up:

<a href="https://msdnshared.blob.core.windows.net/media/2017/09/51.png"><img src="https://msdnshared.blob.core.windows.net/media/2017/09/51.png" alt="" width="212" height="452" class="alignnone size-full wp-image-486" /></a>

Make sure Headers is clicked on the bottom pane and review the response code and reason listed under Response Headers:
<ol>
 	<li>“HTTP/1.1 401 Unauthorized” could indicate either your OAuth token is invalid or you’re trying to do something you’re not allowed to do (like post to a private group to which you don’t belong)</li>
 	<li>“HTTP/1.1 403 Forbidden” could indicate you’re making calls from a blacklisted IP address</li>
 	<li>“HTTP/1.1 400 Bad Request” indicates the request isn’t formatted properly. For example, if the content-type header is missing when posting a message</li>
 	<li>“HTTP/1.1 500 Internal Server Error” indicates you sent something in the API request that Yammer didn’t know how to handle</li>
</ol>
Once you’ve made sure you’re authorized to perform the action you’re trying to perform, the next step is to make sure you’ve formatted your API call properly.  For this, head to the Yammer Developer Center at <a href="https://developer.yammer.com/docs/rest-api-rate-limits">https://developer.yammer.com/docs/rest-api-rate-limits</a> and find the API being used.  As an example, let’s pretend you don’t know how to post a message to a group (which was covered above).  Note that when creating a resource (like a new post in Yammer), you use the POST method so find the POST message endpoint page located at <a href="https://developer.yammer.com/docs/messages-json-post">https://developer.yammer.com/docs/messages-json-post</a> and scroll to the bottom where it says Try It Out.  You know the body is going to be “Hello World!” and the group is going to be 8510571, so input that into the form and click Try It! (you might first have to authorize the Yammer Developer Center app on your Yammer account):

<a href="https://msdnshared.blob.core.windows.net/media/2017/09/61.png"><img src="https://msdnshared.blob.core.windows.net/media/2017/09/61.png" alt="" width="832" height="276" class="alignnone size-full wp-image-495" /></a>

It will then show you the exact request that was made to the API and the response.  The relevant part of this is shown here:

<a href="https://msdnshared.blob.core.windows.net/media/2017/09/71.png"><img src="https://msdnshared.blob.core.windows.net/media/2017/09/71.png" alt="" width="782" height="291" class="alignnone size-full wp-image-505" /></a>

You’ll note that things like the Accept, accept-encoding, content-length, and direct_to_user_ids get added automatically.  You don’t have to add these to your call to be successful but adding them for good measure is still a good idea.  Compare these values to what you’re passing in your code and see what is different.  If you’re unable to identify the problem, open a support case for further assistance. You also see that the status code for a successful call is 201 Created.  You won’t use this in your call, but you can use that to test for a successful call in your code.
<h3>Next Steps</h3>
Armed with these tools, you should be able to implement things otherwise not possible like implementing a data retention policy where every month you check for messages that fit some specific criteria (for instance if they are more than a year old) and purge them based on your security needs.

A “reply bot” could also be implemented that watches a group and automatically replies to new posts based on your own criteria.  If you have a customer support group and see people frequently posting without ticket numbers, you could have the reply bot check for that and reply if it doesn’t find a valid number letting them know what they’ve missed.

When designing these apps, part of the difficulty is identifying the correct endpoints to do what you need.  The only endpoints Yammer supports are listed at <a href="https://developer.yammer.com/docs/rest-api-rate-limits">https://developer.yammer.com/docs/rest-api-rate-limits</a> so I’ll look through that list to find what I need.  For example, if I wanted to leave a group, I’d look for group based endpoints. I see GET /messages/in_group/…, POST /group_memberships.json, DELETE /group_memberships.json, and GET /users/in_group/…  Based on those group endpoints, you could deduce if you want to delete your membership to a group, you’d use the DELETE /group_memberships.json endpoint.  Looking at its documentation at <a href="https://developer.yammer.com/docs/group_membershipsjsongroup_idid-1">https://developer.yammer.com/docs/group_membershipsjsongroup_idid-1</a>, you’ll see it leaves a group.

I’ll be writing more blog posts with ideas and examples of how to implement our APIs to perform specific tasks, so stay tuned for those as well.
<h3>About the Author</h3>
Alex Blaine is a Support Escalation Engineer and code monkey on the Yammer Support Escalation team.]]></content:encoded>
    </item>
    <item>
      <title>Preauthorizing the Yammer JS SDK</title>
      <link>https://docs.microsoft.com/archive/blogs/askyammer/preauthorizing-the-yammer-js-sdk</link>
      <pubDate>Fri, 04 Nov 2016 05:05:54 GMT</pubDate>
      <dc:creator><![CDATA[ablaine]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/askyammer/?p=445</guid>
      <description><![CDATA[Under normal circumstances, users will have to create a Yammer session before using the JS SDK in...]]></description>
      <content:encoded><![CDATA[Under normal circumstances, users will have to create a Yammer session before using the JS SDK in scenarios like apps integrated on intranet pages.  If you’re able to implement both server and client side scripting and pull the current user’s email address, you can use this guide to preauthorize a Yammer session so apps utilizing the JS SDK will be as seamless as possible.
<h4>Prerequisites and Assumptions</h4>
<ol>
 	<li>You have created an app in Yammer and properly configured the JavaScript Origins</li>
 	<li>You have an app utilizing the Yammer JS SDK with users manually authenticating as per our documentation at <a href="https://developer.yammer.com/docs/js-sdk">https://developer.yammer.com/docs/js-sdk</a></li>
 	<li>You can utilize both client and server side scripting. The language and method of implementing the server-side scripting component is entirely dependent on your specific environment and configuration.</li>
 	<li>You can obtain the current user’s email address from the server’s side</li>
</ol>
&nbsp;
<h4>Procedures</h4>
<ol>
 	<li>Obtain a Verified Admin token for your application in one of the following 2 ways
<ol type="a">
 	<li>Create the app with a Verified Admin account and then in the app’s Basic Info page, click “Generate a developer token for this application.” Note that you’ll need to use this app’s info in the JS SDK and any subsequent calls.</li>
 	<li>Use the process outlined at <a href="https://developer.yammer.com/docs/test-token">https://developer.yammer.com/docs/test-token</a> with a Verified Admin account to get an OAuth token for that VA account. Note that you must use the app info used to generate this token in all future steps.</li>
</ol>
</li>
 	<li>Obtain the current user’s email address in the server-side script.</li>
 	<li>Using the VA token obtained in step 1 to authenticate, pass the user’s email address to our Get User by Email Address endpoint documented at <a href="https://developer.yammer.com/docs/usersby_emailjsonemailuserdomaincom">https://developer.yammer.com/docs/usersby_emailjsonemailuserdomaincom</a>, and then process the response
<ol type="a">
 	<li>If the call to the API endpoint returns a 200 OK response, first check the “state” field to make sure the user is “active” and if so, store the “id” field that’s returned and go to step 4</li>
 	<li>If the call returns a 404 or a state other than “active,” direct the user to finish creating and activating their account however you like.</li>
</ol>
</li>
 	<li>Once you have the user’s ID, you can pass it to our Impersonation endpoint to obtain a pre-authorized OAuth token for that user. This endpoint is documented at <a href="https://developer.yammer.com/docs/impersonation">https://developer.yammer.com/docs/impersonation</a> and must use the VA token obtained in step 1 to authorize the call, and the consumer_key of your JS SDK app.</li>
 	<li>You now have an OAuth token for the current user. When generating the code being passed to the browser, have the client side JS SDK code first call yam.platform.getLoginStatus and if there’s no active session and you have a token from step 4, pass that token to yam.platform.setAuthToken($tokenFromStep4, optional_callback_function_if_desired(response)).  If you don’t have a valid token, direct the user to finish setting up their Yammer account.</li>
 	<li>Continue making JS SDK calls as you normally would, without needing the user to authenticate.</li>
</ol>
&nbsp;
<h4>Pseudocode</h4>
Note: This code should live on the page where you’re hosting the Yammer JS SDK app.  This code should be rewritten in your server side scripting language and curl library’s format.  This code should go right before your JS SDK Code.

&nbsp;
<pre>&lt;% // Start server side code
/* You’ll first need to get a Verified Admin OAuth token for your app.  I’m storing it in $theToken here */

/*
You will also need a way to obtain the email address of the current user.  This will be different depending
on where you’re hosting the Yammer app, but the most common way is to query the environment hosting the app
to get the logged on user’s email address.  I’m storing it in $theUserEmail here
*/

 

$theToken = “123-AoieuarKhwarIalIHY39A”;        // Store VA Token

$theUserEmail = getAuthenticatedUserEmail();    // Store user’s email

 

/* Get User ID */

$curl = newCurlObject();                        // This will be specific to your language and curl implementation

$curl.setHeader(“Authorization: Bearer “ + $theToken); // Sets the auth header

$theEndpoint = “https://www.yammer.com/api/v1/users/by_email.json?email=” + $theUserEmail;

$response = $curl.execute($theEndpoint);        // Make a call to the API endpoint with the email address appended

$theCode = $curl.getStatusCode();               // Get the response code from the API call

if($theCode == 404)

  $goodUser = false;                              // This user can’t be impersonated

 

$theUserData = json_decode($response);          // Get the json data into an array

if($theUserData["state"] == "active") {

  $goodUser = true;                               // This is an active user

  $theUserID = $theUserData["id"];                // Store the user’s ID

} else {

  $goodUser = false;                              // This user isn’t active and can’t be impersonated

}

/* We now know if the user is an active Yammer user and if so, their User ID */


/* Get impersonated OAuth token for the user */

$clientId = "your_client_id";                   // Obtained from the Basic Info section of your app under Client ID

$curl = newCurlObject();                        // This will be specific to your language and curl implementation

$curl.setHeader("Authorization: Bearer " + $theToken);   // Sets the auth header

$theEndpoint = "https://www.yammer.com/api/v1/oauth/tokens.json?user_id=" + $theUserID + "&amp;consumer_key=" + $clientId;

$response = $curl.execute($theEndpoint);        // Make a call to the Impersonation API endpoint with the user id

$theCode = $curl.getStatusCode();               // Get the response code from the API call

if($theCode == 200) {

  $theTokenData = json_decode($response);         // Get the json data into an array

  $theUserToken = $theTokenData["token"];         // Store the impersonated token

}

 

/*
At this point you have the info you need from the server side scripting and you need to inject it
into the code sent to the browser.  Ending server side code
*/
%&gt;
 

&lt;script type="text/javascript" data-app-id="YOUR-APP-CLIENT-ID" src="https://c64.assets-yammer.com/assets/platform_js_sdk.js"&gt;&lt;/script&gt;
&lt;script&gt;

yam.platform.getLoginStatus(function (response) {

  if (response.authResponse) {

    // Do nothing, the user is already authenticated

  } else {

    &lt;% // Back to server side code

    if($goodUser) {

      print "yam.platform.setAuthToken(" + $theUserToken + ")"; // Set the token we obtained

      // Continue with the rest of your JS SDK calls in your app

    } else {

      print "Please &lt;a href='yammer.com'&gt;activate your Yammer account&lt;/a&gt; to use this app";

    }

  // End server side code
  %&gt;

  }

});

</pre>
&nbsp;
<h4>More information</h4>
<ul>
 	<li><a href="https://developer.yammer.com/docs/js-sdk">Yammer JS SDK documentation</a></li>
 	<li><a href="https://developer.yammer.com/docs/usersby_emailjsonemailuserdomaincom">Find user by email API documentation</a></li>
 	<li><a href="https://developer.yammer.com/docs/impersonation">Impersonation API documentation</a></li>
</ul>
&nbsp;
<h4>About the author</h4>
Alex Blaine is a Support Escalation Engineer on the Yammer Support Escalation team.]]></content:encoded>
    </item>
    <item>
      <title>When does a user getting logged out of Yammer?</title>
      <link>https://docs.microsoft.com/archive/blogs/askyammer/when-does-a-user-getting-logged-out-of-yammer</link>
      <pubDate>Tue, 01 Nov 2016 10:00:50 GMT</pubDate>
      <dc:creator><![CDATA[ablaine]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/askyammer/?p=435</guid>
      <description><![CDATA[When a user logs in to Yammer on the web, mobile application or authenticate with a Yammer app, they...]]></description>
      <content:encoded><![CDATA[When a user logs in to Yammer on the web, mobile application or authenticate with a Yammer app, they get a token. The token for the Yammer mobile application and to a Yammer app will be valid as long as the user is active (and they didn’t revoke access to the app). On the web the session has the lifetime of the browser (See <a href="https://support.office.com/en-us/article/Session-timeouts-for-Office-365-37a5c116-5b07-4f70-8333-5b86fd2c3c40?ui=en-US&amp;rs=en-US&amp;ad=US&amp;fromAR=1">Session timeouts for Office 365 </a>this article for more details).

Customers often wants to make sure that users can’t post to Yammer once they left the organization. Another related request is to understand why does a user got logged out of Yammer. This post describes the different scenarios in which Yammer will destroy the user’s token, which will results in the user getting logged out of Yammer.
<h3>User is suspended in Yammer</h3>
When a user is suspended in Yammer, all of their tokens are destroyed. Suspended user will be in this state for 90 days and then will be deleted.

The user can activate their accounts only if they still have access to it. For example – if the user is using Office 365 credentials they still need to be able to access their Office 365 account in order to activate their Yammer account. Even if the user has activated their account, they will still need to obtain a new token for each of the application they used by authenticating again on each of them.

<strong>Users are suspended in Yammer in the following scenarios:</strong>
<ol>
 	<li><strong>Office 365 account is deleted</strong> – This scenario is relevant for Yammer users that uses Office 365 credentials to login to Yammer (mapped account). Changes in the Office 365 account are synced to Yammer and so does the user’s status. When the user is deleted in Office 365, the Yammer user will get suspended.
More information: <a href="https://support.office.com/en-us/article/Manage-Yammer-users-across-their-lifecycle-from-Office-365-6c4c8fff-6444-404a-bffc-f9da0bcc3039">Manage Yammer users across their life cycle from Office 365</a>&nbsp;</li>
 	<li><strong>Yammer license is removed from an Office 365 account</strong> – This scenario is also relevant for mapped Yammer accounts. When a licenses is removed in Office 365 - the user in Yammer is suspended.
More information: <a href="https://support.office.com/en-us/article/Manage-Yammer-user-licenses-in-Office-365-34a67e3a-3fd8-4e54-bffb-dd5ad0e48590?ui=en-US&amp;rs=en-US&amp;ad=US">Manage Yammer user licenses in Office 365</a>. &nbsp;</li>
 	<li><strong>Verified Admin action</strong> – User can be suspended by a Yammer verified admin from the “Remove user” page (under Yammer Network Admin). Users can also be suspended by Verified admin as a result of “Suspend” action in bulk update. More information: <a href="https://support.office.com/en-us/article/Managing-your-Yammer-users-Yammer-admin-guide-0fc72b66-cbf1-4202-bcf0-f2174ea96798">bulk update and deactivating users in Yammer</a>.&nbsp;</li>
 	<li><strong>Yammer DSync (legacy tool)</strong> – Users can also be suspended if you are still using the legacy Yammer DSync tool to sync users from OnPrem AD to Yammer. When a user is deleted or Disabled in AD - Yammer DSync will suspend the user.NOTE: Yammer DSync will be deprecated on December 1st 2016. More info: <a href="https://support.office.com/en-us/article/Plan-for-Yammer-SSO-and-DSync-deprecation-847366a4-30c8-49d1-94cc-9d2452f6d43a">Plan for Yammer SSO and DSync deprecation</a>.&nbsp;</li>
 	<li><strong>A user can suspend other users</strong> - by clicking on “If &lt;user&gt; is no longer a part of the &lt;network&gt; click here”. This suspension will destroy the user’s tokens. If the user is still an active user, they can login to Yammer and reactive the account.&nbsp;</li>
</ol>
<h3>Tokens are destroyed but the user is still active</h3>
There are a few scenarios where the tokens are destroyed but user is still active. In order to obtain a new token the user needs to authenticate again with Yammer.
<ol>
 	<li><strong>Logging out all users from the network</strong> – When a verified admin makes the configuration changes to disable Yammer SSO and enable ‘Enforce Office 365 identity’, they have the option to log out all the users from the network. Taking this action will destroy the tokens for all users in the network from all their devices and applications. We recommend to use this setting when disabling Yammer SSO in order to make sure that the users in the network will have to login again to Yammer, this time with their Office 365 credentials. This is not a mandatory setting.In order to log out all the users from the network, verified admin can take the following steps: Login to Yammer as a verified admin and go to the <strong>Network Admin</strong> and then go to the <strong>Security settings</strong> page. Under the <strong>Security settings</strong>, mark the checkbox next to <strong>Enforce Office 365 identity</strong>. When promote, mark the setting next to <strong>Logout all users from the network</strong>.&nbsp;</li>
 	<li><strong>User is blocked in Office 365</strong> – This scenario is relevant for Yammer users that uses Office 365 credentials to login to Yammer (mapped users). If you use Azure AD connect to sync users from OnPrem AD to Office 365, when a user is disabled in AD they will be blocked in Office 365. Office 365 users can also be blocked from the portal.When a user is blocked in Office 365, in Yammer we will destroy all tokens, but the user will remain active in Yammer. The user must be able to login to Office 365 in order to login to Yammer; As long as the user is blocked – they won't be able to login. &nbsp;</li>
 	<li><strong>User mapping process –</strong> I have mentioned above a few scenarios that are relevant for Yammer users that uses Office 365 credentials to login to Yammer. For existing Yammer users (that weren’t created from Office 365), before a user in Yammer can use their Office 365 credentials, we need to connect the Yammer account to the Office 365 account (mapping process). Information about how we connect these accounts can be found in the article below (under “How it works” section). For this post, it is important to remember that as part of the mapping process we also destroy all of the user’s token, so they have to login again for all the apps that they were using prior to the mapping. This is a one time process.
Information about how we connect the Office 365 account to the Yammer account can be found here: <a href="https://support.office.com/en-us/article/Office-365-sign-in-for-Yammer-b1745e3c-d4d7-4e20-a155-ebf85106b998">Office 365 sign-in for Yammer</a>. &nbsp;</li>
 	<li><strong>User action</strong> – A user can also revoke access for apps they have approved before. This action is in the app level and doesn’t destroy all tokens. Login to Yammer and go to the user’s profile. Click on Edit Settings and select the My Applications tab. Under my application, the user will see the list of apps they have approved. The user then click on “Remove Access” for a specific app.&nbsp; </li>
 	<li><strong>Network is disabled as part of deprovision process –</strong> Yammer follows the Office 365 data deletion guidelines described below. If the Yammer subscription has expired at first step the Yammer network will be disabled and the tokens of all users in the network will be destroyed. If the network is later enabled because there is a new valid Yammer subscription available in the tenant, users will need to authenticate again for all their apps.
More information about the Office 365 data deletion process: <a href="https://support.office.com/en-us/article/What-happens-to-my-data-and-access-when-my-Office-365-for-business-subscription-ends-4436582f-211a-45ec-b72e-33647f97d8a3">What happens to my data and access when my Office 365 for business subscription ends?</a>&nbsp; </li>
</ol>
&nbsp;

<strong>About the author</strong>

Inbar Cizer Kobrinsky is a Support Escalation Engineer in the Yammer Support Escalation team.]]></content:encoded>
    </item>
    <item>
      <title>Find Office 365 users with Yammer licenses</title>
      <link>https://docs.microsoft.com/archive/blogs/askyammer/find-office-365-users-with-yammer-licenses</link>
      <pubDate>Tue, 25 Oct 2016 17:39:26 GMT</pubDate>
      <dc:creator><![CDATA[ablaine]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/askyammer/?p=375</guid>
      <description><![CDATA[Many times, we see customers that would like to know how many of their users have license for a...]]></description>
      <content:encoded><![CDATA[Many times, we see customers that would like to know how many of their users have license for a specific Office 365 service. This post focuses on how to locate the users with Yammer licenses using PowerShell, it is based on this TechNet article: <a href="https://technet.microsoft.com/en-us/library/dn771771.aspx">View account license and service details with Office 365 PowerShell </a>with some changes regarding Yammer.
<h3>Before you begin</h3>
The procedures in this topic require you to connect to Office 365 PowerShell. For instructions, see <a href="https://technet.microsoft.com/en-us/library/dn975125.aspx">Connect to Office 365 PowerShell</a>.

It is important to remember that Yammer license can assigned by the “Yammer Enterprise” subscription (Yammer standalone subscription) or as part of another subscription that includes Yammer (such as Office 365 Enterprise E3). In my Office 365 tenant, I have Yammer as part of the Office 365 Enterprise E3 subscription. If you have multiple subscription that include Yammer, make sure you are running this procedure for all of the subscriptions. To locate list of subscriptions available on your tenant use:
<pre>Get-MsolAccountSku</pre>
In order to locate the users that have Yammer license assigned, you will need to first find the “LicenseIndexNumber” and “ServiceIndexNumber” in your tenant. These values can be different from tenant to tenant based on the subscriptions assigned to the tenant.
<h3>Locate LicenseIndexNumber and ServiceIndexNumber</h3>
Find the “LicenseIndexNumber” by running the following command:
<pre>Get-MsolUser -UserPrincipalName <span style="color: #ff0000">&lt;UPN&gt;</span>| Format-List DisplayName,Licenses
<a href="https://msdnshared.blob.core.windows.net/media/2016/10/20160914-115702.png"><img src="https://msdnshared.blob.core.windows.net/media/2016/10/20160914-115702.png" alt="20160914-115702" width="1571" height="201" class="alignnone size-full wp-image-405" /></a></pre>
In my tenant, I’m looking for the location of the “yeslogin:ENTERPRISEPACK” (the E3 subscription). As you can see above, LicenseIndexNumber in my tenant will be 0 because it is located in the first index of the array.

Find the “ServiceIndexNumber” by running the following:
<pre>(Get-MsolUser -UserPrincipalName &lt;UPN&gt;).Licenses[&lt;LicenseIndexNumber&gt;].ServiceStatus
<a href="https://msdnshared.blob.core.windows.net/media/2016/10/20160914-1207291.png"><img src="https://msdnshared.blob.core.windows.net/media/2016/10/20160914-1207291.png" alt="20160914-120729" width="1454" height="398" class="alignnone size-full wp-image-415" /></a></pre>
As you can see, I have replaced “LicenseIndexNumber” with 0 (based on the results of the previous command). In my tenant ServiceIndexNumber will be 3 because it is located in the fourth index of the array.
<h3>Find users with Yammer licenses</h3>
Once you have the above information, you can run the following command to locate all users with Yammer licenses:
<pre>Get-MsolUser -All | where {$_.isLicensed -eq $true -and $_.Licenses[&lt;LicenseIndexNumber&gt;].ServiceStatus[&lt;ServiceIndexNumber&gt;].ProvisioningStatus -ne "Disabled" -and $_.Licenses[0].ServiceStatus[9].ProvisioningStatus -ne $null }

</pre>
This is an example of one of the users that was return in the above command. From the E3 subscription, Only Yammer is assigned to this user.

<a href="https://msdnshared.blob.core.windows.net/media/2016/10/20160914-121819.png"><img src="https://msdnshared.blob.core.windows.net/media/2016/10/20160914-121819.png" alt="20160914-121819" width="263" height="252" class="alignnone wp-image-425" /></a>
<h3>More information</h3>
<ul>
 	<li><a href="https://support.office.com/en-us/article/How-to-audit-Yammer-users-in-networks-connected-to-Office-365-99f6f0e1-5a8d-4546-979d-564a5a453a8c?ui=en-US&amp;rs=en-US&amp;ad=US">How to audit Yammer users in networks connected to Office 365</a></li>
</ul>
<strong>About the author</strong>

Inbar Cizer Kobrinsky is a Support Escalation Engineer in the Yammer Support Escalation team.]]></content:encoded>
    </item>
    <item>
      <title>Join External networks on Yammer</title>
      <link>https://docs.microsoft.com/archive/blogs/askyammer/join-external-networks-on-yammer</link>
      <pubDate>Thu, 21 Jul 2016 15:11:29 GMT</pubDate>
      <dc:creator><![CDATA[ablaine]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/askyammer/?p=295</guid>
      <description><![CDATA[As a Verified Admin of a canonical Yammer network, you can decide if users in your network can join...]]></description>
      <content:encoded><![CDATA[As a Verified Admin of a canonical Yammer network, you can decide if users in your network can join other external networks. For example, as an admin you can approve your user’s requests to join external networks.

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/20160628-144512.png" rel="attachment wp-att-296"><img src="https://msdnshared.blob.core.windows.net/media/2016/07/20160628-144512.png" alt="External Network Settings" width="821" height="381" class="alignnone size-full wp-image-296" /></a>

In this post we will describe the approval process for a user who wants to join an external network of another organization, when user's home network admin has set above mentioned setting to require the admin’s approval.
The user Gal from the Contoso network, wants to join Fabrikam External network – They request an invite.

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/20160628-144912.png" rel="attachment wp-att-305"><img src="https://msdnshared.blob.core.windows.net/media/2016/07/20160628-144912.png" alt="Request to join external network" width="918" height="382" class="alignnone size-full wp-image-305" /></a>

The request is sent to the external network’s verified admin. Under the cog menu, the admin of “Fabrikan External” can see “Pending requests”. The Pending request page will include Gal’s request to join the external network.

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/20160628-145105.png" rel="attachment wp-att-315"><img src="https://msdnshared.blob.core.windows.net/media/2016/07/20160628-145105.png" alt="Pending Requests " width="423" height="366" class="alignnone size-full wp-image-315" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/20160628-145232.png" rel="attachment wp-att-316"><img src="https://msdnshared.blob.core.windows.net/media/2016/07/20160628-145232.png" alt="Requests" width="956" height="157" class="alignnone size-full wp-image-316" /></a>

When the admin of the external network approves this request, a pending account on the network is created for the user.

More information about how to understand the different user state and read the export report can be found here <a href="https://blogs.technet.microsoft.com/askyammer/2016/04/28/interpreting-a-yammer-user-export/">https://blogs.technet.microsoft.com/askyammer/2016/04/28/interpreting-a-yammer-user-export/</a>

In the next step, the user (Gal), will need to request approval from the admin of his home network. The user needs to login to his home network. Under the menu they will see “Pending Network Invites”.

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/20160628-145612.png" rel="attachment wp-att-326"><img src="https://msdnshared.blob.core.windows.net/media/2016/07/20160628-145612.png" alt="Pending Network Invites" width="437" height="278" class="alignnone size-full wp-image-326" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/20160628-145736.png" rel="attachment wp-att-335"><img src="https://msdnshared.blob.core.windows.net/media/2016/07/20160628-145736.png" alt="Invitations " width="1075" height="247" class="alignnone size-full wp-image-335" /></a>

Once the user requests an approval, the request is sent to the admin of their home network (Contoso.com).

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/20160629-133050.png" rel="attachment wp-att-365"><img src="https://msdnshared.blob.core.windows.net/media/2016/07/20160629-133050.png" alt="Pending Requests " width="440" height="388" class="alignnone size-full wp-image-365" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/2016/07/20160629-132900.png" rel="attachment wp-att-357"><img src="https://msdnshared.blob.core.windows.net/media/2016/07/20160629-132900.png" alt="Approve Requets" width="1115" height="231" class="alignnone size-full wp-image-357" /></a>

Once the request is approved, the user’s account on the external network will become active.

<strong>About the author</strong>

Inbar Cizer Kobrinsky  is a Support Escalation Engineer in the Yammer Support Escalation team.]]></content:encoded>
    </item>
    <item>
      <title>Interpreting a Yammer User Export</title>
      <link>https://docs.microsoft.com/archive/blogs/askyammer/interpreting-a-yammer-user-export</link>
      <pubDate>Thu, 28 Apr 2016 22:06:34 GMT</pubDate>
      <dc:creator><![CDATA[ablaine]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/askyammer/?p=185</guid>
      <description><![CDATA[User Export
Admins can use this document to assist with looking up data on your users, as well as...]]></description>
      <content:encoded><![CDATA[<h3>User Export</h3>
Admins can use this document to assist with looking up data on your users, as well as being able to perform an audit of the users who are members of your network. Additionally, admins can perform user maintenance based off the current state of your users based on this data.

&nbsp;
<h4>Performing the Export</h4>
Yammer Network Admins have the ability to export user information for their network. To export the data use the Export Users feature. (Settings <a href="https://msdnshared.blob.core.windows.net/media/2016/04/pic1-settings-gear.png"><img class="alignnone size-full wp-image-195" src="https://msdnshared.blob.core.windows.net/media/2016/04/pic1-settings-gear.png" alt="pic1-settings gear" width="34" height="30" /></a> &gt; Network Admin &gt; Export Users). There are two options available for the User Export:
<ul>
 	<li>Export All Users: This will export every user on the Yammer Network</li>
 	<li>Export All users since – to specify a date range</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/2016/04/pic2-user-export-settings.jpg"><img class=" size-full wp-image-205 alignnone" src="https://msdnshared.blob.core.windows.net/media/2016/04/pic2-user-export-settings.jpg" alt="pic2 - user export settings" width="390" height="263" /></a>
<h4>Contents of the Export</h4>
User Export will export the data into a zip file containing a CSV file and txt files. There will be five files within the User Export Folder: Admin.csv, Networks.csv, users.csv, log.txt, and request.txt.

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/pic-3-user-export-files.jpg"><img class=" size-full wp-image-206 aligncenter" src="https://msdnshared.blob.core.windows.net/media/2016/04/pic-3-user-export-files.jpg" alt="pic 3 - user export files" width="603" height="306" /></a>

&nbsp;

&nbsp;

Admins.csv: Contains a list of all Network and Verified admins.
Networks.csv: Contains data pertaining to your network.
Users.csv: Contains a list of all users on the network within the specified time period.
log.txt: Contains a summary of the number of users who were exported.
request.txt: Contains a summary of the parameters that were used for the data export.

&nbsp;
<h4>Interpreting the Export:</h4>
&nbsp;

<b>Users.csv</b>
<a href="https://msdnshared.blob.core.windows.net/media/2016/04/pic-4-userspt1final.png"><img class="alignnone size-full wp-image-225" src="https://msdnshared.blob.core.windows.net/media/2016/04/pic-4-userspt1final.png" alt="pic 4 userspt1final" width="713" height="44" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/pic-5-userspt2final.png"><img class="alignnone size-full wp-image-235" src="https://msdnshared.blob.core.windows.net/media/2016/04/pic-5-userspt2final.png" alt="pic 5 userspt2final" width="637" height="44" /></a>
<h5>Description of fields:</h5>
id: User ID
name: User’s display name
email: User’s e-mail address
job_title: User’s job title
location: User’s location
department: User’s department
api_url: The URL used to obtain user metadata (for more information, see our documentation at: https://developer.yammer.com/docs/usersidjson)
deleted_by_id: If user was deleted by another user, the ID of the user who performed the deletion
deleted_by_type: Describes the method by which the user was deleted
joined_at: The date the user first logged into Yammer (In an External Network export, this indicates the date the user joined the network)
deleted_at: Date user’s account was deleted
suspended_by_id: The ID of the user who suspended an account
suspended_by_type: The method used to suspend a user
suspended_at: The date a user was suspended
guid: A Unique ID generated by your Active Directory for each user. In Yammer, we receive that GUID following a successful synchronization.
state: The current state of the user: active or soft_delete status
<a></a>
<table border="1">
<tbody>
<tr>
<td style="padding: 10px;background: lightgrey"><strong>NOTE:</strong>
A user who is in a soft_delete state indicates the user is either:
<ul>
 	<li>Pending if there are no joined_at, suspended_at, or deleted_at values</li>
 	<li>Suspended if the user has a suspended_at value and not a deleted_at value</li>
 	<li>Deleted if the user has a deleted_at value.</li>
</ul>
Guest users can be identified in the user export by reviewing the email address field. Guests would be any user whose email address does not match the domains that have been added to your network. You can identify the domains currently merged into your network by navigating to the Network Migration page under Network Admin. See https://aka.ms/YamNetMig for additional details on this.</td>
</tr>
</tbody>
</table>
&nbsp;

&nbsp;

<b>Admins.csv:</b>

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/pic-6-admins.png"><img class="alignnone size-full wp-image-245" src="https://msdnshared.blob.core.windows.net/media/2016/04/pic-6-admins.png" alt="pic 6 - admins" width="274" height="41" /></a>
<h5>Description of fields:</h5>
id: User ID
name: User’s display name
email: User’s e-mail address
verified: Indicates if user is a Verified Admin

&nbsp;

<b>Networks.csv</b>

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/pic7-networks1.png"><img class="alignnone size-full wp-image-265" src="https://msdnshared.blob.core.windows.net/media/2016/04/pic7-networks1.png" alt="pic7 networks1" width="623" height="51" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/pic8-networks2.png"><img class="alignnone size-full wp-image-266" src="https://msdnshared.blob.core.windows.net/media/2016/04/pic8-networks2.png" alt="pic8 networks2" width="641" height="51" /></a>
<h5>Description of fields:</h5>
id: Network’s ID
permalink: Network’s permalink
name: Network’s name
url: Network’s URL
paid: If a network is paid or free
created_at: The date the network was created at
moderated: If the network is moderated
usage_policy: If the network has a usage policy implemented
number_of_users: Number of users on the network
secure_browser_token: If the network has an authentication token
<h3>About the authors</h3>
<strong>David Schmitt</strong> is a Support Engineer and <strong>Alex Blaine</strong> is a Support Escalation Engineer in the Yammer Support Escalation team.]]></content:encoded>
    </item>
    <item>
      <title>Your Office 365 tenant is associated with two or more canonical (home) Yammer networks</title>
      <link>https://docs.microsoft.com/archive/blogs/askyammer/your-office-365-tenant-is-associated-with-two-or-more-canonical-home-yammer-networks</link>
      <pubDate>Fri, 15 Apr 2016 19:59:37 GMT</pubDate>
      <dc:creator><![CDATA[ablaine]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/askyammer/?p=95</guid>
      <description><![CDATA[Have you recently received an email from Yammer stating that your Office 365 tenant is associated...]]></description>
      <content:encoded><![CDATA[Have you recently received an email from Yammer stating that your Office 365 tenant is associated with two or more Yammer networks? If you are wondering what that means and what you can do – we are here to help.

A Yammer network can be associated with an Office 365 tenant in several ways:
<ul>
	<li>One Office 365 tenant associated with one Yammer network (1 tenant: 1 network)</li>
	<li>One Office 365 tenant associated with many Yammer networks (1 tenant: many networks)</li>
	<li>Many Office 365 tenants associated with one Yammer network (many tenants: 1 network)</li>
</ul>
This document explains in more detail the implications of each of these configurations. For more information on moving from a 1 tenant: many networks configuration to a 1 tenant :1 network state, please see our documentation located at <a href="https://support.office.com/en-us/article/About-Yammer-networks-and-Office-365-tenants-85516b0c-79ad-4483-8534-4477c8d26e1a?ui=en-US&amp;rs=en-US&amp;ad=US" target="_blank">https://support.office.com/en-us/article/About-Yammer-networks-and-Office-365-tenants-85516b0c-79ad-4483-8534-4477c8d26e1a?ui=en-US&amp;rs=en-US&amp;ad=US</a> .

We will use the following example to explain the configuration:
The Office 365 tenant has 4 domains:
<ol>
	<li>Contoso.onmicrosoft.com</li>
	<li>Contoso.com</li>
	<li>TailSpin.com</li>
	<li>Fabrikam.com</li>
</ol>
Tied to this tenant are two Yammer networks and a domain not associated with a Yammer network. The networks can be either enterprise or free.
<ol>
	<li>Network 1 has contoso.com and contoso.onmicrosoft.com.</li>
	<li>Network 2 has TailSpin.com.</li>
	<li>Fabrikam.com was not added to any of these networks.</li>
</ol>
<a href="https://msdnshared.blob.core.windows.net/media/2016/04/pic11.png"><img class="aligncenter size-full wp-image-96" src="https://msdnshared.blob.core.windows.net/media/2016/04/pic11.png" alt="Starting configuration" width="720" height="492" /></a>

&nbsp;

From our experience, many times customers are not aware of additional networks or these networks are not in use. If you don’t want to keep the networks separated – you can proceed with the steps described below.
<h3>Using the Network Migration portal to move to a 1:1 configuration</h3>
Merging your networks is a relatively easy task. As first step, you would need to understand which networks are associated with your tenant. You can use the Network Migration portal built into Yammer to identify other networks tied to your tenant and merge them into your primary Yammer network. For more information on this, please see <a href="https://aka.ms/YamNetMig" target="_blank">https://aka.ms/YamNetMig</a> for our documentation on this feature.
In this case, you will login in to network 1 and go to the network migration page.
The first step of the wizard will list all the domains associated with the network and the domains that are verified on the Office 365 tenant but not added to the Yammer network. Some of these domains can be associated with other Yammer networks and some can be domains that were not added to any Yammer network. In our case, TailSpin.com is a Yammer network and Fabrikam.com is not associated with any Yammer network.

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/pic2.jpg"><img class="aligncenter size-full wp-image-105" src="https://msdnshared.blob.core.windows.net/media/2016/04/pic2.jpg" alt="Network Migration step 1 of 3" width="854" height="565" /></a>

&nbsp;

The second step of the wizard will tell which of these domains is associated with a network and can be merged. In this case, only TailSpin.com can be merged.

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/pic3.jpg"><img class="aligncenter size-full wp-image-135" src="https://msdnshared.blob.core.windows.net/media/2016/04/pic3.jpg" alt="Network Migration Step 2 of 3" width="917" height="426" /></a>

Before you continue with the merge – If you would like to understand what content and users are in this network - you can sign up to the network with email address of the domain associated with the network. If you would like to export the data – contact support. Once you are ready to merge – proceed to step 3. Repeat this step for every network you would like to merge.

Once you merged all the networks into one network – your configuration looks as follows:

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/pic4.png"><img class="aligncenter size-full wp-image-145" src="https://msdnshared.blob.core.windows.net/media/2016/04/pic4.png" alt="Network Merged" width="744" height="271" /></a>

&nbsp;

Once you merged all the networks available, you can trigger a synchronization of any additional domain from Office 365 to Yammer. In our case, Fabrikam.com is not linked to any network. The next time a domain change will happen in Office 365 (Domain is added or removed or default domain is set) – it will trigger a synchronization of the domains to Yammer. At this point fabrikam.com will be added to your Yammer network.

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/pic51.png"><img class="aligncenter size-full wp-image-155" src="https://msdnshared.blob.core.windows.net/media/2016/04/pic51.png" alt="All Domains Merged" width="694" height="308" /></a>

<h3>About the authors</h3>
Inbar Cizer Kobrinsky and Alex Blaine are Support Escalation Engineers in the Yammer Support Escalation team.]]></content:encoded>
    </item>
    <item>
      <title>Yammer Mobile App Logon Scenarios</title>
      <link>https://docs.microsoft.com/archive/blogs/askyammer/yammer-mobile-app-logon-scenarios</link>
      <pubDate>Mon, 27 Apr 2015 10:10:49 GMT</pubDate>
      <dc:creator><![CDATA[ablaine]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/askyammer/2015/04/27/yammer-mobile-app-logon-scenarios/</guid>
      <description><![CDATA[Yammer offers several different options when it comes to logging in so you can choose the one...]]></description>
      <content:encoded><![CDATA[<p>Yammer offers several different options when it comes to logging in so you can choose the one that&rsquo;s best for your organization.&nbsp; As such, there are many different login flows you may see depending on which method is employed on your network.&nbsp; Below, I have detailed each of these flows so you can know what to expect for your configuration (note: Screenshots taken on iOS).</p>
<h3>Office 365 sign-in for Yammer</h3>
<p>If you&#039;re using Office 365 sign-in for Yammer (more info available <a href="/controlpanel/blogs/posteditor.aspx/1.%20Enter%20your%20email%20address%20in%20the%20first%20page%20and%20hit%20Log%20In%20(password%20not%20required%20on%20this%20page)">here</a>), you&#039;ll see the following flow:</p>
<p>1. Enter your email address in the first page and hit Log In (password not required on this page)</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile1.png"><img width="275" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile1.png" border="0" /></a></p>
<p>2. The app will redirect you to the Office 365 sign-in page.&nbsp; Here, you will enter your Office 365 credentials (both username and password).&nbsp; If your Office 365 tenant uses SSO, you&#039;ll be directed to that login page instead.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile2.png"><img width="275" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile2.png" border="0" /></a></p>
<h3>Single Sign-On (SSO)</h3>
<p>If your Yammer network is configured to use Single Sign-On with a third party IdP or if you&rsquo;re using ADFS without Windows Authentication, the flow is as following (note, some niche cases may differ slightly on the last step):</p>
<p>1. Enter your email address in the first page and hit Log In (password not required on this page)</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile3.png"><img width="275" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile3.png" border="0" /></a></p>
<p>2. The app will show a page indicating that it&rsquo;s redirecting to your IdP&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile4.png"><img width="275" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile4.png" border="0" /></a></p>
<p>3. You will be presented with a web page with forms prompting you for your username and password.&nbsp; This page&rsquo;s appearance depends on the IdP used or customizations applied.</p>
<p></p>
<h3>Single Sign-On with ADFS using Windows Authentication</h3>
<p>If your Yammer network is configured to use Single Sign-On and you&rsquo;re using ADFS configured with Windows Authentication as your IdP, you&rsquo;ll be presented with a unique flow with a modal dialog box.&nbsp; The flow proceeds as follows:</p>
<p>1. Enter your email address in the first page and hit Log In (password not required on this page)</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile5.png"><img width="275" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile5.png" border="0" /></a></p>
<p>2. The app will show a page indicating that it&rsquo;s redirecting to your IdP</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile6.png"><img width="275" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile6.png" border="0" /></a></p>
<p>3. You will be presented with a dialog box asking for your username and password, which will then log you in</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile7.png"><img width="275" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile7.png" border="0" /></a></p>
<p></p>
<h3>Yammer Authentication</h3>
<p>Yammer Authentication is the basic form of authentication and is used when none of the other options are present for the network or particular user account logging in.&nbsp; It consists of just your normal Email and Password combination and can be entered at the login page as shown below:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile8.png"><img width="275" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile8.png" border="0" /></a></p>
<h3>Temporary Password</h3>
<p>Sometimes a login process fails due to specific IdP configurations.&nbsp; If this ends up being the case, we offer a Temporary Password system to help you log in until the failure is resolved.&nbsp; To obtain and use a temporary password:</p>
<p>1. On a computer, log into Yammer</p>
<p>2. At the top right, click the ellipses (&hellip;) button and then the Apps link in the menu that comes up</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile9.png"><img width="275" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile9.png" border="0" /></a></p>
<p>3. Click on the Android, iPhone, or iPad logo in the list shown (not the Learn More button)</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile10.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile10.png" border="0" /></a></p>
<p>4. At the bottom left of the page that follows is listed your temporary password along with your service account&rsquo;s email address (and an expiration time)</p>
<p>5. Use your email and this password log into the first screen of the Yammer app&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile11.png"><img width="275" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/22/Mobile11.png" border="0" /></a></p>
<p></p>
<h4>About the writer</h4>
<p><strong>Alex Blaine</strong> is member of the Yammer Support Escalation team.</p>]]></content:encoded>
    </item>
  </channel>
</rss>