cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Helpful
Responsive Resident
Responsive Resident

Adding licensing information to an existing solution

Hi All, I'm thrilled that Microsoft is adding something to support licensing ISV apps distributed through AppSource. That being said, in its current state it's pretty confusing and the documentation does not provide much clarity on the what or how of this feature.

 

As an ISV, here's my understanding of this feature in its current form:

  • It DOES:
    • Restrict AppSource deployment of model-driven apps to only those tenants that are registered by the ISV in Partner Center
    • Allow customers to assign licenses to individual users from within their own M365 Admin Center
    • Once deployed, restrict access of ISV model-driven apps to users that are assigned a license
  • It DOES NOT:
    • Allow ISVs to add licensing to existing AppSource offers
    • Allow ISVs to add licensing to packages built with current Power Apps Build Tools (v1.0.23)
    • Allow import of unmanaged solutions that include service plans
    • Allow customers to purchase licenses at the time of clicking "Get it Now"

We have an existing offer in AppSource. It has a model-driven app and no code components. We have full ALM automation built out in Azure DevOps and everything runs pretty smoothly. We're small so making changes in an unmanaged environment and then committing to repo works for us. All deployments are automated. The only time we mess with Visual Studio is to package for AppSource. We never open command line tools.

 

Here's a little recap of my experience attempting to implement and evaluate this:

  • Copy an existing AppSource offer - this is mostly cut/paste exercise, however, it will mean the back/forth of approvals with AppSource... content, tech, and co-sell material. Also updating any marketing links to the new offer if published.
    • Add a plan to the new offer. Note the "Plan ID", you'll need it later.
  • Go to the solution in my unmanaged environment and add a "Service Plan" component - just kidding we read the steps before that: Add licensing information to your solution

Here's where things slowed down. The first step says "Clone existing solution". In our world, that means go into the unmanaged Power Apps maker environment, select the solution and click "Clone a patch" or "Clone solution". This is not what they mean and it's confusing.

  • The documentation is referring to command line tools that we don't have (Power Apps CLI) - get those.
  • Using the clone command of the Power Apps CLI does not appear to make much sense for us since we already store our unpacked, unmanaged solution files in ADO. So I download those an unzip them locally.
  • Create licensing files - two CSV files. Do not get confused by file names in the screenshots - they actually need to be ".csv" files.
  • Add the licensing information to the solution using the specified Power Apps CLI command.
    • Take a look at what that command did. Comparing the modified solution files with an old set for reference, we can see that it:
      • added a folder called "ServicePlans" (right between Roles and WebResources).
      • added two Xml files (documented below) to the new folder, populated with the values from your .CSV files.
      • added two empty nodes "<serviceplans /><serviceplanappmodulesset />" to the Customizations.xml file in the "Other" folder.
    • Had I known they needed a folder with a specific name and two files with specific names I could have done that without the extra steps.
  • Build the solution. Here's where we get stuck. The documentation for this is particularly confusing: Create a managed solution for your app
    • We have DevOps automation to build solutions so we branch our unmanaged solution, apply the changes (noted above) in the repo and use our existing automation to build a managed package.
    • Open the resulting ZIP file and the empty nodes are now represented in the Customizations.xml file, however, the two files are nowhere to be found in either the Managed or Unmanaged solution package.
      • Is there some other tool we're supposed to use to ensure those files are picked up?
    • With input from @rajyraman, we discovered that the Package Solution task of the current version of the Power Apps Build Tools is not using the latest version of SolutionPackager and, therefore, does not generate the service plan content in Customzations.xml.
    • Use SolutionPackager on command line as workaround to package both Unmanaged and Managed solutions. Confirmed the service plan XML is incorporated into Customizations.xml.
  • Tested import of unmanaged solution that has service plan information to a clean environment. This fails with the following message: "Solution "ISV Solution" failed to import: ServicePlanAppModules data can only be changed by managed solution import".
  • Package for new AppSource offer and evaluate - Update below. WE'RE PAUSING HERE FOR NOW. Hoping we see updates that make it more manageable with our existing ALM setup.

 

Looking forward to this being more supportable. As of right now, it doesn't seem to be compatible with the ALM tools in Azure DevOps that we rely on.

 

ServicePlans.xml content:

 

 

 

<?xml version="1.0" encoding="utf-8"?>
<serviceplans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <serviceplan name="[SERVICE_PLAN_ID]">
    <accessmode>4</accessmode>
    <iscustomizable>0</iscustomizable>
    <displayname>[SERVICE_PLAN_NAME]</displayname>
    <moreinfourl>[YOUR_ISV_PLAN_INFO_LINK]</moreinfourl>
  </serviceplan>
