Reseller Storefront


Over the past several weeks I have received numerous questions from various partners regarding the reseller storefront. This project is a web application that acts as a storefront for Microsoft partners and enables them to sell Microsoft offers to their customers. It can be deployed directory from Partner Center or using the Azure Resource Manager (ARM) templates available with the source code. With this post I will be covering how to deploy the reseller storefront using the available ARM templates.

Prerequisites

Before attempting to deploy the storefront it is recommended that you gather all of the prerequisite values. The following values will be required in order to deploy the project

Value Description
websiteName Name assigned to the website in Azure (e.g. cspstorefront.azurewebsites.net)
webPortalClientId Identifier for the Azure AD application utilized for authentication
webPortalSecret Key for the web portal Azure AD application
webPortalAadTenantId Tenant identifier where the web portal Azure AD application is provisioned
partnerCenterApplicationId Identifier for the Azure AD application used to access the Partner Center API
partnerCenterApplicationSecret Key for the Azure AD application used to access the Partner Center API
partnerCenterAadTenantId Tenant identifier where the Partner Center Azure AD application is provisioned


The following sections will walk you through how to obtain the appropriate values for the above parameters

Website Name

The websiteName parameter will be part of the URL assigned to the instance of App Services created in Azure as part of the deployment. If you specify cspstorefront for this parameter then you will access the storefront using https://cspstorefront.azurewebsites.net. This value must be unique, if you specify a value that is already taken then the deployment will fail. In order to correct the failure specify a different value for the parameter and try again.

Web Portal Azure AD Application

Perform the following to create the required Azure AD application

  1. Browse to the Azure Management portal, https://portal.azure.com, and login using credentials that have global admin privileges
  2. Open the Azure AD management experience and then click on App registrations –> Add
    AAD01
  3. Complete the new application wizard. The value for the Sign-on URL should match the value you would like to use for the websiteName parameter
    AAD02
  4. Document the Application ID value it will be the webportalApplicationId
    AAD03
  5. Click Required permissions, then click Windows Azure Active Directory (Microsoft.Azure.Active.Directory), and add the Access the directory as the signed-in user permission
    AAD05
  6. Click on Keys, specify a description, select an appropriate expiration and then click Save
    AAD04
  7. Document the key value, that is displayed after you click Save. This value will be the webPortalSecret

Partner Center Azure AD Application

Perform the following to create the Azure AD configured to access the Partner Center API

  1. Browse to Partner Center, https://partnercenter.microsoft.com, and login using credentials that have admin agent and global admin privileges
  2. Click on the following Dashboard –> Account Settings –> App Management
  3. Click Add new web app to create the applicationPC01
  4. Document the following values
    Field Values
    App ID partnerCenterApplicationId
    Account ID webPortalAadTenatId and partnerCenterAadTenantId
    Key partnerCenterApplicationSecret

    PC02

Deploying using Visual Studio

A deployment project has been included with the source code for the reseller storefront. Before deploying the project you will need an Azure storage account. If you do not already have one you will need to provision a new one before proceeding. To deploy the storefront open the CustomerPortal solution, using Visual Studio, and perform the following

  1. Right click on the CustomerPortal solution in the Solution Explorer and then click Restore NuGet Packages
  2. Right click on the CustomerPortal.Deployment project then click on Deploy –> New…
  3. Complete the Deploy to Resource Group wizard and then click Ok
    DeploytoResourceGroup
  4. Modify the parameters accordingly in the Edit Parameters wizard and then click Save
    EditParameters
  5. Review the data in the Output window to confirm the storefront was successfully deployed. Please note this could take a couple of minutes.

Configuring the Storefront

Now the storefront has been deployed it must be configured. Perform the following in order to configure everything

  1. Browse to the website (e.g. https://websiteName.azurewebsites.net) and login using credentials that belong to the CSP partner that have global admin privileges
  2. Complete each of the configuration steps for the storefront to be functional. The storefront will display a message stating it is under construction until all three configuration tasks have been completedPortal01

Once the storefront configuration has been completed you will be ready to start transacting!

Portal02

Comments (6)

  1. Pawel says:

    Hi Isaiah,

    Can you advise who is supporting the application on the MS end? I spend couple of days trying to setup the app either directly from Partner Center or through MS Visual Studio. The app is provisioned successfully, I can log in, configure company details, however it generates an error when I am trying to pull an offer list from Microsoft. I get the following error:

    2017-02-05T23:27:50 PID[12856] Error ErrorHandler: Intercepted Exception: Partner Exception:
    Error Category: NotFound
    Service Error Payload:
    Error code: 0
    Error message: Locale en-GB is not supported
    Error data:

    Context: Request Id: 529a7c3b-03a6-4195-826a-7db4ef37bcfa, Correlation Id: b76215ba-a60b-4317-8a6d-add2f34f7422, Locale: en-GB
    Base Description: Microsoft.Store.PartnerCenter.Exceptions.PartnerException: Locale en-GB is not supported
    at Microsoft.Store.PartnerCenter.Network.PartnerServiceProxy`2.d__60.MoveNext()
    — End of stack trace from previous location where exception was thrown —
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
    (…)

    My company is UK based thus the app uses en-GB regional settings. However I have no idea why it gets this error.

    I opened a case with Partner Center, however they are unable to help me.

    Appreciate your advice.

    Thanks!

    1. Hi Pawel,

      You can open a support ticket through Partner Center to get help troubleshooting this issue. Based on the error message I believe that you are trying to provision a customer in a region where you are not authorized. With the Cloud Solution Provider program you will have separate reseller tenants for each region that you are authorized to sell into. If you need help with getting authorized in an additional region I would recommend that you reach out to your account manager.

      1. Pawel says:

        Hi Isaiah,

        Thank you for your reply. I opened a case with MS in the Partner Center portal on Jan 23rd. No any resolution provided yet. I am getting the issue during setting up the Reseller Storefront app. It doesn’t allow me to add any service to provide in the store. I have got couple of clients who are in the same region, however outside of the UK. This may be the issue. Thank you for advising. I will follow this up with my account manager.

        1. Tameem says:

          Pawel. Can you please post an issue for this on the GitHub site. I can follow it up. https://github.com/PartnerCenterSamples/Reseller-Web-Application/issues

  2. Can this be used with the Sandbox Environment

    1. Hi Monterey,

      Yes, you can utilize the Reseller Storefront with an integration sandbox. Please note that the integration sandbox will only allow you to have twenty five customers at once. I would recommend that you develop a process to delete customers from the integration sandbox as well to avoid any issues. If you need an example of how to do this I would recommend that you check out https://github.com/Microsoft/Partner-Center-Explorer.

      If you need additional details regarding the limitations of the integration sandbox you can find those details at https://msdn.microsoft.com/en-us/library/partnercenter/dn974940.aspx

Skip to main content