Software designers make many good decisions when they create new applications, but the test of time and experience of how software works in practice often reveal unanticipated problems. Teams system (or service) messages are one example. These are the messages automatically posted to the General channel of a team when members join or leave the membership, along with other important team news like the creation or renaming of a channel.
Every team has a General channel. You can’t remove or rename the General channel because effectively it is the core of the team. Although you can absolutely use the General channel like any other channel, it’s best to move conversations into other channels and keep General for system messages and important team announcements.
Figure 1 shows some examples of system messages posted to a team’s General channel. The first tells that an administrator or team owner (no difference is displayed) added five members. This is an example of where multiple users are added at one time through the Add member dialog. The next is the addition of an individual member followed by a series of other member additions by running the PowerShell Add-TeamUser cmdlet. You can also use the Add-UnifiedGroupLinks or Add-AzureADGroupMember cmdlets to update team membership.
Figure 1: System messages in a Teams General channel
System messages might for member additions and removals usually take a little time before they are posted. I’ve seen this delay vary from a few minutes to a couple of hours.
Why System Messages Exist
Teams posts system messages for a very good reason. They inform team members when someone new is a member, with the intention being that people will welcome the new person and involve them in conversations. There’s lots of goodness in this idea, especially in the early days of a deployment where you’re trying to foster increased engagement.
News of Joiners
But the law of unintended consequences means that undesirable membership announcements can swamp the goodness. I’ve already pointed out how new employees can be prematurely announced in org-wide teams. This can be embarrassing, but’s a problem easily dealt with if you realize what’s happening.
Another problem is created when organizations bring hundreds or thousands of new users into Teams over a short period. Microsoft said that 12 million Teams users were added in one week in March. Each of those users was probably added to several teams, meaning that tens of millions of system messages announcing that someone joined a team were posted since. That’s a lot of probably not-very-interesting news for Teams users to digest.
Publicizing Employee Departures
System messages can spread the word when someone leaves the company. If the offboarding process results in the removal of the person’s Azure Active Directory account (perhaps after placing a hold on the account to make their mailbox inactive), the account loses its membership of all distribution lists, security groups, Microsoft 365 Groups, and Teams. And because the account is no longer a member, Teams posts a system message to that effect in every team the person belonged to.
There’s nothing wrong about letting everyone know that someone is no longer a member of a team, except when that person has lost their job because of corporate restructuring. When someone is made redundant, they might share their news with close colleagues, but generally it’s not something they want to broadcast to the entire organization.
Disclosing that someone has left could be embarrassing for that person. Disclosing that hundreds of people have left can be disastrous for company morale. Everyone might know that the company is letting people go, but being forced to confront the reality of what’s happening by seeing a long list of system messages in the General channel of a large team isn’t a great way to foster teamwork.
The Lack of Control
It’s unlikely that the Teams product group considered how system messages would become a burden in circumstances like those we face today. However, even in normal times, it’s reasonable to ask for some administrative controls over system messages. It would be to have:
An org-wide setting to disable system messages for all teams in the tenant. It would be even better if granular control was available. For example, allow messages to announce new members but suppress those when people leave.
A team-specific setting to allow team owners to suppress or allow system messages.
Microsoft is currently rushing some new Teams features into production to help Office 365 tenants cope with the Covid-19 pandemic. It would be nice if they could introduce administrative controls over system messages too. If you agree, express your view on this Teams User Voice request.
In the meantime, you can take two simple actions to avoid people using the General channel. First, create some channels to use for discussions and give those channels meaningful names. Second, encourage people to chat in the non-General channels by allowing only owners to post messages to the General channel (Figure 2).
Figure 2: Stopping users posting in the General channel
Restricting posting to the General channel stops system messages cluttering up conversations. In addition, if users are kept from posting messages to General, they’ll be less likely to open the channel to see the system messages posted there.
Need more information about how Teams really works? Subscribe to the Office 365 for IT Pros eBook and benefit from the years of experience in our writing team.
5 Replies to “Teams System Messages an Unwanted Feature for Many”
Thank you ! also I noticed when there is more than one owner of the teams and if member left the company, by removing license it’s not removing the members information and few days later it shows random owner name removed unknown person from Teams, but that owner is not aware of anything.
There’s an ongoing issue in Teams with “Unknown user” appearing in different places. The development group is doing its best to squash all occurrences.
Unfortunately it looks like the ‘only owners to post messages to the General channel’ setting can only be set via the user interface and not with PowerShell or the Graph when creating the team.
{"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}
Thank you ! also I noticed when there is more than one owner of the teams and if member left the company, by removing license it’s not removing the members information and few days later it shows random owner name removed unknown person from Teams, but that owner is not aware of anything.
There’s an ongoing issue in Teams with “Unknown user” appearing in different places. The development group is doing its best to squash all occurrences.
Unfortunately it looks like the ‘only owners to post messages to the General channel’ setting can only be set via the user interface and not with PowerShell or the Graph when creating the team.