How to distribute Solutions through 3rd party Marketplaces

Document created by Andreas_Meier Employee on Dec 28, 2017Last modified by Andreas_Meier Employee on Jun 20, 2018
Version 4Show Document
  • View in full screen mode

Concept

With our new Solution Management API solution resellers are able to publish solutions on any public market place,

they can use their own branding in all aspects of Business Solutions built using skybow Solution Studio.

 

Registering Solution service

Solution Studio Online

After successful packaging your Solution a market service can be registered.
Clicking the Publish to store button on Publish tab opens the Register market service wizard.

This wizard guides you through defining a service for publishing this Solution to a public marketplace or other systems outside skybow Solution Studio.

 

 

In the Select store drop-down two options are available: ALSO or custom store. 

 

 

After accepting the terms and conditions, the following Service Details need to be specified:

  • Service Title: The title as it will appear in solution studio.
  • Description: A description of the service.
  • Solution Package: Package of the solution that will be provided through the market place. The latest package version is selected by default.
  • Authentication credentials: Credentials for validating requests from the marketplace provider.

 

 

In Payment Details section the License and Owner accounts should be specified.

They both can be the same or two different accounts. The only requirement is that a payment method is available on the selected Invoice account.

 

 

After the service has been registered in Solution Studio, the marketplace or external system needs to be configured correctly to call the Solution Management API.

 

 

The request URLs for creating, deleting and modifying the deployment are displayed in the General Settings of a registered service.

These URLs need to be provided as requests to Solution Management API initiated by the marketplace. 

 

 

ALSO and any other solution service provider

The information that has to be provided should be as following (example shows ALSO case) the names can be with blank spaces, ALSO is automatically removing the blank spaces for internal names needed for the JSON object described in the end of this chapter.

 

  • Site URL: URL to SharePoint site where solution will be published. Note: This field is set to mandatory and read only on Modify.
  • Site Login Name: Login name of the SharePoint user that has at least site collection administrator rights. Note: This field is set to mandatory.
  • Site Login Password: Password of the SharePoint user. Note: This field is set to mandatory.
  • Email: Email that will be used to notify “contact person” about provisioning flow. Note: This field is set to mandatory, could be hidden or public up to reseller.
  • Number of Users: Number of users that will be using published solution. Note: This field is set to mandatory.

 

HTTP requests should be configured on ALSO store for each method as well: create, delete, modify:

 

 

Request body should be exactly as following for all the 3 (Create, Delete, Modify) HTTP Posts configuration:

{
"FirstName":"**PARENT.Firstname**",
"LastName":"**PARENT.Lastname**",
"UserId":"**USERACCOUNTID**",
"ServiceName":"**PRODUCTNAME**",
"CompanyID":"**COMPANYID**",
"CompanyName" :"**COMPANYNAME**",
"SiteUrl" : "**SiteUrl**",
"SiteLoginName" : "**SiteLoginName**",
"SiteLoginPassword" : "**SiteLoginPassword**",
"Email" : "**Email**",
"Callback" :"**CALLBACKURL**",
"NumberOfUsers": "**Numberofusers**",
"ResellerId":"**RESELLERID**",
"PostalCode":"**PARENT.Zip**",
"Address":"**PARENT.Address**",
"Country":"**PARENT.Country**",
"City":"**PARENT.City**",
"CustomerEmail":"**PARENT.Email**"
}

 

First 6 fields down to CompanyName are describing end user info this infos are handled from ALSO we do not need to have this fields in our field configuration.
SiteUrl, SiteLoginName, SiteLoginPassword, Email, Number of Users are previously described fields that mapped in request. These fields are mandatory.
Callback field is the URL which will be called by Solution Management service when provision process is completed to notify the store.

The last 6 fields are additional information about the reseller that is configured in ALSO.

 

Example of end user (“buyer”) form with configured mandatory fields:

 

 

Calling Provisioning API directly from code

The API can be called directly by posting to the URL provided in Solution Studio on the configured Solution service (for example from JavaScript)

 

function callSkybowPublishAPI() {
  var data = {
    "FirstName": "Peter",
    "LastName": "Muster",
    "UserId": "1111111133333",
    "ServiceName": "YourSolution",
    "CompanyID": "11213231231231",
    "CompanyName": "Test Inc.",
    "SiteUrl": "https://<customerTenant>.sharepoint.com/sites/<customerSite>",
    "SiteLoginName": "janesmith@<customerTenant>.onmicrosoft.com",
    "SiteLoginPassword": "<site password>",
    "Email": "<customer Email address>",
    "Callback": "",
    "NumberOfUsers": "1"
  };
  jQuery.support.cors = true;
  jQuery.ajax({
    method: "POST",
    url: serviceUrl,
    crossOrigin: true,
    dataType: "json",
    beforeSend: function(xhr) {
      xhr.setRequestHeader(
        "Authorization",
        "Basic " + btoa(serviceUser + ":" + servicePassword)
      );
    },
    data: data
  });
}

To try it out see the Pen skybow Solutions Provisioning API by skybow (@skybow) on CodePen.

 

Notes:

- Make sure to pass a valid email address in the Email parameter. Confirmations and errors are sent to the given email address.

- The serviceUrl variable for the ajax call should be the URL provided on the service by Solution Studio (i.e. "https://skybowsolutionmanager.azurewebsites.net/api/cb40d74f-1105-e811-80c2-00155d0ae8ad/provision" ).

- Set the variables serviceUser and servicePassword to the appropriate values entered on creating the service.

- In data a JSON with the parameters should be set according to the deployment:

  • FirstName, LastName, UserId, CompanyID, CompanyName refer to the customer.
  • The SiteUrl is the URL of the SharePoint site the solution needs to be deployed to.
  • The SiteLoginName and SiteLoginPassword refer to the SharePoint user with admin rights to the site.
  • Email will be set to the customers email address so that he will receive notifications on the status of the deployment.
  • Callback can be any URL to a site where a POST request will be done when the solution has been deployed. For successful deployments the body of the post will be "{status: "Completed", errorDetails: null}. When deployments fail the body will be {status: "Failed", errorDetails: "<some error details>"}. It is optional to provide the Callback parameter.
  • NumberOfUsers is the number of users that need a license to access the solution.

 

Solution Manager App

When navigating first time to the site with deployed solution, the end user is prompted to trust the solution app.

As well link for trusting the app is sent in the email specified on customer’s side during publishing solution.

App generated with Solution Manager contains branding and information of solution builder (reseller).

It should be trusted once at the end of provisioning process so that the solution is working properly (mainly background accelerators).

 

Licensing

License invoice owner that is defined during service registration is charged by Solution Studio for each new subscription made from also store/public market.

 

 

The license for specific number of users can be bought from the License tab in Store Deployments.
When license is edited and number of users increased, the change is applied immediately.

If number of users is reduced, the change is applied at the end of the subscription period.

 

Solution update process

When the deployed package needs to be updated, update it in the Solution Studio Store Deployments tab.

 

 

Then the end-user is able to receive the latest changes by clicking the Update button on the app home page. An email with the update status is sent when update process is completed.

 

2 people found this helpful

Attachments

    Outcomes