The Teams App navigation bar is on the left-hand side of the desktop and browser clients and along the bottom of the mobile client. It’s where icons for pinned apps like the core set of default apps usually thought of as “Teams” (like Files, Chat, and Teams) appear along with a set of less prominent apps accessed through the ellipsis menu […]. The set of apps shown in the navigation bar and their order are defined in a Teams App Setup policy. By default, all tenants have a default app setup policy called Global and another policy suitable for front-line workers called FrontLineWorker, which includes the Shifts app.
You don’t have to go anywhere near app setup policies if you’re happy with the set of apps in the navigation bar. However, if you want to add some apps or change the order, you do so through an app setup policy. You can have multiple app setup policies within a tenant, each of which is customized for specific groups of users.
Teams App Setup policies are part of a set of features designed to make apps more manageable. App setup policies also control if users are allowed to load custom apps into Teams (needed if they want to switch to developer preview) and pin apps to the navigation bar. Teams App Permission policies, which are announced but not yet available, are also in this set.
Creating a New Teams App Setup Policy
To create a new app setup policy, open the Teams Admin Center, go to the Teams Apps section, and select Setup policies. Select the choice to add a new policy. Teams populates the policy with the core apps (Activity, Teams, Chat, Files, Calendar, Calling). You can then remove apps, add apps, or move the apps up and down within the navigation bar. In Figure 1, I added the Insights, Tasks by Planner, Yammer Communities, and Stream apps. You can also install apps through the policy, as I have done for the Approvals app.
After settling on the final set and order of apps, save the new policy.
Assigning a Teams App Setup Policy to Users
An apps setup policy only becomes effective when you assign it to a user. You can do this individually by selecting users in the Teams Admin Center and editing the set of policies assigned to the user (Figure 2). After a short period, the user’s Teams client will pick up the change in policy and apply the settings to the client’s navigation bar.
Figure 2: Assigning an app setup policy to a user
In Figure 3 we can see the effect of applying an app setup policy. The default apps are reordered so that Teams is above the activity feed and three new apps (Planner, Stream, and the Who bot) are included in the bar.
Figure 3: Teams navigation bar after applying a new app setup policy
If you remove any of the core apps from the navigation bar, the user can still access them through the ellipsis menu.
When an admin changes the app setup policy assigned to an account, Teams notifies the user that the change happened and advises them that some of their pinned apps might have moved (Figure 4).
Figure 4: Notifying a user about a change in a Teams app setup policy
PowerShell for Teams App Setup Policies
The Teams PowerShell module includes cmdlets to work with Teams app setup policies. For instance, to see all the policies in a tenant, run the command:
# Get Teams App Setup Policies
Get-CSTeamsAppSetupPolicy
and to see the set of apps and their order in a policy, run a command like this:
# Return list of apps for a selected Teams App Setup Policy
Get-CSTeamsAppSetupPolicy -Identity "App Policy 2" | Select -ExpandProperty Pinnedappbarapps
Id : 2a84919f-59d8-4441-a975-2a8c2643b741
Order : 1
Id : 14d6962d-6eeb-4f48-8890-de55454bb136
Order : 2
Id : 86fcd49b-61a2-4701-b771-54728cd291fb
Order : 3
Id : 5af6a76b-40fc-4ba1-af29-8f49b08e44fd
Order : 4
Id : ef56c0de-36fc-4ef8-b417-3d82ba9d073c
Order : 5
Id : 20c3440d-c67e-4420-9f80-0e50c39693df
Order : 6
Id : com.microsoft.teamspace.tab.planner
Order : 7
Id : com.microsoftstream.embed.skypeteamstab
Order : 8
Id : fc6b6d20-89ed-45fb-9e62-e4b4ca8fbf3f
Order : 9
It’s usually best to update app setup policies through the GUI of the Teams Admin Center. Where PowerShell comes in very handy is to assign a new policy to a bunch of users, even if the cmdlets in the Skype for Business Online module badly needed to be replaced by new cmdlets in the Teams PowerShell module. In any case, here’s a quick snippet of how to assign a Teams app setup policy to a group of users from a selected department.
# Assign Teams App Setup Policy to users in the Marketing department
$Users = (Get-CSOnlineUser -Filter {Department -eq 'Marketing'})
Foreach ($U in $Users) {
Write-Host "Assigning Teams App Setup Policy App Policy 2 to" $U.DisplayName
Grant-CSTeamsAppSetupPolicy -PolicyName "App Policy 2" -Identity $U.UserPrincipalName }
For more information about Teams, read Chapters 11 and 12 of the Office 365 for IT Pros eBook.
{"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}
9 Replies to “How to Use Teams App Setup Policies to Control the Apps Available to Users”