{"id":13424,"date":"2023-04-06T08:00:17","date_gmt":"2023-04-06T15:00:17","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/?p=13424"},"modified":"2023-04-05T03:24:36","modified_gmt":"2023-04-05T10:24:36","slug":"license-management-capabilities-for-independent-software-vendors-isv-saas-apps-in-microsoft-teams","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/license-management-capabilities-for-independent-software-vendors-isv-saas-apps-in-microsoft-teams\/","title":{"rendered":"License management capabilities for Independent Software Vendors\u2019 (ISV) SaaS apps in Microsoft Teams\u00a0"},"content":{"rendered":"<p><span data-contrast=\"none\">Last year at Build 2022, we shared new features to allow <\/span><span data-contrast=\"none\">customers to manage and assign purchased licenses within Microsoft Teams. It\u2019s previously been up to ISVs to build the license management component into their solution, whether on their landing page or directly within the app. To help streamline the license management experience, we are now offering a new capability for ISVs to choose to offload the license management capabilities to Microsoft where customers can manage and assign licenses\u2014directly in Microsoft Teams. <\/span><span data-ccp-props=\"{&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<h2>Why should ISVs enable Microsoft\u2019s license management solution in Microsoft Teams?<\/h2>\n<ul>\n<li>Enable customers to assign and unassign SaaS licenses of ISV\/publisher products using Teams and Teams Admin Center.<\/li>\n<li>Remove the additional development effort for ISVs of building and maintaining their own license management and enforcement system.<\/li>\n<li>Teams recently announced the GA launch of capability to manage -ISV SaaS purchase subscriptions with Teams for Admins and users within Teams. License Management extends on that capability to provide a seamless embedded post-purchase experience.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2023\/04\/License-mgmt_image-1.png\"><img decoding=\"async\" class=\"aligncenter size-large wp-image-13482\" src=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2023\/04\/License-mgmt_image-1-1024x579.png\" alt=\"Figure 1.1 highlights the ability to manage a subscription of an ISV application and access licensing capabilities directly within the Teams app store.\" width=\"640\" height=\"362\" srcset=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2023\/04\/License-mgmt_image-1-1024x579.png 1024w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2023\/04\/License-mgmt_image-1-300x170.png 300w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2023\/04\/License-mgmt_image-1-768x434.png 768w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2023\/04\/License-mgmt_image-1.png 1136w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><span style=\"font-size: 10pt;\"><em>\u00a0<\/em><em>Figure 1.1 highlights the ability to manage a subscription of an ISV application\nand access licensing capabilities directly within the Teams app store.<\/em><\/span><\/p>\n<p><em>\u00a0<\/em><\/p>\n<p style=\"text-align: center;\"><em><a href=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2023\/04\/License-mgmt_image-2.png\"><img decoding=\"async\" class=\"aligncenter size-large wp-image-13481\" src=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2023\/04\/License-mgmt_image-2-1024x578.png\" alt=\"Figure 1.2 highlights the ability to assign and unassign licenses to users directly within the Teams app store. \" width=\"640\" height=\"361\" srcset=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2023\/04\/License-mgmt_image-2-1024x578.png 1024w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2023\/04\/License-mgmt_image-2-300x169.png 300w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2023\/04\/License-mgmt_image-2-768x434.png 768w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2023\/04\/License-mgmt_image-2.png 1146w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/em><span style=\"font-size: 10pt;\"><em>Figure 1.2 highlights the ability to assign and unassign licenses to users directly within the Teams app store.<\/em><\/span><\/p>\n<p>&nbsp;<\/p>\n<h2>Ready to get started?<\/h2>\n<p>Follow the existing steps to create and publish a monetizable Teams app. If you would like more information on how to publish a monetizable Teams offer, please review the documentation at the end of this post.<\/p>\n<ol>\n<li>Create a free Teams app.<\/li>\n<li>Integrate with SaaS fulfillment APIs.<\/li>\n<li>Create a transactable SaaS offer.\n<ol>\n<li>Create a new transactable SaaS offer in Microsoft Partner Center\n<ol>\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/partner-center\/mpn-create-a-partner-center-account\">Create an MPN account in Partner Center<\/a><\/li>\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/marketplace\/create-new-saas-offer\">Create a SaaS offer in the commercial marketplace<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<li><strong>NEW: To enable license management for your offer, click the checkbox \u201cYes, I would like Microsoft to manage customer licenses on my behalf\u201d. <\/strong><\/li>\n<\/ol>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2023\/04\/License-mgmt_image-3.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-13480\" src=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2023\/04\/License-mgmt_image-3.png\" alt=\"Figure 1.3 highlights the new capability in Partner Center to enable Microsoft License Management for Teams Apps\" width=\"950\" height=\"185\" srcset=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2023\/04\/License-mgmt_image-3.png 950w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2023\/04\/License-mgmt_image-3-300x58.png 300w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2023\/04\/License-mgmt_image-3-768x150.png 768w\" sizes=\"(max-width: 950px) 100vw, 950px\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><span style=\"font-size: 10pt;\"><em>Figure 1.3 highlights the new capability in Partner Center to enable Microsoft License Management for Teams Apps<\/em><\/span><\/p>\n<p><em>\u00a0 \u00a0 \u00a0 \u00a0Note: This is a one-time setting for Teams apps only, and you cannot change it once your offer is published. This allows the customer to manage licenses for your app within Teams. <\/em><\/p>\n<p><em>\u00a0 \u00a0 \u00a0 \u00a0Note: Only one offer is supported in the App manifest. Please choose the license management solution that is right for all plans within your offer in the app. This selection cannot be edited.<\/em><\/p>\n<ol start=\"5\">\n<li>Specify offer details including description, pricing, and the webhooks &amp; landing page from prior section\n<ol style=\"list-style-type: upper-alpha;\">\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/marketplace\/create-new-saas-offer-properties\">Configure your SaaS offer properties in Azure Marketplace<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Preview and test your transactable SaaS offer then publish the offer (not including app)\n<ol style=\"list-style-type: upper-alpha;\">\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/marketplace\/test-publish-saas-offer\">How to test and publish a SaaS offer to the Microsoft commercial marketplace<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Link SaaS offer to your Teams app\n<ol style=\"list-style-type: upper-alpha;\">\n<li>Configure your app with the transactable SaaS offer\n<ol style=\"list-style-type: lower-alpha;\">\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/microsoftteams\/platform\/concepts\/deploy-and-publish\/appsource\/prepare\/include-saas-offer\">Include a SaaS offer with your Microsoft Teams app<\/a><\/li>\n<\/ol>\n<\/li>\n<li>Link your Teams app and SaaS offer via Partner Center\n<ol style=\"list-style-type: lower-alpha;\">\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/marketplace\/create-new-saas-offer\">Create a SaaS offer in the commercial marketplace<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<li><strong>NEW: To ensure user permissions at time of app launch, integrate with Microsoft Graph UsageRights API\n<\/strong>At the time of app launch by a customer who has a license, you will be required to determine the user\u2019s permissions for the app with a Graph call to the Usage Rights API. For more information on how to call Graph UsageRights API to check user permissions, please see documentation links below. You can call Graph APIs to determine if the currently logged in user has access to your App (aka, they have a valid subscription of the plan). For more information on how to call Graph UsageRights API to check user permissions, please see documentation links below.<\/li>\n<\/ol>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol style=\"list-style-type: upper-alpha;\">\n<li>Get user OBO token: <a href=\"https:\/\/docs.microsoft.com\/en-us\/graph\/auth-v2-user\">Get access on behalf of a user &#8211; Microsoft Graph | Microsoft Docs<\/a><\/li>\n<li>Call Graph to get user\u2019s object id: <a href=\"https:\/\/docs.microsoft.com\/en-us\/graph\/use-the-api\">Use the Microsoft Graph API &#8211; Microsoft Graph | Microsoft Docs<\/a><\/li>\n<li>Call UsageRights API to determine the user has License to the plan. <a href=\"https:\/\/docs.microsoft.com\/en-us\/graph\/api\/user-list-usagerights?view=graph-rest-beta&amp;tabs=http\">List user usageRights &#8211; Microsoft Graph beta | Microsoft Docs<\/a><em style=\"font-size: 1rem; text-align: var(--bs-body-text-align);\">Notes:<\/em><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><em>You will need to have minimum User.Read permissions to be able to call UsageRights.<\/em><\/li>\n<li><em>If the AAD app you use for SaaS fulfillment API is also used for usageRights API then please ensure that the tenant under which the add app is created is either the publishing tenant OR associated tenant in partner center.<\/em><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ol start=\"9\">\n<li>Submit your app for validation and publication.\n<ol>\n<li>Submit the app via Partner Center (same process as with non-monetized apps)\n<ol>\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/microsoftteams\/platform\/concepts\/deploy-and-publish\/appsource\/publish\">Overview \u2013 Teams app store publishing process<\/a><\/li>\n<li><a href=\"https:\/\/developer.microsoft.com\/en-us\/microsoft-365\/blogs\/publish-your-apps-to-the-microsoft-teams-store\/\">Publishing to the Teams store (M365 Developer Blog)<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<li><strong>NEW: After your app is published and a user has purchased a subscription. After activation, redirect the customer from your landing page to Teams License Management<\/strong>\nUpon successful completion of subscription purchase, the customer will be redirected to your app landing page for subscription activation. Once the customer has activated their subscription purchase on your landing page, the customer should be redirected back to Teams. The URL to redirect the customer back to Teams subscriptions list view is: <a style=\"background-color: #f7f7f9; font-size: 1rem; text-align: var(--bs-body-text-align);\" href=\"https:\/\/aka.ms\/teamsapplicensemanagement\">https:\/\/aka.ms\/teamsapplicensemanagement<\/a><\/li>\n<\/ol>\n<p><em>Want to learn more about publishing a monetizable app in Teams?\u00a0<\/em><em>Follow these <\/em><a href=\"https:\/\/aka.ms\/TMTG\"><em>steps<\/em><\/a><em> to get your monetizable Teams app live in the app store published.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>To help streamline the license management experience, we are now offering a new capability for ISVs to choose to offload the license management capabilities directly in Microsoft Teams. \u00a0<\/p>\n","protected":false},"author":116009,"featured_media":13493,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[128],"tags":[],"class_list":["post-13424","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microsoft-teams"],"acf":[],"blog_post_summary":"<p>To help streamline the license management experience, we are now offering a new capability for ISVs to choose to offload the license management capabilities directly in Microsoft Teams. \u00a0<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/13424","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\/116009"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/comments?post=13424"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/13424\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media\/13493"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media?parent=13424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/categories?post=13424"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/tags?post=13424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}