</serviceplans>

 

 

 

ServicePlanAppModules.xml content:

 

 

 

<?xml version="1.0" encoding="utf-8"?>
<serviceplanappmodulesset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <serviceplanappmodules>
    <iscustomizable>0</iscustomizable>
    <appmoduleid>
      <uniquename>[MODEL_APP_COMPONENT_NAME]</uniquename>
    </appmoduleid>
    <serviceplanid>
      <name>[SERVICE_PLAN_ID]</name>
    </serviceplanid>
  </serviceplanappmodules>
</serviceplanappmodulesset>

 

 

 

 

Documentation references:

 

13 REPLIES 13

Hi @JeffCarma @Helpful @kartikka ,

I would like to thank @JeffCarma  for the PowerShell snippet, which I implemented in a DevOps build pipeline, and now I do not have to manually add the license metadata to the solution.

If anyone is interested of the steps, I will be happy to explain it.

 

@kartikka , we would love to see a Microsoft Power Platform Build Tools task in which we can add the license metadata to a managed solution, which will automate the whole process.

 

Cheers,

Mohammad

AddLicenseDevOps.jpg 

Thanks @malkhawaja, I'm glad you found it helpful. In my earlier post, I said I was going to add a double check to ensure the new xml nodes made it. Here is that if you'd like to use it.

 

#Check to make sure the node was actually added
Write-Host "checking for new nodes existence"
[xml] $mod = Get-Content '.\tempforpacking\Other\Customizations.xml'
$displayName = $mod.SelectSingleNode("ImportExportXml/serviceplans/serviceplan/displayname").InnerText

if ($displayName -eq $null){
    throw "Display name not found in serviceplans xml node!"
    }
malkhawaja
Advocate III
Advocate III

Hi,

