Cloud license status "expired"

Dear all,

I have just started out on the marketplace and am wondering about the Evaluation Licenses for Cloud.

On one hand when my app is installed, the app manager says that “billing starts automatically after the trial”.

On the other hand I have customers which license status has changed to “expired” after the evaluation period.

Unfortunately I could not find any documentation on this. What does ‘expired’ mean? Will I be paid? Do the customers need to do anything?

Thanks, Markus

2 Likes

Right. So technically, it is possible to get an app in a state where it is still installed in an instance, but without an active license. For instance, if a user disables the app during evaluation. In that case, the evaluation runs its course and it will be set to Expired in het Atlassian Marketplace (MPAC) reports, without the user actually uninstalling the app.

It get’s even worse, because a user can then enable it again but not start a new evaluation. This is why you as a vendor need to add license enforcement in your app, because there are definitely situations in which a customer can still have an active installation in their instance without a valid license.

2 Likes

Thanks Remie, that clarifies a lot :+1:. I just switched to Atlassian from the Shopify ecossytem and the amount of footwork, friction, vendor tools, … is not really what I expected. :grin:

1 Like

Also, when cancelled licenses gets past the expiration date, they are no longer listed as cancelled, but get listed as expired.

5 Likes

Not sure if this is the appropriate location for my question, but it is related to the topic.

We have a number of customers where the marketplace listing is reporting that the license is expired, but the rest api (which is used by the addon to validate the license status) reports it as active.

I think it is related to this bug
https://ecosystem.atlassian.net/browse/MC-1001

Do you see the same behaviour in your environment. The consequence is that the user can use the product without you being paid for it.

This is a recurring question from vendors, so it would be great if it can be added to the licensing documentation @dmorrow / @ibuchanan.

AfAIK there are several reasons, with the most important ones being that atlassian has implemented a grace period to accommodate three resolution of potential billing issues, that there might be an active open quote for consideration and that atlassian sales staff can extend license activation.

I think @danielwester knows even more reasons.

3 Likes

Hi @mararn1618, @remie, @RaimisJ, @francis and all,
Caterina here. I recently joined Ian and Dugald team (here is my introduction: Introduce Yourself! - #60 by ccurti).

I’ve reviewed all your comments in this thread (including the ones on MC-1001) and this is my understanding of what you are looking for.

At a high level, a better explanation of how Evaluation licenses work.

  • this includes an update to the documentation

At a more detailed level:

  • a clarification about the “Expired” status (including when that is used for, if vendors will be paid for the installations in that status, what do customers have to do to purchase the app)
  • confirm the statement by @remie and indicate which steps will be take to address this

It get’s even worse, because a user can then enable it again but not start a new evaluation. This is why you as a vendor need to add license enforcement in your app, because there are definitely situations in which a customer can still have an active installation in their instance without a valid license.

  • a clarification about the existance of a “grace period” and its details

a grace period to accommodate three resolution of potential billing issues, that there might be an active open quote for consideration and that atlassian sales staff can extend license activation

customers where the marketplace listing is reporting that the license is expired, but the rest api (which is used by the addon to validate the license status) reports it as active

Did I miss anything?

I also have a question for you. This is the reference doc for licensing of cloud apps (https://developer.atlassian.com/platform/marketplace/cloud-app-licensing/). Is this the main page/entry point for you as well? If not, can you please comment with the one you refer to?

Let me discuss this topic internally and get back to you on this thread.

Thanks,
Caterina

6 Likes

Yes, the entry point is right for me.

I can basically confirm what you wrote. I am missing:

  • Overview of all license types (Evalution, Paid, …)
  • Overview of all license statuses (Active, Cancelled, Expired, …)
  • Pointers to cases where the Atlassian Platform is very counter-intuitive: E.g. a license is expired, but the customer intance is still accessing the app (e.g. webhooks still fire)

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.

Cheers,

Chris

6 Likes

So I am about to secure my webhook-endpoints with lic which I previously hadn’t and am still left confused. Licenses which are Unlicensed, Inactive Trial, Inactive Subscription will fire with lic=none, which is good.

However Cancelled Subscription still fires with lic=active, but from your explaination I understand that the customer has actively deactivated the license, thus is not willing to pay. Why should I receive lic=active in that case?

Am I missing something or is the mapping from Cancelled => lic=active unfortunate?

Hi Chris,

Thanks for the details and clarifying the lifecycle of the licenses.
Is there somewhere an overview on how license statuses are reported on the marketplace reports and in the REST api. The fact that the marketplace reports it as expired while the REST api is reporting it as active indicates there is some mapping applied.

Hey @mararn1618 - even though a license is Canceled the user will still get to use the app until their original license period is up. I.e. if you have an evaluation of 30 days and then cancel after 15 days, the app will still be usable for the remaining 15 days when in the canceled state. So in theory the license is actually still active.

Hey @francis - I wasn’t able to track anything down that implicitly outlines this, we’ll add it as a candidate for the Licensing FAQ fact finding mission.