Hey @mararn1618 , @remie , @francis - let me try and respond to as much as I can on the questions you’ve raised here, I don’t work in the Commerce team so I wont have all the answers I’m afraid. We are however in the process of building out a public facing Licensing FAQ specific to Marketplace, with the aim being for us to detail in black and white a lot of how licensing in Marketplace works. If you have inputs on what you’d like to see in this please add them over on Licensing FAQ fact finding mission.
Back to the questions, let’s start with those Evaluations, and their validity/life cycles, specifically for Cloud licenses.
So, by default an Evaluation license has a duration of 30 days, in theory though it can last up to 59 days. This can occur because Cloud app licenses are lined up with their Parent instance’s license and must last a duration of at least 30 days. For example; I have a Jira Cloud instance that has a monthly billing date on the 20th of each month, if I then start a trial for an app on the 21st, when it gets to the 20th of the following month I will have only had 29 days of a trial, so it’s rolled over to the next month’s billing date as a trial must be for at least 30 days.
Licenses, including Evaluations, have a dunning process. This works as follows; when a license expires (passes the date when renewal/purchase is required) there is a ~15 day window for the customer to make the payment required. If the payment is not made by the 15th day the app is put in a *‘suspended’ state. After another 15 days, if there’s still been no payment recieved then the app is ‘deactivated’. Deactivated means that the app is set to an unlicensed state, so if license checks are in place the app will no longer function (more on this later).
*I’m not 100% clear on what ‘suspended’ actually pertains to, we’ll add this to the list of questions to dig deeper into for the FAQ.
One caveat to this behaviour is if there’s an open quote present which contains the app, this will keep the license active for as long as the quote is valid. This is generally 30 days, but in certain situations can be manually extended up to 90 days. For example, large enterprise deals where a customer with a lengthy procurement process is working directly with one of our Enterprise Advocates.
In terms of the license states within the Vendor reporting in Marketplace itself:
Active - the license is still under maintenance
Expired - the license’s maintenance has expired and the app is in, or has gone through, the dunning process
Canceled - the license was deactivated manually by the customer, it will remain in this state until the expiration date of the license is passed and then it will change to Expired.
Another thing to note is that currently the uninstallation of an app is not part of the dunning process, this still needs to be done manually by the customer. The licensing system just removes the licensed state of the app, so it is plausible that you will still receive some requests from those instances where your app is still installed. This is where the inbuilt license checks for apps come in to play to ensure functionality is blocked if no license is found. As described in Cloud App Licensing the
lic value is included in each incoming request from the Atlassian product site, this will display
lic=active for active licenses, and
none for those which don’t. The REST endpoint
/rest/atlassian-connect/1/addons/<appKey> was also designed for this purpose , but due to the bug (MC-1001) mentioned in an earlier comment, this is currently returning the license data of the instance rather than the app. This is being actively worked on and you can follow along for updated on the ticket.
I hope this helps, this is a deep topic with some unknowns from my team as well. We’re aiming for the licensing faq I outlined at the beginning to be the source of truth, or at the very least a go-to space for new and mature Marketplace Partners alike.