I am moving along the experience of the ISV License management, and until now I only added one plan (let's call it TestApp Basic) for one app, and now I will start adding multiple plans, which means according to documentation, I should create multiple apps (one app for each plan), but in my case (which is the case of many others I think) I am adding some extra features (e.g.: extra tables and BPFs) so if I should create an extra app (lets call it TestApp Pro), and supposing I have a customer who wants to go with the "Pro" version, they will end up with 2 model driven apps in their environment (1 basic, and 1 Pro), the basic one will be redundant now,  right? what do you think we should do to the redundant app?

The way we're thinking about it is we'd have the basic app and the pro app and map licenses 1:1 to the apps, so a Pro user would have access to the Pro app but not the basic app, and the Basic user would see the basic app but not the pro app.  System admins will see both, but users would only see one. 

 

Further down the line, entity-level license permissions will be available, in which case having a single app with multiple levels of license will make more sense.  

Helpful resources

Announcements

Community will be READ ONLY July 16th, 5p PDT -July 22nd

Dear Community Members,   We'd like to let you know of an upcoming change to the community platform: starting July 16th, the platform will transition to a READ ONLY mode until July 22nd.   During this period, members will not be able to Kudo, Comment, or Reply to any posts.   On July 22nd, please be on the lookout for a message sent to the email address registered on your community profile. This email is crucial as it will contain your unique code and link to register for the new platform encompassing all of the communities.   What to Expect in the New Community: A more unified experience where all products, including Power Apps, Power Automate, Copilot Studio, and Power Pages, will be accessible from one community.Community Blogs that you can syndicate and link to for automatic updates. We appreciate your understanding and cooperation during this transition. Stay tuned for the exciting new features and a seamless community experience ahead!

Summer of Solutions | Week 4 Results | Winners will be posted on July 24th

We are excited to announce the Summer of Solutions Challenge!   This challenge is kicking off on Monday, June 17th and will run for (4) weeks.  The challenge is open to all Power Platform (Power Apps, Power Automate, Copilot Studio & Power Pages) community members. We invite you to participate in a quest to provide solutions in the Forums to as many questions as you can. Answers can be provided in all the communities.    Entry Period: This Challenge will consist of four weekly Entry Periods as follows (each an “Entry Period”)   - 12:00 a.m. PT on June 17, 2024 – 11:59 p.m. PT on June 23, 2024 - 12:00 a.m. PT on June 24, 2024 – 11:59 p.m. PT on June 30, 2024 - 12:00 a.m. PT on July 1, 2024 – 11:59 p.m. PT on July 7, 2024 - 12:00 a.m. PT on July 8, 2024 – 11:59 p.m. PT on July 14, 2024   Entries will be eligible for the Entry Period in which they are received and will not carryover to subsequent weekly entry periods.  You must enter into each weekly Entry Period separately.   How to Enter: We invite you to participate in a quest to provide "Accepted Solutions" to as many questions as you can. Answers can be provided in all the communities. Users must provide a solution which can be an “Accepted Solution” in the Forums in all of the communities and there are no limits to the number of “Accepted Solutions” that a member can provide for entries in this challenge, but each entry must be substantially unique and different.    Winner Selection and Prizes: At the end of each week, we will list the top ten (10) Community users which will consist of: 5 Community Members & 5 Super Users and they will advance to the final drawing. We will post each week in the News & Announcements the top 10 Solution providers.  At the end of the challenge, we will add all of the top 10 weekly names and enter them into a random drawing.  Then we will randomly select ten (10) winners (5 Community Members & 5 Super Users) from among all eligible entrants received across all weekly Entry Periods to receive the prize listed below. If a winner declines, we will draw again at random for the next winner.  A user will only be able to win once overall. If they are drawn multiple times, another user will be drawn at random.  Individuals will be contacted before the announcement with the opportunity to claim or deny the prize.  Once all of the winners have been notified, we will post in the News & Announcements of each community with the list of winners.   Each winner will receive one (1) Pass to the Power Platform Conference in Las Vegas, Sep. 18-20, 2024 ($1800 value). NOTE: Prize is for conference attendance only and any other costs such as airfare, lodging, transportation, and food are the sole responsibility of the winner. Tickets are not transferable to any other party or to next year’s event.   ** PLEASE SEE THE ATTACHED RULES for this CHALLENGE**   Week 1 Results: Congratulations to the Week 1 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersNumber of SolutionsSuper UsersNumber of Solutions @anandm08  23 @WarrenBelz  31 @DBO_DV  10 @Amik  19 AmínAA 6 @mmbr1606  12 @rzuber  4 @happyume  7 @Giraldoj  3@ANB 6 (tie)   @SpongYe  6 (tie)     Week 2 Results: Congratulations to the Week 2 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersSolutionsSuper UsersSolutions @anandm08  10@WarrenBelz 25 @DBO_DV  6@mmbr1606 14 @AmínAA 4 @Amik  12 @royg  3 @ANB  10 @AllanDeCastro  2 @SunilPashikanti  5 @Michaelfp  2 @FLMike  5 @eduardo_izzo  2   Meekou 2   @rzuber  2   @Velegandla  2     @PowerPlatform-P  2   @Micaiah  2     Week 3 Results: Congratulations to the Week 3 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Week 3:Community MembersSolutionsSuper UsersSolutionsPower Apps anandm0861WarrenBelz86DBO_DV25Amik66Michaelfp13mmbr160647Giraldoj13FLMike31AmínAA13SpongYe27     Week 4 Results: Congratulations to the Week 4 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Week 4:Community MembersSolutionsSuper UsersSolutionsPower Apps DBO-DV21WarranBelz26Giraldoj7mmbr160618Muzammmil_0695067Amik14samfawzi_acml6FLMike12tzuber6ANB8   SunilPashikanti8

Check Out | 2024 Release Wave 2 Plans for Microsoft Dynamics 365 and Microsoft Power Platform

On July 16, 2024, we published the 2024 release wave 2 plans for Microsoft Dynamics 365 and Microsoft Power Platform. These plans are a compilation of the new capabilities planned to be released between October 2024 to March 2025. This release introduces a wealth of new features designed to enhance customer understanding and improve overall user experience, showcasing our dedication to driving digital transformation for our customers and partners.    The upcoming wave is centered around utilizing advanced AI and Microsoft Copilot technologies to enhance user productivity and streamline operations across diverse business applications. These enhancements include intelligent automation, AI-powered insights, and immersive user experiences that are designed to break down barriers between data, insights, and individuals. Watch a summary of the release highlights.    Discover the latest features that empower organizations to operate more efficiently and adaptively. From AI-driven sales insights and customer service enhancements to predictive analytics in supply chain management and autonomous financial processes, the new capabilities enable businesses to proactively address challenges and capitalize on opportunities.    

Updates to Transitions in the Power Platform Communities

We're embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools our community advocates for.  We started this journey with transitioning Copilot Studio forums and blogs in June. The move marks the beginning of a new chapter, and we're eager for you to be a part of it. The rest of the Power Platform product sites will be moving over this summer.   Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind. Let's connect, learn, and grow together.   Here's to new beginnings and endless possibilities!   If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport.   To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages

Users online (925)