Managing user licenses and cost for Azure DevOps.


User licenses contribute to a major share of the cost for Azure DevOps services. In this post we will focus mainly on user licenses and some tips for managing them efficiently. Managing the cost associated with other paid services for Azure DevOps will be covered in a separate post.


If you are part of the Azure DevOps admin team of your organization, you should be having an idea about the monthly / annual spend for Azure DevOps. The user who sets up billing for Azure DevOps services needs to have permissions at the subscription level, as explained in this article -  Add a user who can set up billing for Azure DevOps. Often what happens is, setting up billing for Azure DevOps is done by someone who has more privileges in Azure - like a subscription admin. However once the subscription is linked, an ADO collection admin can then add people and assign them licenses.  It is also possible that the ADO admin doesn't get a copy of the bill, thereby blocking the visibility to the expenses.

Since adding people and assigning them licenses is fairly simple, it is easy for an ADO admin to keep doing that, without really thinking about it from the billing perspective. This can be dangerous, as over a period of time this can really increase the amount being spent. A copy of the bill is not really required, if we keep a tab on the paid services and do some regular checks.

Let's check some basics here:

Tip 1 : Understand the license types for Azure DevOps.


You should be knowing:


  1. The different types of licenses.
    Manage paid access for users - this Microsoft article sums it up quite nicely.
    The below can be used as a quick reference for the license types.

  1. The differences between them and the actions that can be performed with each.
    This is very important so that you can assign the right licenses to the right people.

    About access levels - this is the go to guide to find out the features available with each of the different access levels / license types. It also talks about the differences in features for the different types of Visual Studio subscriptions. Below is a short summary:

  1. Cost associated with each type.The cost associated with the Visual Studio subscribers are handled via their individual subscriptions. Stakeholders are free. So in effect, the two license types that has a cost associated with it, and have to be assigned directly by an Azure DevOps admin are :

  1. Basic - priced as :First 5 users free, then $6 per user per month

  1. Basic + Test Plans - priced as :$52 per user per month



Optimizing license usage and cost saving considerations:


User assignment based billing and Daily billing which is now available in Azure DevOps give more control over the way licenses are managed. This means that you will be paying only for the licenses you are using, and only for the exact duration, rather than on a monthly basis.

Tip 2 : Assigning user licenses.


Once you have a clear understanding of the license types, their features and the associated cost, the next important thing is to make sure that you are assigning licenses appropriately - so that their usage is optimized. You can also choose to use group rules, which helps automating the process of assigning and revoking user licenses. One catch here is that you will have to remove direct assignments for users as mentioned in the article.

Tip 3 :  Automate removal of user licenses.


While group rules are a great way to automate license management, you should also be having an automated mechanism, to free up the licenses consumed by inactive users and users with direct assignments. The logic to be used is fairly simple, as explained in this FAQ item:  How can I stop paying for users who aren't actively using Azure DevOps?

  1. Export the user list and sort by last access date to get the inactive users.
  2. For users who have never signed in, look for the date on which they were added.
  3. Either remove the users or assign them Stakeholder license.

If you have not done this process of evaluating inactive user licenses ever, you might be quite surprised by the number and the associated cost!

Doing these things manually on a regular basis can be tedious. There are different options available to automate this and make sure that you are not paying extra by wasting licenses. We will discuss about the options in the next post!

Comments

Popular posts from this blog

Azure DevOps - getting project stats for all projects

Export the members of a project level group from all the projects in an Azure DevOps