Non-native mode. All Yammer external networks are in this mode. As of January 2020, all new Yammer enterprise networks start in native mode (and can’t change to any other mode).
Hybrid mode.
Native mode supports the best interoperability between Yammer and the rest of Microsoft 365.
Yammer communities and users are managed through Microsoft 365 administrative tools. Microsoft 365 Groups (previously Office 365 Groups) are used to manage the membership of Yammer communities and Yammer respects the Microsoft 365 group creation policy. Yammer network admins need to be assigned the appropriate Microsoft 365 permissions to manage the membership of communities they do not own.
Microsoft 365 resources like a SharePoint Online team site are configured for each community. All the files uploaded to a Yammer community are stored in a document library in its team site.
All communities can use Microsoft 365 Live Events.
Yammer generates compliance records for conversations. The compliance records for a discussion are stored in the group mailbox belonging to the Yammer community and are indexed and discoverable by Microsoft 365 content searches.
The last point was the thing that spurred me to action as I was keen to see how Yammer generated compliance records. More about this topic can be found here.
Plan to Move to Native Mode
Moving a Yammer network to native mode is not something that you do on a whim. It is a one-time irreversible process performed using the native mode alignment tool. Some planning is needed to prepare your network for the transformation.
I had started on the path when Yammer first embraced Microsoft 365 Groups and Azure Active Directory. The tool would now migrate the remaining parts of my tenant’s Yammer network to be in full Microsoft 365 native mode.
I was initially (often) confused when I looked at the Network Admin section for my Yammer network (Figure 1) as it appeared that the network was already in native mode. Some online advice persuaded me that this wasn’t the case, so I proceeded.
Figure 1: Click here to start a Yammer network’s transition to Microsoft 365 native mode
Running the Native Node Alignment Tool
The tool checks all the settings in a network and makes whatever changes are needed to transition to native mode (Figure 2). For instance, all Yammer users must have Azure Active Directory accounts, all communities must be connected to Microsoft 365 Groups, and all files must be stored in SharePoint Online.
Figure 2: Some of the long list of changes to move a Yammer network to Microsoft 365 native mode
If necessary, the tool makes changes to objects or removes items (like external users or users who can’t be found in Azure Active Directory) to make the network compliant. When the process is complete, you cannot change back to another mode. See this page for more information.
Duplicate Groups Created by Migration Runs
Although my network was small, the migration did not go smoothly. The tool got hung up on a group that didn’t have an owner and some members and went around in circles for a while before Yammer engineering did the necessary magic to allow everything to finish. The migration stopped and restarted several times, and as a result I ended up with several copies of some communities that were converted to Microsoft 365 Groups.
I ran this PowerShell command to find the Microsoft 365 Groups configured for Yammer. The key point is that the GroupSku property is set to Yammer.
Get-UnifiedGroup |? {$_.GroupSku -eq "Yammer"} | Sort Alias | Format-Table Alias, name -AutoSize
And found instances like this where the same group had been recreated several times.
Alias Name
----- ----
yammeddocs yammeddocs_497b0e85-0496-4ba0-bdaf-e311e952276a
yammeddocs445 yammeddocs445_ba491901-4772-47fc-bc7a-7b45d9a16129
yammeddocs761 yammeddocs761_ccf11f4c-1486-4c48-82ad-2287b04041d5
The original group is likely to be the one with the alias without the numbers added to the end to make it unique. Before deleting anything, it’s a good idea to check that you can remove the other groups.
Cleaning Up Duplicate Groups
During a successful transition, some information is transferred to the group mailboxes used by Yammer communities. Knowing this, I used the Get-ExoMailboxStatistics cmdlet to check each group to find out where content existed. In this example, I use the group identifier as the identity to check what’s in a group mailbox.
After checking several groups, a clear pattern emerged where the duplicate (bad) copies of migrated groups held no content, so I cleaned up by deleting them with the Remove-UnifiedGroup cmdlet:
This command soft-deletes the group, so if you make a mistake, you can restore it for up to 30 days. When this period elapses. Microsoft 365 permanently deletes the group and all its associated resources.
Identifying Yammer-enabled Microsoft 365 Groups
I also found that the Get-UnifiedGroup cmdlet supports a new method to find Yammer groups with the command:
Because this command uses a server-side filter, it is much faster than fetching all Microsoft 365 Groups and using a client-side filter to check the value of the GroupSku property as explained above. However, not all Yammer-enabled groups are reported by looking at the ResourceBehaviorOptions. It seems like Yammer communities that already used Microsoft 365 Groups before the migration had the property configured while communities converted to Microsoft 365 Groups during the migration did not. Perhaps some background process will update the property for the other groups over time.
Annoying Sign Outs
One thing I’ve noticed since the migration to native mode is that Yammer is very quick to sign users out of a session. In non-native mode, Yammer would stay connected in a browser session for weeks. Now, sessions last hours before a new sign-in is needed. It would be good if Yammer worked the same way as other Microsoft 365 apps and respected whatever token refresh period is defined for the tenant.
On the upside, everything else is working just fine.
We don’t cover much about Yammer in the Office 365 for IT Pros eBook. We include the important stuff where appropriate. Maybe native mode will encourage us to do better.
Very helpful article! Can I ask how long the migration process took? I am in a similar position and looking to migrate 16 communities over to the new native mode. Thanks!
Thanks Tony, appreciate the response. Did you export / back-up your data prior to the migration? It looks easy enough to export network data, but there isn’t an option to import it should anything go wrong and it’s a bit of a grey area in the documentation. I know I should trust the migration tool, but I always prefer to have a back-up plan. Thanks!
Loading...
I didn’t backup anything because I didn’t have much in Yammer at the time.
{"id":null,"mode":"button","open_style":"in_modal","currency_code":"EUR","currency_symbol":"\u20ac","currency_type":"decimal","blank_flag_url":"https:\/\/office365itpros.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/office365itpros.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":100,"top_media_type":"featured_image","featured_image_url":"https:\/\/office365itpros.com\/wp-content\/uploads\/2022\/11\/cover-141x200.jpg","featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":true,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Virtual Tip Jar","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"Office 365 for IT Pros","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"Office 365 for IT Pros","form_subtitle":null,"currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thank you for supporting the work of Office 365 for IT Pros!","payment_confirmation_title":"Office 365 for IT Pros","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much would you like to tip?","initial":{"instruction_type":"normal","instruction_message":"How much would you like to tip? Choose any currency."},"empty":{"instruction_type":"error","instruction_message":"How much would you like to tip? Choose any currency."},"invalid_curency":{"instruction_type":"error","instruction_message":"Please choose a valid currency."}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"How often would you like to give this?"},"success":{"instruction_type":"success","instruction_message":"How often would you like to give this?"},"empty":{"instruction_type":"error","instruction_message":"How often would you like to give this?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":null,"terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}
Very helpful article! Can I ask how long the migration process took? I am in a similar position and looking to migrate 16 communities over to the new native mode. Thanks!
It’s been a while, but I recall that the migration took a couple of hours.
Thanks Tony, appreciate the response. Did you export / back-up your data prior to the migration? It looks easy enough to export network data, but there isn’t an option to import it should anything go wrong and it’s a bit of a grey area in the documentation. I know I should trust the migration tool, but I always prefer to have a back-up plan. Thanks!
I didn’t backup anything because I didn’t have much in Yammer at the time.