{"id":6246,"date":"2021-04-21T08:00:49","date_gmt":"2021-04-21T16:00:49","guid":{"rendered":"https:\/\/officedevblogs.wpengine.com\/?p=6246"},"modified":"2023-03-17T07:38:17","modified_gmt":"2023-03-17T14:38:17","slug":"build-quality-microsoft-teams-apps-with-these-best-practices-part-3","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/build-quality-microsoft-teams-apps-with-these-best-practices-part-3\/","title":{"rendered":"Build quality Microsoft Teams apps with these best practices: Part\u00a03\u00a0"},"content":{"rendered":"<p><span data-contrast=\"auto\">We continue to share best practices for building high quality Microsoft Teams apps that will enable engaging experiences and delight users. In <a href=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/build-quality-microsoft-teams-apps-with-these-best-practices-part-1\/\">Part 1<\/a> and <a href=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/build-quality-microsoft-teams-apps-with-these-best-practices-part-2\/\">Part 2<\/a> of this series, we discussed best practices covering the multiple extensibility points, entry points and experiences within a Teams app that you should consider. Here we share some of the critical considerations that must be thought through before publishing your Teams app into our marketplace. Please note that while the public publishing of your app is relevant to ISVs and others desiring to make generally available \u2013 the performance considerations are still very relevant even for enterprise developers. <\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Publishing your app in App Source allows the app to be listed in the Teams Store to over 115 million daily Teams users. Customers who deploy the app will seamlessly receive any updates you make, without requiring hands-on deployment models. <\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h2><span data-contrast=\"none\">App Listing<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h2>\n<p><span data-contrast=\"auto\">Questions to ask yourself:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<ul>\n<li><span data-contrast=\"auto\">Do the screenshots clearly convey the functionality of the app including all capabilities?<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Does the app description mention all the scenarios the app enables?<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Does the app list the correct categories in Partner Center?<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Does the store listing contain a video?\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Is there a landing page on my specific to this app?<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Am I planning to update my app at least every 6 months?<\/span><\/li>\n<\/ul>\n<p>Prospective users review app listings in Microsoft App Source and the Teams Store when evaluating an app, and the content here can influence a decision to use an app. Ensure your description, images, and categories showcase the value of integrating your app in Teams. Add a video to clearly demonstrate\u00a0Teams\u00a0workflows to prospective users. Publish regular, iterative updates to your app to take advantage of the newest Teams Platform capabilities and to appear well-maintained and supported to users.\u00a0<span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">More guidance:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"34\" data-aria-posinset=\"1\" data-aria-level=\"1\"><a href=\"https:\/\/docs.microsoft.com\/en-us\/office\/dev\/store\/create-effective-office-store-listings\"><span data-contrast=\"none\">Create an effective listing on AppSource<\/span><\/a><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<\/ul>\n<h2><span data-contrast=\"none\">Performance and availability<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h2>\n<p><span data-contrast=\"auto\">Questions to ask yourself:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"24\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">Do tabs load in a performant way (5 seconds or faster)? Is a skeleton UI or loading indicator shown as the page is loading?\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"24\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">Do bots respond within 3 seconds? If the time exceeds 3 seconds, do bots show a typing indicator?\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"24\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">Has the app had zero service outages in the past 90 days?\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span data-contrast=\"auto\">Build user trust through performance and reliable apps \u2013 not only will it drive day-to-day engagement by preventing interrupted workflows, but it will influence the overall perception of your app.\u00a0Showing animations like bot typing indicators or tab loading views will give users assurance that the app is\u00a0working\u00a0and their content will be shown soon.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h2><span data-contrast=\"none\">Security and compliance<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h2>\n<p><span data-contrast=\"auto\">Questions to ask yourself:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"15\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">Have you completed publisher attestation?<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"15\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">Have you completed Microsoft 365 Certification? <\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span data-contrast=\"auto\">Microsoft offers a 3-tier compliance program to provide users the confidence they need while using apps in the Microsoft 365 ecosystem. Publisher certification and attestation are simple tasks which take less than an hour and provide customers the assurance that the listed app publisher is authentic. Microsoft 365 Certification gives the highest degree of assurance to customers of the privacy, security, and compliance of the data handling of your app.\u00a0 <\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Note that Publisher Attestation and Microsoft 365 Certification can only be completed after your app is published. <\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">More guidance:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"33\" data-aria-posinset=\"1\" data-aria-level=\"1\"><a href=\"https:\/\/docs.microsoft.com\/en-us\/microsoft-365-app-certification\/overview\"><span data-contrast=\"none\">Microsoft 365 App Compliance Program &#8211; Microsoft 365 App Certification | Microsoft Docs<\/span><\/a><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<\/ul>\n<h2><span data-contrast=\"none\">Checklist<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h2>\n<p><span data-contrast=\"auto\">Use this list to\u00a0check your app for our best\u00a0practices\u00a0guidance\u00a0<\/span>\n<span data-contrast=\"auto\">* Required if the corresponding app capability is used\u00a0<\/span>\n<span data-contrast=\"auto\">\u2020\u00a0Commonly-missed quality opportunities<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<table style=\"width: 873px;\" border=\"y\">\n<tbody>\n<tr>\n<td style=\"width: 161px;\"><strong><span data-contrast=\"auto\">Scenario<\/span><\/strong><\/td>\n<td style=\"width: 711px;\"><strong>Checklist<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 161px;\"><span data-contrast=\"auto\">Collaboration and Scenarios<\/span><\/td>\n<td style=\"width: 711px;\">\n<ul>\n<li>Does the app allow 2 or more users to communicate as they complete a task in Teams?<\/li>\n<li>Can all scenarios be completed in the Teams experience, without directing to the browser?<\/li>\n<li>Do link targets open elements like tabs or task modules instead of opening a browser window?<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 161px;\"><span data-contrast=\"auto\">Authentication<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td style=\"width: 711px;\">\n<ul>\n<li><span data-contrast=\"auto\">Is the app enabled for SSO or silent auth?<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 161px;\"><span data-contrast=\"auto\">Mobile Experience<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td style=\"width: 711px;\">\n<ul>\n<li><span data-contrast=\"auto\">Is the app fully usable on mobile with no issues with responsiveness, usability, or mobile\u00a0policies?*<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 161px;\"><span data-contrast=\"auto\">Bots<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td style=\"width: 711px;\">\n<ul>\n<li>Does the bot provide a first-run experience (FRE) welcome message which highlights the value of the bot and its primary\u00a0functions?*<\/li>\n<li>Does the bot use the Teams tone of voice? Is the bot conversational and engaging?<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 161px;\"><span data-contrast=\"auto\">Adaptive Cards<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td style=\"width: 711px;\">\n<ul>\n<li>Does the app make use of adaptive cards instead of plaintext chat?<\/li>\n<li>Do the cards show\u00a0a brief summary\u00a0view without being overburdened with content?<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 161px;\"><span data-contrast=\"auto\">Task Modules<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td style=\"width: 711px;\">\n<ul>\n<li><span data-contrast=\"auto\">Does the app make use of task modules instead of plaintext chat?<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 161px;\"><span data-contrast=\"auto\">Tabs<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td style=\"width: 711px;\">\n<ul>\n<li>Do tabs use Teams-styled navigation, such as breadcrumb trails or hamburger menus instead of left rails? <strong>*<\/strong><\/li>\n<li>Do tabs have fewer than three levels of navigation?<\/li>\n<li>Do tabs use multi-window capabilities for complex editing workflows?\u00a0<strong>\u2020<\/strong><\/li>\n<li>Are Help and Settings menus available from the app header?\u00a0<strong>\u2020<\/strong><\/li>\n<li>[Channel tabs] When the tab is added to a channel, does the associated bot post to the\u00a0team to provide\u00a0content that is relevant to the tab that\u2019s been\u00a0added? <strong>*<\/strong><\/li>\n<li>[Personal tab] Is there an ability to share content from the personal experience to other team members?<\/li>\n<li>[Personal tab] Does the tab show a view that\u2019s unique for the user?<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 161px;\"><span data-contrast=\"auto\">Message Extensions<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td style=\"width: 711px;\">\n<ul>\n<li><span data-contrast=\"auto\">Does the message extension provide a 0-term query such as \u201clast used\u201d to encourage\u00a0engagement? <strong>*\u00a0\u2020<\/strong><\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 161px;\"><span data-contrast=\"auto\">Meeting Apps<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td style=\"width: 711px;\">\n<ul>\n<li><span data-contrast=\"auto\">Do the meeting app tabs have role-based views for the meeting organizer and participants?<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 161px;\"><span data-contrast=\"auto\">Notifications<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td style=\"width: 711px;\">\n<ul>\n<li><span data-contrast=\"auto\">Does the app provide relevant notifications in the activity feed or via bot message when there has been activity in the app?<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 161px;\"><span data-contrast=\"auto\">App Listing<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td style=\"width: 711px;\">\n<ul>\n<li>Do the screenshots clearly convey the functionality of the app including all\u00a0capabilities? <strong>*<\/strong><\/li>\n<li>Does the app description mention all the scenarios the app\u00a0enables? <strong>*<\/strong><\/li>\n<li>Does the app list the correct categories in Partner\u00a0Center? <strong>*<\/strong><\/li>\n<li>Does the store listing contain a video?<\/li>\n<li>Is there a landing page on my specific to this app?<\/li>\n<li>Am I planning to update my app at least every 6 months?<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 161px;\"><span data-contrast=\"auto\">Perf and Availability<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td style=\"width: 711px;\">\n<ul>\n<li>Do tabs load in a performant way (5 seconds or faster)? Is a skeleton UI or loading indicator shown as the page is loading?<\/li>\n<li>Do bots respond within 3 seconds? If the time exceeds 3 seconds, do bots show a typing indicator?<\/li>\n<li>Has the app had zero service outages in the past 90 days?\u00a0<strong>\u2020<\/strong><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 161px;\"><span data-contrast=\"auto\">Security and Compliance\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td style=\"width: 711px;\">\n<ul>\n<li>Have you completed publisher\u00a0attestation?<strong> *\u00a0\u2020\u00a0<\/strong><\/li>\n<li>Have you completed M365 Certification?<strong>\u00a0\u2020\u00a0<\/strong><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4><\/h4>\n<h2><span data-contrast=\"none\">Teams app submission overview<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h2>\n<table style=\"font-weight: 400;\" border=\"y\" data-tablestyle=\"MsoNormalTable\" data-tablelook=\"1056\">\n<tbody>\n<tr>\n<td data-celllook=\"69905\"><b><span data-contrast=\"auto\">Stage<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td data-celllook=\"69905\"><b><span data-contrast=\"auto\">Resource \/ Details<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td data-celllook=\"69905\"><b><span data-contrast=\"auto\">All Involved<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td data-celllook=\"69905\"><b><span data-contrast=\"auto\">Estimated\u00a0Timeline<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">Prepare for Submission<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td data-celllook=\"69905\"><a href=\"https:\/\/docs.microsoft.com\/en-us\/microsoftteams\/platform\/concepts\/deploy-and-publish\/appsource\/publish\"><span data-contrast=\"none\">Submission Overview<\/span><\/a><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/microsoftteams\/platform\/concepts\/deploy-and-publish\/appsource\/prepare\/submission-checklist\"><span data-contrast=\"none\">Submission Checklist<\/span><\/a><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">App Developer<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">Varies<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">Self-Assess and Self-Test<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td data-celllook=\"69905\"><a href=\"https:\/\/docs.microsoft.com\/en-us\/legal\/marketplace\/certification-policies\"><span data-contrast=\"none\">Validation Policies<\/span><\/a><span data-contrast=\"auto\">\u00a0\u2013 review these guidelines and ensure your app adheres to them<\/span>\n<a href=\"https:\/\/dev.teams.microsoft.com\/appvalidation.html\"><span data-contrast=\"none\">Validation Tool<\/span><\/a><span data-contrast=\"auto\">\u00a0\u2013 use this tool to perform automated checks on your manifest file and catch issues early<\/span>\n<a href=\"https:\/\/docs.microsoft.com\/en-us\/microsoftteams\/platform\/concepts\/deploy-and-publish\/appsource\/prepare\/frequently-failed-cases\"><span data-contrast=\"none\">Tips and Tricks\u00a0<\/span><\/a><span data-contrast=\"auto\">\u2013 details of common policy failures and examples of successful resolutions<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">App Developer<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">Varies<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">Create developer account in Partner Center<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td data-celllook=\"69905\"><a href=\"https:\/\/docs.microsoft.com\/en-us\/microsoftteams\/platform\/concepts\/deploy-and-publish\/appsource\/publish\"><span data-contrast=\"none\">Creating Partner Center Account<\/span><\/a><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><i><span data-contrast=\"auto\">Can be done concurrently with above steps.<\/span><\/i><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">App Developer<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">1-2 weeks<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">Submit your App in Partner Center<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td data-celllook=\"69905\"><a href=\"https:\/\/docs.microsoft.com\/en-us\/office\/dev\/store\/use-partner-center-to-submit-to-appsource\"><span data-contrast=\"none\">Submit your package in the Partner Center<\/span><\/a><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">App Developer<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">1-2 days<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td data-celllook=\"69905\">\n<p style=\"text-align: left;\"><span data-contrast=\"auto\">App Submission Review<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<\/td>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">App Submission team will validate your app to ensure it meets guidelines. App validation phases are:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<ol>\n<li><span data-contrast=\"auto\">Run manifest tests\u00a0<\/span><i><span data-contrast=\"auto\">(hint: the team uses the same Validation Tool listed above)<\/span><\/i><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Installation and First Run Experience<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">App Design and Value Proposition<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Full run through of test notes<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Functionality and usability tests<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Privacy, security, legal and performance tests<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Metadata tests<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Mobile testing\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<\/ol>\n<p><span data-contrast=\"auto\">After each phase, App Submission team will provide list of validation issues and\u00a0according\u00a0policies.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">App validation may take several rounds of addressing discovered issues and resubmitting.\u00a0<\/span><i><span data-contrast=\"auto\">See FAQ on next page.\u00a0<\/span><\/i><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Time prediction for Submit to Publish<\/span> <span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\u2022\" data-font=\"Arial\" data-listid=\"36\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">8\u00a0bugs :\u00a015 business days (assuming 3 days for bug fixes)<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\u2022\" data-font=\"Arial\" data-listid=\"36\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">10-20 bugs: 30 business days (assuming 3 days for bug fixes)<\/span> <span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<\/ul>\n<\/td>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">App Developer, App Submission Team<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">3-6 weeks<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">Submission Approval and Rollout<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">Once approved, the following steps remain before all customers will see app in Teams Store:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\u2022\" data-font=\"Arial\" data-listid=\"37\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">Validation and approval (1 day)<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\u2022\" data-font=\"Arial\" data-listid=\"37\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">Partner upload in Partner Center (1 day)<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\u2022\" data-font=\"Arial\" data-listid=\"37\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">Platform engineering pipeline rollout (1-2 days)<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<\/ul>\n<\/td>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">App Developer, App Submission Team<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<td data-celllook=\"69905\"><span data-contrast=\"auto\">4 business days<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<h2><span data-contrast=\"none\">App Submission FAQ<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h2>\n<p><b><span data-contrast=\"auto\">How long does publishing take?\u202f\u202f\u200b<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:60,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Publishing\u202fitself doesn\u2019t take long \u2013 it\u2019s just rollout of software. However, there is time between submitting and approval which is used to review your app and address any bugs or non-compliance with submission requirements.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:60,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u200b<\/span><b><span data-contrast=\"auto\">How long does it take to fix bugs?<\/span><\/b><span data-contrast=\"auto\">\u202f\u202f\u200b<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:60,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">This is highly dependent on your team and the bug identified. If we assume it takes you ~3 days to respond back and fix the bugs that have been raised:\u202f\u200b<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:60,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\u2022\" data-font=\"Arial\" data-listid=\"10\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">If your\u202fapp has less than 8 bugs, it usually takes 3 iterations ==&gt; 3 weeks\u202f\u200b<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:60,&quot;335559740&quot;:240}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\u2022\" data-font=\"Arial\" data-listid=\"10\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">If your app has\u202f10 \u2013 20 bugs, it takes around 6 iterations ==&gt; 6 weeks\u202f\u200b<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:60,&quot;335559740&quot;:240}\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span data-contrast=\"auto\">\u200bAgain, if you\u202fcan\u202ffix the bugs quicker, the time shortens. We recommend you leave 1 \u2013 1.5 months between app submission and desired publish date, to allow time for validation and bug fixing.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:60,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u200b<\/span><b><span data-contrast=\"auto\">I am under a tight deadline.\u202fCan you speed up the process for me?\u202f\u202f\u200b<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:60,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Please note that most of the time estimated is for partners to fix bugs.\u202f\u200bOur submission team\u202fhas\u202fa\u202f24 hour\u202fSLA which means\u202fthey\u202fguarantee to\u202ffinish checking your app and get back to you within 24 hours. If you need more context on a bug, you can meet with them to discuss.\u202f\u200b<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:60,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u200b<\/span><span data-contrast=\"auto\">Our best advice is to ensure your app is high quality (i.e. meets all validation criteria) and has no bugs. To help you better\u202fself-check\u202fyour app, please use the below\u202fresources.\u200b<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:60,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u200b<\/span><b><span data-contrast=\"auto\">Helpful resource for app validation process\u202f\u200b<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:60,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Here are some useful links to help you prepare your first app submission:\u202f\u200b<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:60,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<ul>\n<li><a href=\"https:\/\/dev.teams.microsoft.com\/appvalidation.html\"><span data-contrast=\"auto\">Validation tool<\/span><\/a><span data-contrast=\"auto\">\u202f- automatically validates your app package<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:720,&quot;335559739&quot;:60,&quot;335559740&quot;:240,&quot;469777462&quot;:[1440,720],&quot;469777927&quot;:[0,0],&quot;469777928&quot;:[0,8]}\">\u00a0<\/span><\/li>\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/microsoftteams\/platform\/concepts\/deploy-and-publish\/appsource\/prepare\/frequently-failed-cases\"><span data-contrast=\"auto\">Frequently failed cases<\/span><\/a><span data-contrast=\"auto\">\u202f\u200b<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:720,&quot;335559739&quot;:60,&quot;335559740&quot;:240,&quot;469777462&quot;:[1440,720],&quot;469777927&quot;:[0,0],&quot;469777928&quot;:[0,8]}\">\u00a0<\/span><\/li>\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/legal\/marketplace\/certification-policies\"><span data-contrast=\"auto\">Commercial marketplace policies<\/span><\/a><span data-contrast=\"auto\">\u00a0&#8211; your\u202fapp must pass\u202fall of\u202fthese\u202fpolicies\u202f\u202f\u200b<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:720,&quot;335559739&quot;:60,&quot;335559740&quot;:240,&quot;469777462&quot;:[1440,720],&quot;469777927&quot;:[0,0],&quot;469777928&quot;:[0,8]}\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><span data-contrast=\"auto\">Thank you and happy coding!<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this last part of the series, we share some of the critical considerations that must be thought through before publishing your Microsoft Teams app.<\/p>\n","protected":false},"author":114597,"featured_media":25159,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[128],"tags":[],"class_list":["post-6246","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microsoft-teams"],"acf":[],"blog_post_summary":"<p>In this last part of the series, we share some of the critical considerations that must be thought through before publishing your Microsoft Teams app.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/6246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/users\/114597"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/comments?post=6246"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/6246\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media\/25159"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media?parent=6246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/categories?post=6246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/tags?post=6246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}