In today's digital marketplace, reaching the right audience is key to the success of any application. For developers building on a project, one of the most effective ways to tap into a large, enterprise-level customer base is through Microsoft AppSource. This platform not only broadens your app's exposure but also aligns it with the needs of businesses looking for innovative solutions. In this article, we'll explore how to successfully list your application on Microsoft AppSource as a transactional offer and why it's a strategic move for expanding your app's reach.
With this article I want to give you an insight into this world of Microsoft AppSource. We read all the pages in the documentation so you don’t have to and prepared a working example with Next.js. Because we believe lowering the barriers and enabling developers to get instant feedback while exploring around is the best recipe for adoption.
Let’s get started!
Microsoft AppSource is a premier marketplace for business applications from Microsoft and its partners. It's designed specifically for enterprise customers seeking cloud-based solutions that work seamlessly with Microsoft products like Office 365, Dynamics 365, and Azure. But what makes AppSource distinct is its focus on business-oriented applications, catering to a wide array of industry needs and functions.
AppSource plays an important role for businesses by providing a curated list of applications tailored for various business processes and industries. For developers, it represents an opportunity to get their applications in front of a focused, professional audience. Listing your application on AppSource is akin to opening a direct channel to this enterprise market.
The benefits of listing your Next.js app on AppSource are multifold. Firstly, it provides your app with immediate visibility among a significant number of potential enterprise customers. These are businesses already invested in the Microsoft ecosystem, looking for solutions that can seamlessly integrate with their existing tools.
AppSource is more than just a marketplace; it's a platform for connection and discovery. By listing here, your app gains credibility and trustworthiness in the eyes of enterprise customers. This audience values reliability, security, and integrability – qualities that Microsoft ensures are hallmarks of all apps on AppSource. Moreover, being on AppSource means your app is searchable and discoverable by a vast network of Microsoft's existing customers, providing an unrivaled channel to scale your user base in the business domain.
Listing your app as a transactional offer on Microsoft AppSource involves meeting specific requirements and following Microsoft's guidelines for commercial marketplace offers.
Microsoft Partner Network (MPN) ID: You need to have a Microsoft Partner Network (MPN) ID. This involves registering your organization with the Microsoft Partner Network. More information can be found here: https://partner.microsoft.com/en-US
Enroll in the Commercial Marketplace Program: You must enroll in the commercial marketplace program through the Partner Center. This step is crucial for publishing your offer on Microsoft AppSource. More information can be found here: https://learn.microsoft.com/en-us/partner-center/create-account
Streamlined purchase and authentication flow: Your application should implement SSO with Microsoft Entra so that customers purchasing through AppSource can login seamlessly into your app to start the onboarding experience.
Use two Microsoft Entra apps to improve security in production: It is recommended to create and use one multi-tenant Microsoft Entra app for user authentication and a separate single-tenant Microsoft Entra app for subscription management APIs. This enhances security and follows the separation of concerns principle. We’ll cover setting up the single-tenant Entra app for subscription management during the integration part of this article.
Before we dig into the code we need to set up a Microsoft Entra app registration first. This will be our way to authenticate with Microsoft's APIs on behalf of our app when querying subscription data.
Microsoft does a pretty good job describing this process here: https://learn.microsoft.com/en-us/entra/identity-platform/howto-create-service-principal-portal
At its essence you’ll create a single tenant app. Navigate to the Authentication section of the documentation to understand how to generate the client secrets. Keep these secrets close by since we’ll need them for the integration later.
The integration code only consists of three files.
Add your Microsoft Entra application secrets to the code
On top of utils.ts you can add your own secrets for the Microsoft Entra app you created for subscription management. This is the only change to the code that you need to do in order for it to work for this demo.
Adding your own code to start provisioning your service.
With provisioning we mean creating the necessary data in your database so that the new customer can login, onboard and set up their account and start using your service. This is outside the world of the Microsoft AppSource integration. I’ve added a comment in the handleLandingPage() method suggesting what you could add yourself.
Gracefully handle non important redirect to the landing page
As you can see in the code, only when a subscription has the status PendingFulfillmentStart we go ahead and activate it. This is because that’s the subscription state just after purchasing. Future redirects might happen from appSource and we’ve even seen requests to the landing page without a proper token.
Knowing what to do for the different webhooks
In the utils.ts file you can see a switch statement, in the handleWebhookEvent() method, for every action that can be triggered by Microsoft webhooks. Here’s an explanation of each, how they affect your app and what code you could add for each case.
With the code and the Microsoft Entra app secrets in place and running we can go ahead and create a simple Marketplace offer in Microsoft AppSource. Since creating an offer and listing it can be overwhelming work with pricing alternatives, descriptions, marketing material and more we’ll cover the absolute basics of getting an offer out in developer preview so we can test performing a purchase and see the flow in action.
That was the only steps required to hook up the integration. Now we need to dress the offer listing a bit before we can put it to developer preview and test it.
The partner center will guide you what is required to create before you’re able to set the status to preview. Here’s a few tips.
Offer Listing Details:
Pricing and Plans:
Legal Documentation:
Contact Information:
Remember to set the Preview audience. These are the users that will be able to preview it. For more information see this link: https://learn.microsoft.com/en-us/partner-center/marketplace/create-new-saas-offer-preview
When done you should click Preview and Publish. This will start an automated review process that will last for around 30 minutes. After that you’ll find a preview link.
Click the link and you should see your listing and be able to purchase it.
After adding your payment information and completing the purchase in Microsoft AppSource you are redirected to the landing page which will be taking care of the rest.
Successfully listing your Next.js app on Microsoft AppSource is just the beginning. To truly maximize its potential, it’s crucial to follow best practices that can elevate your app's presence and appeal to enterprise customers.
Getting your Next.js app onto Microsoft AppSource is quite the adventure, opening doors to a wider, enterprise audience. But listing your app is just the beginning. The real task lies in constantly refining the offer, staying responsive to user needs, and ensuring it remains a valuable tool for your enterprise audience. Remember, success in AppSource isn't just about visibility; it’s about making your app indispensable.
With this article I hope we’ve shed some light on how the integration works with a practical example so you feel more comfortable taking the jump to a listing on AppSource yourself. Feel free to use the code examples in whatever way you want. Fork it, improve and adapt it to your needs.
May the code be with you!
https://learn.microsoft.com/en-us/partner-center/marketplace/plan-saas-offer
https://learn.microsoft.com/en-us/partner-center/marketplace/azure-ad-transactable-saas-landing-page